Struts2开发指南

来源:互联网 发布:营养配餐软件 编辑:程序博客网 时间:2024/06/01 08:41

关于struts2

struts2不是struts1的升级,而是继承的webwork的血统,它吸收了struts1和webwork的优势。

关于struts1与struts2的具体详细区别:
http://blog.csdn.net/john2522/article/details/7436307/

什么是struts2

Struts2是一个按照MVC模式设计的web层框架,其实Struts2就是一个filter,我们可以在web.xml文件中按照符合的要求将请求交给这个filter处理,这个filter再参照struts.xml配置文件将各个请求分别分配给不同的action去处理。

struts2工作原理

这里写图片描述
Struts2工作原理:1.当一个HttpServletRequest请求来了,先经过ActionContextCleanUp过滤器,清除Action环境,再经过其他的过滤器,例如说SiteMesh和用户自定义过滤器等等, 最后到达Struts2的核心过滤器StrutsPrepareAndExecuteFilter
2.此时,StrutsPrepareAndExecuteFilter会去找ActionMapping看此Action路径是否存在,如果存在,则会参照Struts.xml文件产生Action的代理,并且执行Action
3.Struts2很多功能是靠拦截器完成的,所以这个Action代理真正调用Action的处理请求的方法的时候会经过拦截器1,2,3,才真正调用Action的方法,Action方法结束后会返回一个视图,视图也会去参照ActionMapping,还会参照Template(JSP,FreeMarker)
4.此时,拦截器会再次拦截(说明Struts2的拦截器是进入Action和返回结果的时候都会拦截的,这比Filter好!),最后返回HttpServletResponse

struts2 开发步骤

  1. 新建web项目,添加struts2类库
    这里写图片描述
  2. 配置web.xml文件
     <display-name>Struts Blank</display-name>      <filter>          <!-- 配置Struts2核心Filter的名字 -->          <filter-name>struts2</filter-name>          <!-- 配置Struts2核心Filter的实现类 -->          <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>            <init-param>                <!-- 配置Struts2框架默认加载的Action包结构,可以没有。 -->                <param-name>actionPackages</param-name>                <param-value>org.apache.struts2.showcase.person</param-value>            </init-param>            <!-- 配置Struts2框架的配置提供者类 -->            <init-param>                <param-name>configProviders</param-name>                <param-value>lee.MyConfigurationProvider</param-value>            </init-param>      </filter>      <!-- 配置Filter拦截的URL -->      <filter-mapping>          <!-- 配置Struts2的核心FilterDispatcher拦截所有用户请求 -->          <filter-name>struts2</filter-name>          <url-pattern>/*</url-pattern>      </filter-mapping>      <welcome-file-list>          <welcome-file>index.html</welcome-file>      </welcome-file-list>  </web-app>  

3.编写jsp文件

这里写图片描述

http://jimingsong.iteye.com/blog/1582939 [struts2常用标签]

  1. 编写action

    在Struts2中,一个Action类代表一次请求或调用,每个请求的动作都对应于一个相应的Action类,一个Action类是一个独立的工作单元。也就是,用户的每次请求,都会转到一个相应的Action类里面,由这个Action类来进行处理,因此一个Action类代表了用户的一次请求或调用。简单来说,Action就是用来处理一次用户请求的对象。


这里写图片描述
在此处至于Struts2中Action中是否需要实现Execute方法:
经过查找:
1)如果你的Action类是继承自ActionSupport或是BaseAction的话,确切的说是重写了execute方法,ActionSupport里的默认实现就是返回”success”视图。因此,你可以不实现execute方法,只要你的struts.xml里有”success”对应的result即可。
2)如果你的Action类没有继承ActionSupport或是BaseAction的话,而你又没有在struts.xml中对应标签中用method属性指定你自己的方法的话,默认就要找execute方法,这时是必须要实现execute方法的,否则Struts2会找不到对应的方法而报错。不过,大部分情况下都是继承ActionSupport的(比如输入验证、文件上传等功能就要求必须继承)。还有,不管你写没写execute方法,还是可以用标签的method属性指定其他方法的。
  1. 配置struts2.xml文件
    不管Action采用何种实现方式,要正确运行,都需要在struts.xml中进行配置。

name:必填属性,用来指定包的名字。
extends:可选属性,用来指定该包继承其他包。继承其它包,可以继承其它包中的Action定义、拦截器定义等。
namespace:可选属性,用来指定该包的命名空间。

这里写图片描述
考虑到同一个Web应用中需要同名的Action,Struts2以命名空间的方式来管理Action,同一个命名空间不能有同名的Action。可以在不同包下建立同名的action。

参考文章:
http://blog.csdn.net/zz_mm/article/details/5460397
http://www.cnblogs.com/lyp3314/archive/2013/01/25/2876863.html
http://blog.sina.com.cn/s/blog_76b2c48101019rfj.html

0 0
原创粉丝点击