1.struts入门示例
2.struts.xml配置
2.1 简单配置介绍
<struts>
<!-- name:包名称,用于区分不用的包 -->
<!-- extends:继承其他包,struts-default定义了一系列拦截器操作 -->
<!-- namespace:命名空间,一般/即可,http://localhost:8080/Struts02/命名空间值/studentAction -->
<package name="student" extends="struts-default" namespace="/">
<!-- 一个包下可以定义多个action -->
<!-- name:action名称,网址访问时用到 -->
<!-- class:action类的完整路径 -->
<!-- method:指定要调用action类的指定方法 -->
<action name="studentAction" class="com.action.StudentAction" method="test">
<!-- 一个action可以有多个result,根据name值和action方法返回值进行匹配指定result -->
<!-- name:action类调用方法返回的结果值 -->
<!-- result标签中包含的值是跳转到的页面 -->
<!-- type表示跳转类型。
dispathcher转发视图页,默认值;
redirect重定向视图页
redirectAction重定向action
chain转发action
stream返回结果是流,一般用于ajax和文件下载
-->
<result name="success" type="dispathcher">/success.jsp</result>
</action>
</package>
</struts>
2.2 动态调用Action多个方法
- 使用通配符调用指定Action指定方法
<!-- 网址:/Struts02/updateStudent 表示访问StudentAction类的update()方法-->
<!-- 网址:/Struts02/addStudent 表示访问StudentAction类的add()方法-->
<!-- 网址:/Struts02/xxxStudent 表示访问StudentAction类的xxx()方法-->
<!-- action的name一般 “*类名” ,表示匹配以Student结尾的action,*一般代表方法名 -->
<!-- method属性表示要执行的方法名,{1}表示*匹配的值 -->
<action name="*Student" class="com.action.StudentAction" method="{1}">
<!-- 访问StudentAction类的方法后可以匹配值{1}跳转到指定页面 -->
<!-- 如果update方法返回success,则跳转到update_success.jsp -->
<!-- 如果add方法返回success,则跳转到add_success.jsp -->
<!-- 如果xxx方法返回success,则跳转到xxx_success.jsp -->
<result name="success">/{1}_success.jsp</result>
</action>
- 使用路径调用指定Action类的指定方法
<struts>
<!-- 开启动态方法常量配置 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<package name="student" extends="struts-default" namespace="/">
<!-- 网址:/Struts02/student!update 表示访问StudentAction类的update()方法 -->
<!-- 网址:/Struts02/student!add 表示访问StudentAction类的add()方法-->
<!-- 网址:/Struts02/student!xxx 表示访问StudentAction类的xxx()方法-->
<!-- 路径语法:action名!方法名 action名就是name值 -->
<!-- 这里不再需要设置method值 -->
<action name="student" class="com.action.StudentAction" >
<result name="update_success">/update_success.jsp</result>
<result name="add_success">/add_success.jsp</result>
<result name="xxx_success">/xxx_success.jsp</result>
</action>
</package>
</struts>
2.3 常量配置
- 配置项参考struts2-core.jar→org.apache.struts2→default.properties
<struts>
<!-- 把struts的框架的字符集编码改成“UTF-8” -->
<constant name="struts.i18n.encoding" value="UTF-8" />
<!-- 把开发模式设为true,页面显示的错误信息更直观 -->
<constant name="struts.devMode" value="true"/>
<!-- 修改核心控制器拦截请求路径的后缀名 -->
<constant name="struts.action.extension" value="action,,"/>
</struts>
2.4 配置默认Action
<package name="student" extends="struts-default" namespace="/">
<!-- 当在namespace下找不到Action时,会自动找default-action-ref指定的默认Action -->
<default-action-ref name="defaultAction"></default-action-ref>
<!-- 这里action的name要与default-action-ref一致,代表默认Action -->
<action name="defaultAction" class="com.action.DefaultAction" method="notFound">
<result name="404">/404.jsp</result>
</action>
<!-- 此处省略其他Action -->
</package>
2.5 全局结果
<package name="default" namespace="/" extends="struts-default">
<!-- 此处省略其他action -->
<!-- 如果其他action中的result的name值与全局结果的name值相同时,优先匹配action的result -->
<global-results>
<result name="index" >/welcome.jsp</result>
</global-results>
</package>
2.6 struts.xml分模块开发
<struts>
<!-- 主配置文件可以设置一些全局结果和默认Action -->
<!-- 其他子模块的配置需要用主配置的全局结果、默认Action等时,子模块配置可以继承主模块配置的包名extends="struts-global" -->
<package name="struts-global" namespace="/" extends="struts-default">
</package>
<!-- 引入其他子模块的struts配置文件 -->
<include file="struts_student.xml"></include>
<include file="struts_grade.xml"></include>
</struts>