Struts2技术详解

一、介绍

  Struts2是在WebWork的基础上发展起来的,并且吸收了Struts1和WebWork的优点。

  Struts2和Struts1的区别:

  (1)Struts1的Action是单例模式并且必须是线程安全的;而Struts2的Action为每一个请求产生一个实例。

  (2)Struts1的Action依赖于Servlet,当一个Action被调用时,HttpServletRequest和HttpServletResponse被传递为execute方法;而Struts2不依赖于容器,允许Action脱离容器被单独测试,如果有需要,也可以访问HttpServletRequest和HttpServletResponse。

  (3)Struts1使用ActionForm对象捕捉表单数据,而且所有的ActionForm必须继承一个基类;Struts2直接使用Action属性作为输入属性,不需要继承任何基类。

  (4)Struts1使用JSTL EL;Struts2也可以使用JSTL,但是还支持一个更强大和灵活的表达式语言OGNL。

  (5)Struts1使用ActionForm的validate方法进行校验;Struts2也可以使用validate方法,也可以使用配置文件进行校验。

二、下载地址

  http://struts.apache.org

三、环境搭建

  (1)新建名称Struts2的用户库,导入Struts2框架lib中的部分JAR文件:

 

  (2)为工程增加Struts Capabilities,右键你的工程名称,选择MyEclipse->Add Struts Capabilities,在弹出的对话框中,选择对应的Struts的版本,以及对应的(1)中的用户库。

四、入门示例

  (1)编写一个jsp,引入Struts2标签库:<%@taglib prefix="s" uri="/struts-tags" %>

  (2)编写一个控制器java文件,继承ActionSupport类【Struts2也可以不继承任何基类】,重写execute方法。

  (3)编写struts.xml文件:

 

  (4)编写struts.properties文件:struts.i18n.encoding=GBK

  (5)编写web.xml文件:

 

五、Struts2的核心机制

  (1)过滤器:

           <filter>

                <filter-name>XXX</filter-name>
                <filter-class>XXX</filter-class>

          </filter>
          <filter-mapping>

                <filter-name>XXX</filter-name>

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

          </filter-mapping>

  (2)输入校验:校验文件存放的路径和要校验的Action类要一致,校验文件命名为Action类名-validation.xml:

           <field name="username">

                 <field-validator type="requiredstring">

                       <param name="trim">true</param>

                       <message>用户名不能为空!</message>

                 </field-validator>

           </field>

  (3)拦截器:Struts2提供了许多的拦截器<interceptor-ref>,将struts-default.xml包含到struts.xml中即可(如下图配置logger拦截器):

 

  (4)国际化:在struts.properties中定义使用的国际化文件:struts.custom.i18n.resources=globalMessages;

  (5)标签库:在jsp代码顶部加入代码,<%@taglib perfix="s" uri="/struts-tags"%>

  (6)配置文件:struts.properties和struts.xml。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值