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整合开发》 作者:李刚)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值