Struts2学习笔记

来源:互联网 发布:cc域名需要实名认证吗 编辑:程序博客网 时间:2024/06/03 19:22

本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/blog/8/8-149.html

1、 Struts2框架介绍
Struts2框架是MVC流程框架,适合分层开发。框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计。
2、 Struts2框架的流程原理
 
1)请求先到达Filter中央控制器
2)然后为Action创建代理类
3)将各个服务存放在拦截器中,执行完拦截器后再去执行action类行action类,action类调用service,再调用dao
4)得到结果字符串,创建result对象
5)转向相应的视图。
 程序流程图如下:
 
3、 使用步骤:
(1) 导入基础jar包;
(2) 建立struts.xml配置文件:
   A. 定义Action包:
    <package name="example" namespace="/example" extends="struts-default">
    Name:包名;
    Namespace:包相对webapp根目录的路径;
    Extends:继承的包名;
   B. 配置Action:
      <action name="login" class="com.silence.struts2.adtion.LoginAction">
         <result >/WEB-INF/jsp/HelloWorld.jsp</result>
      </action>
      Name:action名称;
      Class:Action的类路径;
      Result:和JSF的根据返回值确定跳转页面,name属性和返回值对应;
   C. 全局共享配置:
      <global-results>和<global-exception-mappings>
   D.<package/>外<include file="example.xml"/>,包含子配置文件;
   E.<constant />配置Struts2常量配置参数,决定了Struts2的一些运行时环境;
 (3)web.xml配置Struts2过滤器:
    <filter> 
       <filter-name>struts2</filter-name> 
       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
   </filter> 
   <filter-mapping> 
       <filter-name>struts2</filter-name> 
       <url-pattern>/*</url-pattern> 
   </filter-mapping> 
   访问路径:/ProjectName/namespace/ActionName.action
(3) 继承ActionSupport即可写Action;
4、 执行流程:
(1) http://localost:8080/ProjectName/namespace/ActionName.action从浏览器访问,先根据web.xml进入Struts2的过滤器;
(2) 查找配置文件,根据namespace和action名称找到对应Action的类路径,创建一个该Action的代理对象,并把请求参数通过反射注入到Action中的对应属性上;
(3) 将HTTP相关的对象封装到ActionMapper中,若需要在Action中操作到HTTP对象,可以从ActionMapper或ActionContext获取;
(4) 跳转到Action中后,调用业务处理对象,进行相应的业务操作,validator()用于表单校验,然后根据返回字符串通过<result/>映射出Result对象,跳转到相应的视图。
注:action是多例的,也是线程安全的。
 
5、 注意事项:
(1) 自定义过滤器需要添加在Struts2核心过滤器前面;
(2) 
6、 struts.properties:类路径下,Struts2的全局配置文件,可以用struts.xml的<constant />替换。
7、 Action搜索方式:在一个包没找到会跳到上一个包,直到找到默认根位置也找不到才报错(少用)。
8、 <default-action-ref name="" />:默认Action,找不到的就找他。
9、 设置Struts2后缀:
<constant name="struts.action.extension" value="action "></constant>
10、 表单参数提交方式:(三种方式)
(1) 属性驱动模式:Action中设置表单提交的属性参数,一一对应,提供set方法,Struts2自动反射注入;
(2) 模型驱动模式:Action中将所有属性参数封装成一个表单实体(必须实现实例化一个空对象),Action实现ModelDriven接口,重写getModel()方法,Struts2将会把表单参数通过反射注入到表单实体的对应属性上;(不推荐)
(3) 域驱动模式:Action中将所有属性参数封装成一个表单实体(需要set和get),在jsp页面的表单参数名用user.usercode这种形式的,将会自动注入;
(4) List类型表单:<input  type="text" name="list[0].username">这样填入List集合
11、 表单验证:重写Validator()方法。
12、 <result />处理结果类型:
内置类型:SUCCESS(默认值),NONE,ERROR,LOGIN,INPUT(请求页面)
如何跳转根据开发需求适当使用。
Type属性:指定转发到视图的方式,默认的dispatcher支持JSP技术,freemarker支持FreeMarker模板引擎,stream文件流下载等,具体查看文档。
13、 其他功能:国际化,标签,文件上传下载,表单号等高级特性

本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/blog/8/8-149.html

0 0
原创粉丝点击