Luke笔记——Struts1.2 流程与示例

本文详细介绍了Struts1.2的工作流程,包括从Request到Response的九个步骤,并提供了一个完整的示例项目,涵盖了从初始化环境到编写Action、Form、JSP页面和配置文件的过程。通过示例展示了如何实现页面跳转、表单提交、Action处理和转发控制。项目下载链接见文末。
摘要由CSDN通过智能技术生成

Struts1.X 工作流程
初始化应用服务器(init Application Server)
步骤一:Request——>服务器接收请求后交给ActionServlet处理
步骤二:ActionServlet——>去配置文件(已加载到内存)找相应的FromBean和Action
步骤三:FromBean——>ActionServlet将请求数据填入FromBean(如果没FromBean实例将创建一个,没配置则返回错误)
步骤四:Action——>ActionServlet将请求动作和FromBean对象一起塞进来,要求干活
步骤五:Service——>Action接收动作后进行验证、检查数据等初步工作,然后交给Service处理业务逻辑
步骤六:DAO——>Service处理业务逻辑过程中需要数据库操作则调用DAO
步骤七:Action——>Service将业务逻辑处理完毕,将整理好的数据或者异常提交Action进行转发控制
步骤八:ActionServlet——>Action将处理结果与数据交给ActionServlet,根据配置文件查找跳转目标页面并实际操作
步骤九:Response——>ActionServlet将页面数据响应给请求发送者

 

弄一个测试示例包含以下东东
四个页面:index.jsp   logon.jsp   show.jsp   error.jsp
两个Form:RootForm.java   LogonForm.java
两个Action:RootAction.java   LogonForm.java

 

index.jsp——>logon.jsp
纯粹跳转,示例用配置实现公共跳转

 

logon.jsp——>show.jsp
通过提交表单到Action,然后设置conf中的Action配置进行跳转


首先的确定环境是否完整齐全:(用MyEclipse弄了,懒得自己配置,用的是JDK1.5和Struts1.2.6)

1.构建Web Project
 New——>Web Project——>示例名称为“Template_Struts_1_2”
 项目名最好别用1.2,因为package包以“.”区分,改Base package名的时候不好弄


2.为项目添加Struts 1.2支持
 MyEclipse——>Project Capabilities——>Add Struts Capabilities
 配置文件路径不改 = /WEB-INF/struts-config.xml
 Struts版本不改 = 1.2
 ActionServlet名不改 = action
 URL后缀样式不改 = *.do
 改Base package名 = com.Template_Struts_1_2.struts
 记得选上安装Struts TLD


3.将项目编码设置为UTF-8,省得中文乱码


4.配置一个应用服务器,我用的是自己配置到MyEclipse去的Tomcat6.0

PS:用Project Capabilities构建的项目包含无用包挺多的,如果实际用还是自己选包到lib再引入吧。

 


弄好环境,开始编码:

1.改写index.jsp
将WEB-INF下的‘struts-html.tld’引入,改引用名为‘html’
在<BODY>里面加入<html:link forward="logonpage"></html:link>
也就是加入一个跳转链接
好了?好了!
PS:要看全代码后面有;

 

2.添加logon.jsp
在WebRoot目录下创建一个专门放页面的目录‘page’,然后在里面创建一个新JSP页面
然后?不动。先完成index.jsp的跳转再写其它。

 

3.修改struts-config.xml文件
找到<global-forwards />,这个是全局跳转选项,登录入口有可能多个页面都有,那就把它设为全局跳转
修改为
<global-forwards>
 <forward name="logonpage" path="/page/logon.jsp"></forward>
</global-forwards>
记得<forward>标签的name值得跟index.jsp里<html:link>标签的forward值一致

 

4.部署、测试!
OK,我是成功的,这次....其实写这个之前失败过好几次的,哈哈
大多都失败在配置不对应,少个‘/’,写错字母之类,细心点就应该没问题的。

 

5.改写logon.jsp
同样引入‘struts-html.tld’并改引用名为‘html’

在<BODY>中加上以下四个标签
<html:text property="username" />
<html:password property="password" />
<html:submit value="提交" />
<html:reset value="重置" />

这四个是什么不用说了吧?然后在这四个标签外面再包一个<html:form>
<html:form action="logon.do" method="post" focus="logonForm">
OK,logon.jsp也搞定。

 

6.添加Form
在添加LogonForm之前习惯性加一个RootForm,要知道自定义Form是要继承org.apache.struts.action.ActionForm才能用的,我们用RootForm去继承org.apache.struts.action.ActionForm,然后自定义Form继承RootForm,在ActionForm与自定义Form中间加一层通用缓冲,万一当有某些需求要Form大量修改的时候或者一些常用帮助方法(例如:编码转换、数据检查)需要添加的时候,RootForm就很有用了。
RootForm继承org.apache.struts.action.ActionForm,然后暂时什么都不做。
LogonForm继承RootForm
LogonForm添加两个String类型参数:username和password,并为这两个参数添加set and get方法

 

7.添加Action
同样添加RootAction
RootAction继承org.apache.struts.action.Action
LogonAction继承RootAction
LogonAction添加execute方法,里面有两个Forward,SUCCESS和ERROR,
并在execute方法里面虚拟一个用户,用户名为aaa,密码为bbb,如果是该用户登录则跳转SUCCESS,否则跳转ERROR

 

8.添加show.jsp和error.jsp
其实就是两个空的JSP,用于测试是否登录成功。

 

9.修改struts-config.xml配置文件
在全局跳转添加ERROR跳转<forward name="error" path="/page/error.jsp"></forward>
在<form-beans>里添加LogonForm
<form-bean name="logonForm" type="com.Template_Struts_1_2.struts.form.LogonForm"></form-bean>
在<action-mappings>里添加LogonAction
<action path="/logon"
  name="logonForm"
  type="com.Template_Struts_1_2.struts.action.LogonAction"
  scope="request"
  validate="true">
 <forward name="success" path="/page/show.jsp"></forward>
</action>

 


配置解释:
//配置FormBean,type = 包名.类名,指向FormBean的路径
<form-beans>
    <form-bean name="logonForm" type="com.Template_Struts_1_2.struts.form.LogonForm"></form-bean>
</form-beans>

//配置Action映射,type = 包名.类名,指向Action的路径,
<action-mappings>
 <action path="/logon"
   name="logonForm"
   type="com.Template_Struts_1_2.struts.action.LogonAction"
   scope="request"
   validate="true">
  <forward name="success" path="/page/show.jsp"></forward>
 </action>
</action-mappings>

 

1.FormBean必须是org.apache.struts.action.ActionForm或者DynaActionForm的子类
2.Action必须是org.apache.struts.action.Action的子类
3.在配置文件<form-bean>和<action>中type参数 = 包名.类名,指向Form或者Action的路径,千万别写错
4.配置文件<action>参数path必须与页面<html:form>参数action的值一致
5.页面<html:form>参数action值‘xxx.do’在配置文件<action>中则应写为‘/xxx’
6.配置文件<action>参数name必须与<form-bean>参数name值一致
7.配置文件<action>参数scope = 范围,有request和session两种
8.配置文件<action>参数validate = 是否验证数据
9.配置文件<action>参数input = 属性,表明校验方法返回Falsh时,将控制发生到哪里,不写也行,将根据<action>中<forward>跳转


index.jsp全代码如下:


logon.jsp代码如下:


show.jsp的BODY代码如下:


error.jsp的BODY代码如下:


LogonForm代码如下:


LogonAction代码如下:


struts-config.xml配置文件代码如下:

 

其它配置说明:

//单独异常处理配置
<global-exceptions>
    <exception key="error.email.invalid"  type="java.lang.Exception" handler="exceptions.EmailException"/>
</global-exceptions>

1.exceptions.EmailException必须继承org.apache.struts.action.ExceptionHandler而且要覆盖execute方法


//配置控制器
<controller maxFileSize="2M"  contentType = “text/html”  nocache = “false” />

maxFileSize = 上传文件限定大小,只能整数显示,不能有小数点
nocache = 是否缓存,默认为true不缓存
contentType = 发送内容默认格式


//信息资源文件使用
<message-resources parameter="struts.application" key="global" />

parameter = 文件路径 = 包名.文件名
key = 文件标识,不设key属性则为默认资源文件,已设置文件标识的资源文件调用时需要注明标识
 样例:<bean:message key="key.msg.submit" bundle=”global”/>


//配置插件
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
     <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validator.xml" />
</plug-in>

class = 插件类路径
property = 参数名
value = 参数值

 

请问各位高手大大,Struts1.X中Action里的execute()和perform()方法啥关系?
什么时候该用execute?什么时候该用perform?

而且我看了一下Struts1.2.6的源代码,在Action类里面只有execute()却并没有perform()方法的存在,不知道是不是版本问题,有知道的朋友请告诉我,谢谢!

PS:水平有限错误难免,有发现错误的朋友请告诉我,谢谢!

项目下载地址:http://download.csdn.net/source/2472513

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值