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>

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