struts

什么是struts
   Struts 2 是Apache软件基金会(Apache Software Foundation,简称为ASF)以WebWork优秀的设计思想为核心,建立的一个基于MVC(Mode/View/ Controller )框架。
两个版本:struts1   struts2


struts1   struts2区别是什么?

在Action的实现方面:Struts1要求必须统一扩展自Action类,而Struts2中可以是一个普通的 POJO
  线程模型方面:Struts1的Action工作在单例模式,一个Action的实例处理所有的请求。Struts2的Action是一个请求对应一个实例。没有线程安全方面的问题。
  Servlet依赖方面:Struts1的Action依赖于Servlet API,比如Action的execute方法的参数就包括request和response对象。这使程序难于测试。Struts2中的Action不再依赖于Servlet API,有利于测试,并且实现TDD。
  封装请求参数:Struts1中强制使用ActionForm对象封装请求的参数。Struts2可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。
  表达式语言方面:Struts1中整合了EL,但是EL对集合和索引的支持不强,Struts2整合了OGNL(Object Graph NavigationLanguage)。
  绑定值到视图技术:Struts1使用标准的JSP,Struts2使用“ValueStack”技术。
  类型转换:Struts1中的ActionForm基本使用String类型的属性。Struts2中使用OGNL进行转换,可以更方便的使用。
  数据校验:Struts1中支持覆盖validate方法或者使用Validator框架。Struts2支持重写validate方法或者使用XWork的验证框架。
  Action执行控制的对比:Struts1支持每一个模块对应一个请求处理,但是模块中的所有Action必须共享相同的生命周期。Struts2支持通过拦截器堆栈为每一个Action创建不同的生命周期。


模型
 


一个请求在Struts2框架中的处理大概分为以下几个步骤:
• 1、客户端初始化Servlet容器(例如Tomcat)的请求;
• 2、这个请求经过一系列的过滤器(Filter)(其中ActionContextCleanUp可选过滤器,这个过滤
器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);
• 3、FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用
某个Action;
• 4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给
ActionProxy;
• 5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;
• 6、ActionProxy创建一个ActionInvocation的实例。
• 7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器
(Intercepter)的调用。
• 8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者
FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及
到ActionMapper


struts有一个filterdispatcher过滤器配置在web.xml中用来监听
action请求一旦遇到这个请求之后会将请求拿到struts中ActionMapper
查找对象向对应的控制器如果有的话
转个ActionProxy这个代理去创建对象
Action对象
分为大步骤:
1、写一下filterdispatcher
2、写action这个类
3、写处理后的业务逻辑
4、写好的action配置的struts.xml中
5、拦截器学习
6、线程标签
7、国际化
 
1、jsp action 传值
基本属性,有get set 变量名匹配
2、method
method指定执行的方法默认是的execute方法
method也可以指定其他的任何方法  class 指定的是响应的action类 name是响应的url调用时的方法


3、type
type指定页面跳转方式 默认是forward方式url没有跳转 可以指定为指定类型例如redirect是页面url改变


4.隐藏方法
 


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<package name="actionDemo" extends="struts-default">
<action name="action" class="com.insigma.action.ActionDemo" method="">
<result name="success">/Success.jsp</result>
<result type="redirect" name="error">/index.jsp</result>
<result name="input">/Regist.jsp</result>
</action>
</package>
</struts>    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值