经验总结:Struts2原理与简单配置

 本文将从自己学习应用过程中进行总结:
一、简介:
 struts的英文单词意思是:支柱支干,来源于建筑和就是飞机使用的金属支架,struts是流行和成熟的基于MVC设计模式的Web应用程序框架。使用struts可以减少我们在运用MVC设计模式来开发Web应用的时间。
二、工作原理:
 struts2的工作原理图:


 我的理解是:一个从页面发过来的HttpServletRequest,首先要经过一系列的filter,其中ActionContextCleanUp是一个可选项,然后经过一些其他用于与其他框架结合的filter是可选的,然后是到达struts2的核心处理器,在2.3之前的版本名字叫FilterDispatcher之后叫StrutsPrepareAndExecuteFilter(原因是:StrutsPrepareAndExecuteFilter是支持执行action之前添加filter),经过核心filter后,只有.action的请求可以到达actionMapper找到对应的action返回到StrutsPrepareAndExecuteFilter,然后执行到ActionProxy,ActionProxy通过ConfigurationManaer去读struts.xml找到对应的action类,然后通过ActionProxy代理创建ActionInvocation(action实例),然后通过一系列的自定义的拦截器执行action返回result,得到对应的视图(Template),然后在通过一系列的自定义拦截器到达HttpServletResponse返回到页面。
三、struts2的配置;

我的应用中是采用的是maven管理jar包,如果没有则需要asm-3.3.jar、asm-commons-3.3.jar、asm-tree-3.3.jar、commons-fileupload-1.3.1.jar、commons-io-2.2.jar、commons-lang3-3.2.jar、freemarker-2.3.22.jar、javassist-3.11.0.GA.jar、log4j-api-2.2.jar、log4j-core-2.2.jar、ognl-3.0.6.jar、struts2-core-2.3.24.1.jar、xwork-core-2.3.24.1.jar,maven配置如下:

  <!-- struts的坐标 -->
  <dependency>
   <groupId>org.apache.struts</groupId>
   <artifactId>struts2-core</artifactId>
   <version>2.3.28</version>
  </dependency>
 在we.xmlb配置StrutsPrepareAndExecuteFilter,web应用加载StrutsPrepareAndExecuteFilter,StrutsPrepareAndExecuteFilter加载struts2框架,详细如下:
 <!-- strturs框架的过滤器 -->
 <filter>
  <filter-name>struts2</filter-name>
  <!-- StrutsPrepareAndExecuteFilter路径 -->
  <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>struts2</filter-name>
  <!-- 过滤全部请求 -->
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 然后配置struts.xml,其包括:1、全局属性,2、用户请求和Action之间的对应关系,3、Action可能用到的参数和结果,4、各种拦截器的配置。简单配置及其注解如下
 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "http://struts.apache.org/dtds/struts-2.3.dtd"><!--文件描述 采用2.3dtd校验文件 -->
<struts>
 <constant name="struts.enable.DynamicMethodInvocation" value="false" /><!-- constant标签是配置全局属性,这里意思是关闭动态action -->
 <constant name="struts.devMode" value="true" /><!-- 开发者模式是否开启,开启后明显的提高开发效率,能获得更多日志或debug信息,性能方面会降低。所以struts默认的是非开发模式。设置为开发模式之后
 1、每次请求都会重新加载资源文件,所以当对properties文件进行修改后,下一次请求是就能够反映相应的变化。(struts.i18n.reload = true也可以达到相同的效果)
 2、每次请求的时候也会重新加载xml配置文件、验证文件等,这样可以方便调试或者修改相应的配置文件,而不用重新部署重启web服务器。(struts.configuration.xml.reload = true 也可以达到相同的效果)
 -->
 <!--
 name : package的名字(可以随便命名)
 namespace命名空间 请求uri的前缀
 extend 继承别的包
 -->
    <package name="default" namespace="/" extends="struts-default">
    <!-- uri匹配name的属性值后,没有指定处理类,就交给ActionSupport的execute()方法处理,返回一个字符串success
     默认处理类 ActionSupport
     默认处理方法 execute()
     自定义处理类: 通过属性class设置
     自定义处理方法:通过属性method设置
     name : 请求的uri的后缀
     class 请求资源的处理类名
    -->
  <action name="hello" class="com.yc.struts2.action.MyAction" method="myMethod" ><!-- 采用自己定义的方法返回字符串fail-->
  <!-- result的属性name的默认值是success, 作用是actiongn与请求处理方法执行后的结果进行匹配,分发页面
   默认页面跳转:dispatcher转发
   自定义转发方式:通过result属性type来设置
   常用的type值有:
   chain:转发到另一个XXXAction
   dispatcher:转发到另一个页面XXXX.jsp ,XXX.html
   redirect: 重定向到另一个页面XXX.jsp XXX.html
   redirectAction : 重定向到另一个XXXAction
  -->
  <result name="show" >/show.jsp</result>
  <result name="fail" type="redirect">/fail.jsp</result>
   <result>/index.jsp</result>
  </action>
    </package>
</struts>

四、简单例子:

       结合上面的配置对应的Action处理类

public class MyAction {
 public String execute() throws Exception{
  System.out.println("我是默认方法。。。。");
  return "show";
 }
 public String myMethod() throws Exception{
  System.out.println("我是自定义方法。。。。");
  return "fail";
 }
}

ur例子

项目名/hello

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值