struts的配置介绍

1.定义全局result

当多个action中都使用到了相同视图,这时我们应该把result定义为全局视图。struts1中提供了全局forward,struts2中也提供了相似功能:
<package ....>
<global-results>
<result name="message">/message.jsp</result>
</global-results>
</package>
经过上面的定义后就可以在同一个包内进行全局result了。如果想在整个web应用中都进行全局转发,这里就得使用extends了。大概思路如下:

<package name="base" extends="struts-default">
<global-results>
<result name="message">/message.jsp</result>
</global-results>
</package>

<package name="guo" extends="base">
....
</package>



2.action中的result的各种转发类型

result中可以配置转发类型,常用的类型有dispatcher(默认),redirect,redirectAction,plainText。

1)dispatcher

默认就是它

2)redirect

设置result的type为redirect,我们可以发现浏览器的地址栏发生了改变,他为重定向的方式

<action name="redirect">
?<result type="redirect">
?/redirect.jsp
?</result>
</action>

在真实的需求中我们往往需要在重定向的同时传递参数,下面我用两个例子来说明。

一.传递英文

A.action中

public class User extends ActionSupport{
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
username="guolei";
System.out.println(username);
return "redirect";
}
}


B.struts.xml中
<action name="redirect" class="action.User">
<result type="redirect" name="redirect">
/redirect.jsp?username=${username}
</result>
</action>
C.redirect.jsp中

<body>
重定向${param.username }
</body>

传递英文比较简单,需要提醒自己的是不要忘记在jsp页面中如何用EL表达式接受参数

二.传递中文

记住永远不要在浏览器的地址栏中传递中文。在传递中文前先进行编码


A.action中

public class User extends ActionSupport{
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
username=URLEncoder.encode("郭蕾","utf-8");//先进行编码
System.out.println(username);
return "redirect";
}
}


B.struts.xml中
<action name="redirect" class="action.User">
<result type="redirect" name="redirect">
/redirect.jsp?username=${username}
</result>
</action>
在这里使用了类似于el表达式的方式传值,${username}其中username为action中定义的
C.redirect.jsp中

<body>
重定向
<%String s=request.getParameter("username");
s=new String(s.getBytes("iso8859-1"),"utf-8");
s=URLDecoder.decode(s,"utf-8");
out.println(s);
%>
</body>


重定向中传递中文先进行编码,在jsp页面中先接受参数,然后对其进行字节分解,然后进行解码。


3)redirectAction
他经常用于防止重复提交,比方说在增加完用户之后要显示列表

一.在同一个包中

<action name="redirectAction" class="action.User">
<result type="redirectAction" name="redirect">
show
</result>
</action>
把show写为要重定向到得action的名字

二.不在同一个包中

<package name="study1" extends="struts-default">
<action name="redirectAction" class="action.User">
<result type="redirectAction" name="redirect">
<param name="actionName">show</param>//这里写对应的action名字
<param name="namespace"></param>//这里写命名空间
</result>
</action>
</package>
4)plainText

plaintext:显示原始文件内容,例如:当我们需要原样显示jsp文件源代码 的时候,我们可以使用此类型。
<result name="source" type="plainText ">
<param name="location">/xxx.jsp</param>?
<param name="charSet">UTF-8</param><!-- 指定读取文件的编码 -->
</result>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章