java

位置:IT落伍者 >> java >> 浏览文章

Jakarta Struts学习之应用实践


发布日期:2020年02月25日
 
Jakarta Struts学习之应用实践

本文是三篇学习Struts框架系列文章的第二篇在本系列的的第一篇中我们大致浏览了Struts框架框架的功能以及框架中应用到的各个模块而本文我将利用Struts 为大家演示建立一个简单的应用在第三篇文章中将介绍如何利用Struts的标签在JSP中访问ApplicationResource文件中的信息 我们在这篇文章将会一步一步的讲解Struts的应用以这样的形式打开Struts一道道神秘的大门通过这样的过程相信也能激起你在应用开发中如何应用Struts的灵感如果你对Struts的一些术语不是很清楚的话可以参考本系列前一篇对Struts作大体介绍的文章

再次重复一遍本文需要读者有如下几方面的知识和经验JSPServlets自定义标签库(Custom Tag libraries)和XML此外在本文中我还会用到Jakarta项目组其他一些好东东比如Tomcat(实现Java Servlet和JSP官方标准的Servlet容器通俗的讲就是一个JSP的Web Server啦)和Ant(基于Java的自动编译发布工具这可是好东东啊)

作为一名一直使用前沿技术开发了诸多应用的技术人员我一直坚信掌握新技术理解该技术开发的逻辑是至关重要的但这往往就是陷住我们学习步伐的泥潭正因如此我打算将利用Struts开发的一套完整流程作为我们教学的案例该流程的这个案例可谓麻雀虽小五髒据全你完全可以将这个流程应用到你手头那些复杂庞大的项目中至少在我们的大项目中应用这个流程效果不错

有开发复杂商业应用的开发人员都知道客户的需求总是在不停变幻所以如果有一套规范的开发流程来遵循当客户提出新的需求时我们至少可以明确哪些无理需求其实是合理可行的接下里我将在我的这个例子中向各位展示和应用整个流程

本文中的示例代码是StrutsSample应用中的一部分包括buildxml的完整代码可以到此处下载

Struts开发过程

从Struts发布的版本号可以看出Struts是个新玩意她有好几个部分组成明智的你如果搞清楚了何时该开发完成合适的部分那将会更好的利用我们的开发时间从我所开发的几个利用Struts应用中我大致总结出如下这个比较有效的开发步骤

明确应用需求

由用户输入和获取数据的角度出发明确和设计出每一个用户界面

确定用户界面的进入路径

由应用逻辑信息确定动作映射表(ActionMapping)

由设计完成的用户界面开发其所用到的类和应用函数

由用户界面中的数据信息开发ActionForm和相应的数据校验方法

ActionMapping中将会被调用相应的Action或转到相应的JSP页面这一步我们先开发这些Action

开发商业应用逻辑就是相应的JavaBeanEJB或其他东东

开发由ActionMapping定义的系统工作流程完成对应的JSP页面

完成系统配置文件strutsconfigxml和webxml

编译/测试/发布

明确应用需求

开发任何应用系统的第一步就是收集用户需求信息不管一个用户逻辑初看上去多么合理但总有可能在开发时才发现它比看上去要难得多所以建议拟一份明确的用户需求列表这不只是出于开发的目的还能通过该表分析用户需求以确定哪些地方可能需要花更多的精力

在我们这个StrutsSample项目中应用需求就是

作为一个展示Struts框架应用的完整例子本示例完成的功能是用户登录目的只为明确Struts的应用本示例将不会涉及到一般复杂应用系统中可能应用的安全数据库EJB开发等等相关技术

设计用户界面

这个应用中包括如下三个用户界面

)登录界面用于用户名和密码输入

)当登录用户为合法用户时的欢迎界面

)当登录失败时的错误提示界面

确定用户界面的进入路径

)登录界面作为这个应用的默认页面

)欢迎界面只有当成功登录后才能进入

)任何可能发生错误的页面能可以进入错误提示界面

由应用逻辑信息确定ActionMapping ActionMap昀三篇学????本文是三篇学习Struts框架系列文章的第二篇在本系列的的第一篇中我们大致浏览了Struts框架框架的功能以及框架中应用到的各个模块而本文我将利用Struts 为大家演示建立一个简单的应用在第三篇文章中将介绍如何利用Struts的标签在JSP中访问ApplicationResource文件中的信息 我们在这篇文章将会一步一步的讲解Struts的应用以这样的形式打开Struts一道道神秘的大门通过这样的过程相信也能激起你在应用开发中如何应用Struts的灵感如果你对Struts的一些术语不是很清楚的话可以参考本系列前一篇对Struts作大体介绍的文章

再次重复一遍本文需要读者有如下几方面的知识和经验JSPServlets自定义标签库(Custom Tag libraries)和XML此外在本文中我还会用到Jakarta项目组其他一些好东东比如Tomcat(实现Java Servlet和JSP官方标准的Servlet容ping为整个应用确定的线路图在配置文件strutsconfigxml对ActionMapping进行定义通过转发请求(forward)来理顺应用的处理流程确定应用中每个用户请求对应的动作 通常我们在开发过程中就逐步确定了ActionMapping所需的信息开发代码的过程就是在由草稿开始一步步完善strutsconfigxml的过程当Action类处理完用户请求后其返回的的forward就是在ActionMapping中定义的一个一个Action返回的forward完全有多种可能尽管一个Action一般只定义其相关的几个forward那么如果有多个Action都可能返回的同一个forward那么就可以将其定义为全局转发(global forward)这类似于C中的头文件中全局变量如果在strutsconfigxml描述信息中某一个forward并不是在当前Action描述中定义的而是全局定义的那么这个全局的将起作用同样一个Action中当前定义的forward将覆盖全局定义在我们所给的这个简单实例中我们定义了全局forward――error当某Action返回的forward是error这个映射那么Errorpagejsp页面将会显示给用户尽管当前Action并没有对其定义 我们继续不断的开发项目日渐完善项目相关的配置文件也会越来越详细在下面的例子中我们将以StrutsSample中用到的strutsconfugxml文件为例学习global forward和一个Action中相关映射的定义下面定义了一个名为login的Action其为comoreillyactionsLoginAction的实例当Action处理用户登录成功后将一个名为success的forward返回用户也就会看到Welcomejsp页面如果登录失败Action将返回对应的forward以再显示Loginjsp给用户而如果处理过程中发生其他错误Action将返回全局定义的forward――error用户也就会看到错误提示页面Errorpagejsp

<! ========== Global Forward 定义 >

<globalforwards>

<forward name=login path=/Loginjsp/>

<forward name=error path=/Errorpagejsp/>

</globalforwards>

<! ========== Action Mapping 定义 >

<actionmappings>

<! <action>元素的相关属性 >

<!

以下只列出常用属性其他请参考orgapachestrutsactionActionMapping的相关文档

path 当前Action对应的用户请求URI路径

type 实现当前Action的Java class的完整名字

name 当前Action中用到的ActionForm的名字其具体信息在配置文件其他地方另有详细定义

unknown 如果将该属性设置为true那么就是声明这个Action将处理整个应用中所有未找到相应处理Action的请求当然一个应用系统中也只会有一个Action的unknown属性可以设为true

scope Action中所用到的ActionForm的生存期可以为requestsession随着生存期的设置该Action也会在相应的时间被创建

input 该Action中相关ActionForm获取用户输入的输入页面当将ActionForm设为自动验证输入数据发现不合法数据返回错误时将返回该页面

validate 如果本属性为true则在Action动作之前其对应的ActionForm的validate方法会自动被调用一般用以验证用户输入的数据

forward 元素 定义当前Action相关的ActionForward

>

<! =================== >

<! OReilly Struts Sample Main Actions >

<! =================== >

<action path=/login

type=comoreillyactionsLoginAction

name=loginForm

scope=request

input=/Loginjsp>

<forw昀三篇学????ard name=success path=/Welcomejsp/>

<forward name=failure path=/Loginjsp/>

</action>

</actionmappings>

在前一篇文章中我们曾说过strutsconfigxml就是MVC模式的的Controller在确定strutsconfigxml中的配置信息时应该多花些时间精力在上面以保证每一

上一篇:struts2中的一些constant

下一篇:Struts的后代:Shale不是Struts