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

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: