Struts2 应用的开发步骤

上周刚用Struts2做了个简单的登录例子,下面对开发Struts 2应用的过程做一个总结。

 

Struts 2应用的开发步骤:

(1)在web.xml文件中定义核心Filter来拦截用户请求。

由于Web应用是基于请求/响应架构的应用,所以不管哪个MVC Web框架,都需要在web.xml中配置该框架的核心Servlet或Filter,这样才可以让该框架介入Web应用中。

例如,开发Struts 2应用第1步就是在web.xml文件中增加如下配置片段:

<!-- 定义Struts 2的核心Filter -->

<filter>

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

<filter-class>org.apache.struts2.dispatcher.ng

.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<!-- 让Struts 2的核心Filter拦截所有请求 -->

<filter-mapping>

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

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

</filter-mapping>

 

(2)如果需要以POST方式提交请求,则定义包含表单数据的JSP页面。如果仅仅只是以GET方式发送请求,则无须经过这一步。

 

(3)定义处理用户请求的Action类。

这一步也是所有MVC框架中必不可少的,因为这个Action就是MVC中的C,也就是控制器,该控制器负责调用Model里的方法来处理请求。

MVC框架的底层机制是:核心Servlet或Filter接收到用户请求后,通常会对用户请求进行简单预处理,例如解析、封装参数等,然后通过反射来创建Action实例,并调用Action的指定方法(Struts 1通常是execute,Struts 2可以是任意方法)来处理用户请求。这里又产生了一个问题:当Servlet或Filter拦截用户请求后,它如何知道创建哪个Action的实例呢?这有两种解决方案:

² 利用配置文件:例如,可以配置login.action对应使用LoginAction类。这就可以让MVC框架知道创建哪个Action的实例了。

² 利用约定:这种用法可能是受Rails 框架的启发,例如,可以约定xxx.action总是对应XxxAction类。如果核心控制器收到login.action请求后,将会调用LogoinAction类来处理用户请求。

在MVC框架中,控制器实际上由2个部分共同组成,即拦截所有用户请求,处理请求的通用代码都由核心控制器完成,而实际的业务控制(诸如调用Model,返回处理结果等)则由Action处理。

 

(4)配置Action。对于Java领域的绝大部分MVC框架而言,都非常喜欢使用XML文件来配置管理。配置Action就是指定哪个请求对应用哪个Action进行处理,从而让核心控制器根据该配置来创建合适的Action实例,并调用该Action的业务控制方法。例如,通常需要采用如下代码片段来配置Action。

<action name="login" class="org.crazyit.app.action.LoginAction">

...

</action>

上面配置片段指定如果用户请求URL为login,则使用org.crazyit.app.action.LoginAction来处理。 

现在Struts 2的Convention插件借鉴了Rails框架的优点,开始支持“约定优于配置”的思想,也就是采用约定方式来规定用户请求地址和Action之间的对应关系。

 

(5)配置处理结果和物理视图资源之间的对应关系。

当Action处理用户请求结束后,通常会返回一个处理结果(通常使用简单的字符串就可以了),可以认为该名称是逻辑视图名,这个逻辑视图名需要和指定物理视图资源关联才有价值。所以还需要配置处理结果之间的对应关系。

例如,通过如下代码片段来配置处理结果和物理视图的映射关系。

<action name="login" class=" org.crazyit.app.action.LoginAction ">

<!-- 定义3个逻辑视图和物理资源之间的映射 -->

<result name="input">/login.jsp</result>

<result name="error">/error.jsp</result>

<result name="success">/welcome.jsp</result>

</action>

上面粗体字代码指定了3个处理结果和3个物理视图之间的映射关系,配置片段指定当lee.LoginAction返回input时,实际将进入/login.jsp页面;当返回error时,实际将进入/error.jsp页面;当返回success时,实际将进入/welcome.jsp页面。

 

(6)编写视图资源。如果Action需要把一些数据传给视图资源,则可以借助于OGNL表达式。

 

经过上面6个步骤,就可以基本完成一个Struts 2处理流程的开发,也就是可以执行一次完整的请求/响应过程。

 

 

(参考资料:《轻量级Java EE企业应用实战——Struts 2+Spring+Hibernate整合开发》 作者:李刚)

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值