您的位置:首页 > 编程语言 > Java开发

struts2工作原理及创建步骤

2012-08-18 00:40 351 查看
Strust2 :

创建步骤: 1.导包

struts2-core-2.1.8.1.jar :Struts 2框架的核心类库

xwork-core-2.1.6.jar :XWork类库,Struts 2在其上构建

ognl-2.7.3.jar :对象图导航语言(Object Graph Navigation Language), struts2框架通过其读写对象的属性

freemarker-2.3.15.jar :Struts 2的UI标签的模板使用FreeMarker编写

commons-logging-1.1.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。

commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后需要加入此文件

commons-io-1.3.2.jar,上传文件依赖的jar包

2.配置web.xml文件.

即: <!-- 配置过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<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>

1. 配置struts.xm文件放在src目录下:通过struts.xm文件通知struts框架的进行业务处理.

同web.xml文件通知web服务器.

即: <!-- 声明唯一的包名,主要用户装配aciton
-->
<struts>

<package
name="default"/> <!—包名-->

<action name=" HelloWorldAction"
class="cn.web.itcast. HelloWorldAction "
method="helloMethod"
/> <!—加载时所需的类的名称及类所在的路径-->
</struts>
2. 部署web服务器,通知浏览器访问.

部署web应用时, StrutsPrepareAndExecuteFilter类就已经被实例化,相关的文件也加载形成javaBean对象

Struts-default.xml(框架),struts.xml,每次部署web应用时,都会加载最新的xml到内存中的javaBean对象中,javaBean主要封装的是配置strust.xml文件中的属性如(<action>标签中的name,method,class属性).

访问方式: /Package中的namespace属性值/action中name属性

5,如果项目中,你要使用框架默认的Action,

struts2的默认action是ActionSupport类,如果要用它,必须继承struts2的"struts-default"包

即:需要继承struts-default包.此时调用的是struts-default包中默认的excecut()方法,通过success.jsp页面回显示信息.
此时需要配置<result>,并指明属性name=”execute()的返回字符串”,访问路径
需要在struts.xml文件中配置如下信息:

<package name = “default”
extends="struts-default">

<action name=” HelloWorldAction(类名)”/>

<result
name="success(方法名)"
type="dispatcher(跳转页面方式)">
/WEB-INF/success.jsp(访问路径)
</result>

</package>

此时可以直接访问: http://127.0.0.1:8080/day32/HelloWorldAction

6.转发:在struts.xml文件中配置如下代码:

<struts><!--
声明唯一的包名,主要用户装配aciton
namespace为包名的命名空间-->
<package
name="default"
namespace="/"
extends="struts-default">

<default-action-ref name="HelloWorldAction"/><!—错误utl处理路径-->
<action
name=" HelloWorldAction" >

<result name="success(转发的文件名)"
type="dispatcher(跳转页面的方式)">
/WEB-INF/success.jsp(转发的页面)

</result>
</action>
</package>
</struts>

7.配置错误URL路径的处理方式:

<default-action-ref name="HelloWorldAction"/>,类似于缺省Servlet。

默认的url路径主要是在当访问的路径不存在是,通过默认的路劲找到默认的类,然后通过<result
name=”success” type=”dispater”>标签中指定的路径名和路径访问seccess.jsp显示信息.

1).如果不配置method属性,默认是execute()方法,前提是在程序员自己定义的Action类中有excetue()方法如果没有该方法则会出错(404),是因为在访问时默认的类找不到方法.
如果定义的类中没有该方法execute()方法,则在<action>标签中一定要写属性method=”方法名”
.

2) <result>标签中type属性可以不写,默认是转发dispater

3) <result>标签中不配置name属性,默认是success

8访问Action可以有扩展名,扩展名默认是.action(小写),也可以使用无扩展名的访问路径.

可以通过自己手动在struts.xml中配置标签的扩展名:如下

<constant name="struts.action.extension" value="action,qq,xx,,"/>

可以在src/目录下,写一个名字struts.properties的必属性文件,去[覆盖]系统default.properties文件中的属性参数
, 属性文件配置:
struts.action.extension=”action,aa,bb,,”

当strust.properties文件和default.properties文件内容突冲时,strtus.properties起决定作用

9项目中,可以使用strust.properties或struts.xml文件,配置扩展名等相关属性参数,struts.properties文件起决定作用

程序员自定的文件,会覆盖框架的默认配置文件(default.properties)

10. strust2框架中,可以通过总的struts.xml文件,加载各个模块的分xml文件,总的struts.xml文件有且必须放在src目录下,其它xml文件,放置任意类路径下,即src目录下。

<struts>

<include file="cn/web/struts/type/type-struts.xml"/>

<include file="cn/web/struts/validate/user-validate.xml"/>

</struts>

11.struts2中的action采用非单例模式(原型模式),每次请求,都会产生一个实例。

struts2数据格式验证

1)类继承ActionSupport类,重写validate()方法或添加validateLoginMethod()方法

2)在struts.xml文件的某个<action/>标签中,配置input属性值,表示出错后,转在的页面

3)在页面中通过如下二种方法将,错误消息按指定的格式输出

>><s:fielderrors/>

>><s:form/>和<s:textfield/>和<s:password/>

Action:特有的标签校验表单提交的数据

<s:form
action="/RegisterAction"
method="post">
<s:textfield
label="用户名"
name="username"/>

<s:password
label="密码"
name="password"/>
<s:submit
value="注册"/>
</s:form>

4)validate()方法,是检证UserAction中所有的业务方法,即与execute()同样签名的方法,例如registerMethod()

5)validateLoginMethod()方法,可以争对UserAction中的loginMethod()业务方法验证,其它方法不验证

6)当validate()和validateLoginMethod()方法同时存在时,先执行validateLoginMethod()方法,再执行validate()方法,如果验证成功,到达值得的LoginMethod()方法的中的return
“success” 返回文件名,过滤器根据该文件名查找显示信息的文件路径(如:/WEB-INF/success.jsp),最终以标签<s:
property value=”username”>获取显示信息,

7)只有当validateLoginMethod()方法和validate()方法验证都成功了,才能执行UserAction的业务方法loginMethod()到达指定的页面显示结果,否则都会转发到struts.xml中的<result>标签的input属性所指明的页面

例:

<result
name="input"
type="dispatcher">
/WEB-INF/success.jsp
</result>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: