02Struts2配置详解
Struts 2 Action 2-2
/user!register.action /user!login.action
动态方法调用
作用:减少Action数量 public class UserAction implements Action { 调用UserAction的register()方法 调用UserAction的login()方法 … 使用:actionName!methodName.action public String login() { … 禁用:将属性strutsenableDynamicMethodInvocation设臵为 } false public String register() { … } <action name="user" class="erAction"> } <result name="login">/page/manage.jsp</result> <result name="register">/page/success.jsp</result> <result name="login_input">/page/login.jsp</result> <result name="register_input">/page/register.jsp</result> <result name="error">/page/error.jsp</result> </action> 演示示例:动态方法调用
第二章
Struts2配臵详解
回顾与作业点评
使用Struts 2 开发程序的基本步骤是什么?
Struts 2中如何获取Servlet的session对象? Struts 2 表单标签和普通HTML表单标签有什么 不同之处?
本章目标
掌握Struts 2的基本架构 掌握struts.xml中的各项内容 掌握action元素与result元素的配臵 掌握Struts 2中文乱码的解决
Struts 2 Action 2-3
public class UserAction implements Action { /register.action /login.action … method属性 public String login() { … 优点:避免动态方法调用的安全隐患 } 调用UserAction的register()方法 调用UserAction的login()方法 public String register() { 缺陷:导致大量的Action配臵 … <action name="login" } class="erAction" method="login"> } <result>/page/manage.jsp</result> <result name="input">/page/login.jsp</result> <result name="error">/page/error.jsp</result> </action> <action name="register" class="erAction" method="register"> <result>/page/success.jsp</result> <result name="input">/page/register.jsp</result> <result name="error">/page/error.jsp</result> </action> 演示示例:使用method属性
加载顺序
struts-default.xml—>struts-plugin.xml —>struts.xml
练习——中文乱码解决
需求说明:
解决中文乱码问题
提示:
<constant name="struts.i18n.encoding" value="UTF-8">完成时间:10分钟源自Struts 2配置文件2-2
struts.xml
constant元素
配臵常量,可以改变Struts 2框架的一些行为 name属性表示常量名称,value属性表示常量值
… <struts> <constant name="struts.i18n.encoding" value="UTF-8"/> <constant name="struts.ui.theme" value="simple"/> <package name="" namespace="" extends=""> <action name="" class=""> <result name=""></result> </action> </package> </struts>
Struts 2基本结构2-1
租房网登录程序运行流程图
login.jsp
核心控制器
Action
Result
manager.jsp
Struts 2基本结构2-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> Struts 2.0版本的核心控制器为 org.apache.struts2.dispatcher.FilterDispatcher
<struts> <package name="default" extends="struts- default“> <default-action-ref name="defaultAction"/ > <action name="defaultAction" class="erAction method="defaultMethod" > <result>/error.jsp</result> </action> </package> </struts> 如果请求的Action不存在, 将转发到error.jsp
… <struts> <constant name="" value=""/> <package name="default" namespace="/" extends="struts-default"> <action name="" class=""> <result name=""></result> </action> </package> </struts> 除非有令人信服原因,自定义的包应该总是扩展struts-default包
Struts 2基本结构2-4
Result
作用:调度视图以哪种形式体现给客户端(Action处理结 束后,系统下一步将要做什么) name属性表示result逻辑名,result元素的值指定对应 的实际资源位臵
… <struts> <package name="default" namespace="/" extends="struts-default"> <action name="login" class="cn.jbit.hrent.action.LoginAction"> <result name="success">/page/manage.jsp</result> <result name="input">/page/login.jsp</result> <result name="error">/page/error.jsp</result> </action> </package> </struts>
/loginUser.action