第二章详细配置_第1页
第二章详细配置_第2页
第二章详细配置_第3页
第二章详细配置_第4页
第二章详细配置_第5页
已阅读5页,还剩19页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Struts2配置详解第二章Struts2基本结构4-1登录程序运行流程图login.jsp核心控制器ActionResultmanager.jspStruts2配置文件4-3struts.xmlpackage元素

包的作用:简化维护工作,提高重用性包可以"继承”已定义的包,并可以添加自己包的配置name属性为必需的且唯一,用于指定包的名称extends属性指定要扩展的包namespace属性定义该包中action的命名空间

,为可选属性…<struts> <constantname=""value=""/>

<packagename="default"namespace="/"extends="struts-default"> <actionname=""class=""> <resultname=""></result> </action>

</package></struts>除非有令人信服原因,自定义的包应该总是扩展struts-default包Struts2基本结构4-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>Struts2.0版本的核心控制器为org.apache.struts2.dispatcher.FilterDispatcherStruts2基本结构4-3Action开发Action实现Action接口继承ActionSupport类普通的Java类配置Action…<struts> <packagename="default"namespace="/"extends="struts-default">

<actionname="login"class="cn.jbit.hrent.action.LoginAction">

<resultname="success">/page/manage.jsp</result> <resultname="input">/page/login.jsp</result> <resultname="error">/page/error.jsp</result> </action> </package></struts>Struts2基本结构4-4Result作用:调度视图以哪种形式体现给客户端(Action处理结束后,系统下一步将要做什么)name属性表示result逻辑名,result元素的值指定对应的实际资源位置…<struts> <packagename="default"namespace="/"extends="struts-default"> <actionname="login"class="cn.jbit.hrent.action.LoginAction"> <resultname="success">/page/manage.jsp</result> <resultname="input">/page/login.jsp</result> <resultname="error">/page/error.jsp</result>

</action> </package></struts>Struts2配置文件4-1struts.xml核心配置文件,主要负责管理Action通常放在WEB-INF/classes目录下,在该目录下的struts.xml文件可以被自动加载…<struts> <constantname=""value=""/> <packagename=""namespace=""extends=""> <actionname=""class=""> <resultname=""></result> </action> </package></struts>Struts2配置文件4-2struts.xmlconstant元素配置常量,可以改变Struts2框架的一些行为name属性表示常量名称,value属性表示常量值

…<struts>

<constantname="struts.i18n.encoding"value="UTF-8"/>

<constantname="struts.ui.theme"value="simple"/>

<packagename=""namespace=""extends=""> <actionname=""class=""> <resultname=""></result> </action> </package></struts>常见constant元素<!--指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法-->

<constantname="struts.i18n.encoding"value="UTF-8"/>

<!--

该

属性指定需要Struts2处理的请求后缀,该属性的默认值是action,即

所有匹配*.action的请求都由Struts2处理。如

果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开-->

<constantname="struts.action.extension"value="do,action"/>

<!--设

置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好

关闭-->

<constantname="struts.serve.static.browserCache"value="false"/>

<!--当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生

产环境下使用),开发阶段最好打开-->

<constantname="struts.configuration.xml.reload"value="true"/>

<!--开

发模式下使用,这样可以打印出更详细的错误信息-->

<constantname="struts.devMode"value="true"/>

<!--默

认的视图主题,该属性的默认值是xhtml-->

<constantname="struts.ui.theme"value="simple"/>

Constant里面的配置的位置struts2-core-2.1.XXX.jar\org\apache\struts2pertiesStruts2配置文件4-4struts-default.xmlStruts2默认配置文件,会自动加载struts-default包在struts-default.xml文件中定义struts-plugin.xmlStruts2插件使用的配置文件

如果不开发插件,不需要编写该配置文件加载顺序struts-default.xml—>struts-plugin.xml —>struts.xml—>web.xml练习——租房网中文乱码解决需求说明:解决中文乱码问题

提示:<constantname="struts.i18n.encoding"value="UTF-8">Struts2

Action5-1Action的作用封装工作单元数据转移的场所返回结果字符串publicclassHelloWorldActionimplementsAction{ privateStringname=""; privateStringmessage=""; publicStringexecute(){ this.setMessage("Hello,"+this.getName()+"!"); returnSUCCESS; } //...省略setter/getter方法}Struts2

Action5-2动态方法调用作用:减少Action数量使用:actionName!methodName.action禁用:将属性strutsenableDynamicMethodInvocation设置为falsepublicclassUserActionimplementsAction{ … publicStringlogin(){

… } publicStringregister(){

… }}<actionname="user"class="cn.jbit.houserent.action.UserAction"> <resultname="login">/page/manage.jsp</result> <resultname="register">/page/success.jsp</result> <resultname="login_input">/page/login.jsp</result> <resultname="register_input">/page/register.jsp</result> <resultname="error">/page/error.jsp</result></action>调用UserAction的login()方法

/user!login.action

调用UserAction的register()方法

/user!register.action

演示示例:动态方法调用Struts2

Action5-3method属性优点:避免动态方法调用的安全隐患缺陷:导致大量的Action配置

publicclassUserActionimplementsAction{ … publicStringlogin(){

… } publicStringregister(){

… }}<actionname="login" class="cn.jbit.houserent.action.UserAction"method="login"> <result>/page/manage.jsp</result> <resultname="input">/page/login.jsp</result> <resultname="error">/page/error.jsp</result></action><actionname="register" class="cn.jbit.houserent.action.UserAction"method="register"> <result>/page/success.jsp</result> <resultname="input">/page/register.jsp</result> <resultname="error">/page/error.jsp</result></action>调用UserAction的login()方法

/login.action

调用UserAction的register()方法

/register.action

演示示例:使用method属性Struts2

Action5-4通配符(*)的使用另一种形式的动态方法调用<actionname="*User" class="cn.jbit.houserent.action.UserAction"method="{1}"> <result>/page/{1}_success.jsp</result> <resultname="input">/page/{1}.jsp</result> <resultname="error">/page/error.jsp</result></action>method="login"/page/login_success.jsp/page/login.jsp

/loginUser.action

/registerUser.action

method="register"/page/register_success.jsp/page/register.jsp演示示例:使用通配符配置ActionStruts2

Action5-4通配符(*)的使用最常用的例子<actionname="*_*" class="cn.jbit.houserent.action.{1}Action"method="{2}"> <result>/page/{1}_{2}_success.jsp</result></action>Struts2

Action5-5配置默认Action如果没有一个Action匹配请求,默认Action将被执行通过<default-action-ref…/>元素配置默认Action<struts>

<default-action-refname="defaultAction"/> <packagename="default"extends="struts-default"> <actionname="defaultAction"> <result>error.jsp</result> </action> </package></struts>如果请求的Action不存在,将转发到error.jsp省略class属性,将使用ActionSupport类Result配置3-1常用结果类型

dispatcher类型默认结果类型,后台使用RequestDispatcher()转发请求

redirect类型

后台使用的sendRedirect()将请求重定向至指定的URLredirectAction类型

主要用于重定向到Action<actionname="login"class="cn.jbit.hrent.action.LoginAction"> <resultname="success"type="redirectAction">manage</result>

<resultname="error"type="redirect">error.jsp</result>

<resultname="input"type="dispatcher"

>login.jsp</result></action><actionname="manage"class=="cn.jbit.hrent.action.UserAction"

> …</action>Result配置3-2动态结果配置时不知道执行后的结果是哪一个,运行时才知道哪个结果作为视图显示给用户publicclassUserActionextendsActionSupport{ privateString

nextDispose; publicStringlogin(){ ...

if(user.isManager()){

nextDispose="manager"; }else{

nextDispose="common"; } returnSUCCESS; } publicStringgetNextDispose(){ returnnextDispose; } ...}<struts> <packagename="default"extends="struts-default"> <actionname="login" lass="cn.jbit.houserent.action.UserAction"method="login">

<resulttype="redirectAction">${nextDispose}</result> <resultname="error">/page/error.jsp</result> </action> <actionname="common" class="cn.jbit.houserent.action.CommonUserAction"> … </action> <actionname="manage" class="cn.jbit.houserent.action.ManagerAction"> ... </action> </package></struts>nextDispose要在Action中存在,并且提供其getter方法

演示示例:使用动态结果Result配置3-3全局结果全局结果可满足一个包中多个Action共享一个结果<struts>

<default-action-refname="defaultAction"/> <packagename="default"extends="struts-default">

<global-results>

<resultname="error

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论