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

struts2之Action配置的各项默认值、result配置的各种试图转发类型及为应用指定多个struts配置文件

2014-09-14 01:13 731 查看


1、Action配置的各项默认值

(1)、如果没有为action指定class,默认是ActionSupport。

(2)、如果没有为action指定method,默认执行action中的execute()方法。

(3)、如果没有为action指定result,默认值为success。

   

2、result配置的各种试图转发类型

<result type="">...</result>

其中type的常用类型有:

dispatcher(默认值) ->转发

redirect ->重定向

redirectAction ->重定向的action在别的命名空间下

如:<result type="redirectAction">

          <param name="actionName">helloworld</param>

          <param name="nameSpace">/test</param>

      </result>

plainText ->显示原始文件内容

如:<result type="">

          <param name="location">/xxx.jsp</param>

          <!--指定读取文件的编码-->

          <param name="charSet">UTF-8</param>

      </result>
注意:在result中还可以使用${属性名}表达式访问action中的属性,表达式里的属性名对应action中的属性名

如:<result name="success" type="redirect">/index.jsp?username=${username}</result>

   

3、为应用指定多个struts配置文件

在大部分应用里,随着应用规模的增加,系统中Action数量也大量增加,导致struts.xml配置文件变得非常臃肿。为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。下面的struts.xml通过<include>元素指定多个配置文件:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

  <include file="struts-user.xml"/>

  <include file="struts-order.xml"/>

</struts>

通过这种方式,我们就可以将Struts 2的Action按模块配置在多个配置文件中。

以下为模拟案例

目录结构

    


        

HelloWordAction action类



package com.ljq.action;

import java.net.URLEncoder;

public
class HelloWordAction {
private String msg;
private String username;

public String msg(){

msg =
"我的第一个Struts2应用";
return
"msg";

}

public String list()
throws Exception{
//对中文进行编码
msg =
"我的第一个Struts2应用";
this.username=URLEncoder.encode("林计钦","UTF-8");
return
"list";

}

public String getMsg() {
return msg;

}

public
void setMsg(String msg) {
this.msg
= msg;

}

public String getUsername() {
return username;

}

public
void setUsername(String username) {
this.username
= username;

}

}



       

message.jsp页面



<%@ page language="java"
import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>message</title>

<meta http-equiv="pragma"
content="no-cache">
<meta http-equiv="cache-control"
content="no-cache">
<meta http-equiv="expires"
content="0">

<meta http-equiv="keywords"
content="keyword1,keyword2,keyword3">
<meta http-equiv="description"
content="This is my page">
<!--
<link rel="stylesheet"
type="text/css" href="styles.css">
-->

</head>

<body>
<b>${msg }</b>
</body>
</html>



      

index.jsp页面



<%@ page language="java"
import="java.util.*,java.net.*"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>HelloWord</title>
<meta http-equiv="pragma"
content="no-cache">
<meta http-equiv="cache-control"
content="no-cache">
<meta http-equiv=<
11dd5
span style="color:rgb(0,0,0);">"expires"
content="0">

<meta http-equiv="keywords"
content="keyword1,keyword2,keyword3">
<meta http-equiv="description"
content="This is my page">
<!--
<link rel="stylesheet"
type="text/css" href="styles.css">
-->
</head>

<body>
<%--

<result name="list"
type="redirect">不会显示${msg
}的值
<result name="list"
type="dispatcher">会显示${msg
}的值
--%>
${msg }<br/>
<%--获取url的请求参数
--%>
<%--${param.username }会出现乱码
--%>
${param.username }<br/>
<%=URLDecoder.decode(new String(request.getParameter("username").getBytes("ISO8859-1"),"UTF-8"),"UTF-8")%>
</body>
</html>



     

helloworld_struts.xml子配置文件



<?xml version="1.0"
encoding="UTF-8"
?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"struts-2.0.dtd">
<struts>
<!-- 全局result:有很多时候一个result可供很多action使用,这时可以使用global-results标签来定义全局的result
-->
<package name="base"
extends="struts-default">
<global-results>
<result name="msg">/message.jsp</result>
</global-results>
</package>
<package name="helloWord"
namespace="/helloWord"
extends="base"
>
<!-- 访问路径: http://localhost:8083/struts2_1/helloWord/manage.do -->
<action name="manage"
class="com.ljq.action.HelloWordAction"
method="msg"></action>
<!-- 访问路径: http://localhost:8083/struts2_1/helloWord/listHelloWord.do http://localhost:8083/struts2_1/helloWord/msgHelloWord.do
-->
<action name="*HelloWord"
class="com.ljq.action.HelloWordAction"
method="{1}">
<!-- 注意:在result中还可以使用${属性名}表达式访问action中的属性,表达式里的属性名对应action中的属性名
-->
<result name="list"
type="redirect">/index.jsp?username=${username}</result>
</action>
</package>
</struts>



     

struts.xml配置文件



<?xml version="1.0"
encoding="UTF-8"
?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"struts-2.0.dtd">

<struts>
<!-- 该属性指定需要Struts2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。

如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。 -->
<constant name="struts.action.extension"
value="do,php"
/>
<!--解决乱码
-->
<constant name="struts.i18n.encoding"
value="UTF-8"
/>
<!-- 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭
-->
<constant name="struts.serve.static.browserCache"
value="false"
/>
<!-- 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开
-->
<constant name="struts.configuration.xml.reload"
value="true"
/>
<!-- 开发模式下使用,这样可以打印出更详细的错误信息
-->
<constant name="struts.devMode"
value="true"
/>
<!-- 默认的视图主题
-->
<constant name="struts.ui.theme"
value="simple"
/>
<!--<constant name="struts.objectFactory"
value="spring"
/>-->
<!-- 动态方法调用和使用通配符定义
-->
<!--该属性设置Struts2是否支持动态方法调用,该属性的默认值为true。如果需要关闭动态方法调用,则可设置该为false
-->
<!--<constant name="struts.enable.DynamicMethodInvocation"
value="false"
/>-->
<!--上传文件的大小设置(这里的大小指的是总大小)-->
<!--<constant name="struts.multipart.maxSize"
value="10701096"
/>-->

<!-- 引入
-->
<include file="helloworld_struts.xml"
/>
</struts>

<!--注意:Struts2读取到Struts2.xml的内容后,以JavaBean形式存放在内存中。-->
<!--以后Struts2对用户的每次请求处理将使用内存中的数据,而不是每次都读取Struts2.xml文件-->



              

运行结果

1、访问路径: http://localhost:8083/struts2_1/helloWord/manage.do



2、http://localhost:8083/struts2_1/helloWord/listHelloWord.do



分类: struts2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐