当前位置: 代码迷 >> Web前端 >> struts2小事例
  详细解决方案

struts2小事例

热度:246   发布时间:2012-08-25 10:06:20.0
struts2小例子

?

一、struts2简介

1、什么是struts2?

? struts2是目前java主流的MVC框架

? MVC思想:能够将web应用中将各组件按功能进行分类,不同组件使用不同技术充当。

? ? ?推荐将系统分为Model(模型层)、View(视图层)和Controller(控制层),

? ? ?各层之间松耦合,提供良好的封装。

2、struts2版本

目前struts2的最高版本为2.3.1

但是同spring结合的最好的版本为2.2.3,经使用2.2.3也比较稳定

所以建议使用struts2.2.3版本。

3、struts2的基本配置

a)web.xml文件中增加

<!-- 配置struts2 -->

? ?<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

<init-param>

? ? <param-name>config</param-name>

? ? <param-value>

? ? struts-default.xml,struts-plugin.xml,struts/struts.xml

? </param-value>

</init-param>

</filter>?

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

此处可以通过config参数自由的指定struts配置文件的位置,

注意:此处如果想要增加config参数,那么value中至少要有struts-default.xml和struts-plugin.xml

其中struts-default.xml是struts2核心包中的重要配置文件,里面配置大量的struts2需要的组件

? ?struts-plugin.xml是struts2插件包中的配置文件名,struts2插件包中都会存在这个文件。

? ?只有struts.xml是可供我们修改的配置文件,在struts.xml可以配置任何能在struts2核心包

org.apache.struts2包下default.properties文件中存在的参数的值

b)项目中引用如下包:

commons-fileupload-1.2.2.jar,

commons-logging-api-1.1.jar,

freemarker-2.3.16.jar,

ognl-3.0.1.jar,

struts2-core-2.2.3.jar,

xwork-core-2.2.3.jar,

commons-lang-2.5.jar,

commons-io-2.0.1.jar,

javassist-3.11.0.GA.jar。

c)增加struts.xml文件,对struts进行设置

4、org.apache.struts2.dispatcher.FilterDispatcher的作用

(1)执行Actions

? ? ? ? ? ? 过滤器通过ActionMapper对象,来判断是否应该被映射到Action.如果mapper对象指示他应该被映射,过滤链将会被终止,

? ? ? ? ? ? 然后Action被调用。这一点非常重要,如果同时使用SiteMesh filter,则SiteMesh filter应该放到该过滤器前,否则

? ? ? ? ? ? Action的输出将不会被装饰。

? ? ? ? ?(2)清除ActionContext

? ? ? ? ? ? 过滤器为了防止内存溢出,会自动的清除ActionContext。这会导致同strut2结合较深的一些过滤器出现问题。

? ? ? ? ? ? 为防止其他过滤器使用ActionContext中的值,而被FilterDispatcher自动清除的情况出现。

? ? ? ? ? ? 通常在web.xml中加入

? ? ? ? ? ? <!-- 延长action中属性的生命周期, -->

<filter>

<filter-name>struts-cleanup</filter-name>

<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>

</filter>

<filter-mapping>

<filter-name>struts-cleanup</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

?

?此过滤器应该配置在org.apache.struts2.dispatcher.FilterDispatcher之前,

?此过滤器的作用为当请求通过过滤器时,过滤器将request中的一个名为“__cleanup_recursion_counter”的环境变量加1,

?当请求结束时将此环境变量减1

?而FilterDispatcher中的清除机制,是有判断的,它会判断此时的,此环境变量是否为0,如果为0才清除。

?

? ? ? 5、BaseAction 公共的父类,继承ActionSupport?

实现 ServletContextAware,ServletResponseAware,?

ServletRequestAware, SessionAware ? ?

?

? ? ? ? ? ?声明变量

? ? ? ? ? ? protected ServletContext servletcontext;

protected HttpServletResponse httpservletresponse;

protected HttpServletRequest httpservletrequest;

protected HttpSession httpSession;

protected Map<String, Object> session;

?6、简单的登陆实现、表单验证

?

?7、登陆过滤器

?

?8、前台标签,<s:iterator>、<s:if>、<s:property>

? <s:form>、<s:actionerror>、<s:fielderror>、

? <s:text>、<s:textfield> 、<s:password>、<s:submit>

?

  相关解决方案