struts配置
2016-05-12 21:47
471 查看
struts2的Action开发的几种方法
继承ActionSupport类
public class UserAction2 extends ActionSupport { // Action中业务处理方法 public String login() { System.out.println("UserAction.login()"); // return "success"; return SUCCESS; } }
实现Action接口
public class UserAction3 implements Action { // Action中业务处理方法 public String login() { System.out.println("UserAction.login()"); return "success"; } @Override public String execute() throws Exception { return null; } }
不继承类也不实现接口
public class UserAction { private String userName; public void setUserName(String userName) { this.userName = userName; } // Action中业务处理方法 public String login() { System.out.println("UserAction.login()" + userName); return "login"; } public String register() { System.out.println("register()" + userName); return "register"; } }
配置文件的通配符
在struts配置信息中,可以用*与{1}来优化配置
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="config" namespace="/" extends="struts-default" abstract="false"> <!-- <action name="login" class="cn.itcast.a_config.UserAction" method="login"> <result name="success">/index.jsp</result> </action> <action name="register" class="cn.itcast.a_config.UserAction" method="register"> <result name="success">/index.jsp</result> </action> --> <!-- 使用通配符优化上面的步骤 --> <!-- http://localhost:8080/struts02/user_login --> <action name="user_*" class="cn.itcast.a_config.UserAction" method="{1}"> <result name="{1}">/{1}.jsp</result> </action> </package> </struts>
struts中路径匹配原则
<struts> <package name="config" namespace="/user" extends="struts-default" abstract="false"> <action name="user_*" class="cn.itcast.a_config.UserAction" method="{1}"> <result name="{1}">/{1}.jsp</result> </action> </package> </struts>
访问路径: http://localhost:8080/struts02/user/user_login 正确 访问路径: http://localhost:8080/struts02/user/a/b/user_login 正确 访问路径: http://localhost:8080/struts02/a/b/user/user_login 错误 分析: http://localhost:8080/struts02/user/a/b/user_login Tomcat Localhost 找到访问哪一台机器 8080 找到Tomcat服务器 struts02 找到项目名称 /user/a/b 先看有没有这个名称空间,没找到,继续向下;找到就返回 /user/a 先看有没有这个名称空间,没找到,继续向下;找到就返回 /user 先看有没有这个名称空间,没找到,继续向下;找到就返回 / 默认名称空间,还没找到,报错!找到就返回
struts常量
struts中默认访问后缀: struts1中默认访问后缀是*.do struts2中默认访问后缀是*.action 如何修改默认访问后缀? 1. struts2的.action访问后缀在哪里定义? struts2-core-2.3.4.1.jar/org.apache.struts2/default.properties文件中有
struts.action.extension = action,,
2.在struts.xml中通过配置常量修改
<struts> <!-- 一、全局配置 --> <!-- 1. 修改Struts默认的访问后缀 --> <constant name="struts.action.extension" value="action,do,"></constant> </struts>
上述配置指定访问后缀为action/do或没有访问路径都可以
struts2中常用的常量
1. 指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法 和freemarker 、velocity的输出
<constant name="struts.i18n.encoding" value="UTF-8"/>
2. 自定义后缀修改常量
<constant name="struts.action.extension" value="do"/>
3. 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭
<constant name="struts.serve.static.browserCache" value="false"/>
4. 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开
<constant name="struts.configuration.xml.reload" value="true"/>
5. 开发模式下使用,这样可以打印出更详细的错误信息
<constant name="struts.devMode" value="true" />
6. 默认的视图主题
<constant name="struts.ui.theme" value="simple" />
7. 与spring集成时,指定由spring负责action对象的创建
<constant name="struts.objectFactory" value="spring" />
8. 该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为 false
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
9. 上传文件的大小限制
<constant name="struts.multipart.maxSize" value=“10701096"/>
动态方法
动态方法调用语法: actionName+! 即为动态与法调用
<!-- 动态方法调用: http://locahost:8080/struts02/user!login --> <action name="user" class="cn.itcast.b_config2.UserAction"> <result name="success">/index.jsp</result> </action>
全局跳转视图配置、配置的各项默认值
全局视图配置
<!-- 配置全局跳转视图 --> <global-results> <result name="success">/index.jsp</result> </global-results> <action name="test" class="cn.itcast.b_config2.TestAction" method="execute"> <!-- 返回结果标记success对应的页面再当前action中没有配置, 所以会去找全局配置有是否有success标记对应的页面 --> </action>
配置各项默认值
<!-- 配置各项默认值 --> <!-- name 只配置了访问路径名称 class 默认执行的action在struts-default有配置 <default-class-ref class="com.opensymphony.xwork2.ActionSupport" /> method 默认为execute 默认的方法execute返回值为success,对应的页面去全局视图找。 --> <action name="test"></action> <!-- 什么情况不配置class? 即处理的aciton --> <!-- 答案: 当只是需要跳转到WEB-INF下资源的时候。 --> <action name="test2"> <result name="success">/WEB-INF/index.jsp</result> </action>
相关文章推荐
- 第一道题 :A+B Problem
- JAVA005-数组
- android工程eclipse转移至android studio中的问题
- 第一章 JAVA入门(Eclipse续集)
- 第一章 JAVA入门(Eclipse简介)
- JAVA环境变量配置和常用DOS命令
- JAVA基础部分(一)
- Java垃圾收集器
- myeclipse显示代码行数
- 为什么Maven会更改Eclipse JDK设置
- Java多线程和线程池
- Java多线程和线程池
- Java多线程和线程池
- Java多线程和线程池
- spring在web容器启动时执行初始化方法
- 搭建Struts2+Spring+Hibernate三大框架的步骤
- JVM调优Demo(三)合适的Survivor
- 25个经典的Spring面试问答
- java多线程-线程同步
- Spring 计划