Struts2小结

Struts框架是流行广泛的一个MVC开源实现,而Struts2是Struts框架的新一代产品,是将Struts1和WebWork两种技术进行兼容、合并的全新的
MVC框架。Struts2框架充分发挥了Struts1和WebWork这两种技术的优势,抛弃原来Struts1的缺点,使得Web开发更加容易。

工作流程: 
(1)客户端浏览器发送HTTP请求到Web应用 
(2)Web容器将请求传递到标准ActionContextCleanUp过滤器以消除属性,而不让后续过滤器清楚,以延长Action中属性(包括自定义属性)的生命周期。ActionContextCleanUp作用 
(3)再经过如stimesh等其他过滤器后,请求传递给StrutsPrepareAndExecuteFilter核心控制器 
(4)StrutsPrepareAndExecuteFilter调用ActionMapper(Action映射器)确定调用哪个Action,再将控制权转移给ActionProxy代理 
(5)ActionProxy代理调用配置管理器ConfigurationManager从配置文件struts.xml中读取配置信息,然后创建ActionInvocation对象 
(6)ActionInvocation在调用拦截器链中的拦截器后再调用Action,根据Action返回的结果字符串查找对应的Result 
(7)Result调用视图模板,再以相反的顺序执行拦截器链,返回HTTP响应 

(8)HTTP响应以相反的顺序返回给核心控制器StrutsPrepareAndExecuteFilter以及其他web.xml中定义的过滤器,最终返回给客户端

在web.xml中配置核心控制器StrutsPrepareAndExecuteFilter 

<!-- 配置StrutsPrepareAndExecuteFilter核心控制器 -->
 		 <filter>
     		 	<!-- 过滤器名 -->
      			<filter-name>struts2</filter-name>
      			<!-- StrutsPrepareAndExecuteFilter核心控制器的实现类 -->
      			<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
 		 </filter>
 		 <filter-mapping>
     		 	<!-- 过滤器名 -->
      			<filter-name>struts2</filter-name>
      			<!-- 过滤器过滤所有请求 -->
     			 <url-pattern>/*</url-pattern>
  		</filter-mapping>

在src下创建struts.xml配置文件

<struts>
    <!-- 指定Struts2处于开发阶段,可以进行调试 -->
    <constant name="struts.devMode" value="true"/>
    <!-- Struts2的Action都必须配置在package里。这里使用默认的package -->
    <package name="default" namespace="/" extends="struts-default">
        <action name="register" class="action.RegisterAction">
            <!-- 配置execute()方法返回值与视图资源之间的映射关系 -->
            <!--  
            <result name="success">/result.jsp</result>
            <result name="error">/error.jsp</result>
            -->
            <result name="success">/index.jsp</result>
        </action>
    </package>
</struts>

其中常用属性如下: 
(1)name 
指定包的名字,当存在多个包时作为唯一标识

(2)extends 
指定包所继承的其他包。 
struts-default是Struts2框架默认的抽象包,包含了大量结果类型的定义、拦截器及其引用定义等,是配置Action的基础,因此定义包时都要继承struts-default包。 
定义时,父包要先于子包;Action相同,后面的覆盖前面

(3)namespace 
指定包的命名空间,没有指定namespace值则为默认命名空间”/”
Struts2以命名空间的方式来管理Action,同一个命名空间不能有同名的Action 

配置命名空间后,Struts2按照以下顺序搜索Action: 
- 指定命名空间,不存在则往下搜索 
- 默认命名空间,不存在则往下搜索 
- 报错

Struts2 的传值方式---ModelDrivern  传值

Struts 文件的配置

<struts>
	<constant name="struts.enable.DynamicMethodInvocation" value="false" />
	<constant name="struts.devMode" value="true" />
	<package name="default" namespace="/" extends="struts-default">
		<action name="ModelDrivenAction" class="com.hp.action.ModelDrivenAction"
			method="addUser">
			<result name="success">UserPage.jsp</result>
		</action>
	</package>
</struts>
User   bean类
package com.hp.bean;


public class User {
	private Integer id;
	private String username;
	private String password;


	public Integer getId() {
		return id;
	}


	public void setId(Integer id) {
		this.id = id;
	}


	public String getUsername() {
		return username;
	}


	public void setUsername(String username) {
		this.username = username;
	}


	public String getPassword() {
		return password;
	}


	public void setPassword(String password) {
		this.password = password;
	}


}
ModelDrivenAction  类
package com.hp.action;


import com.hp.bean.User;
import com.opensymphony.xwork2.ModelDriven;


public class ModelDrivenAction implements ModelDriven<User> {
	private User user;


	private String addUser() {
		System.out.println("ID:" + user.getId());
		System.out.println("username:" + user.getUsername());
		System.out.println("password" + user.getPassword());
		return "success";
	}


	@Override
	public User getModel() {
		if (user == null) {
			user = new User();
		}
		return user;
	}
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值