1. 程式人生 > >Struts2基本配置和使用

Struts2基本配置和使用

setattr port execute utf 失敗 找到 t對象 request對象 col

1.首先在web.xml裏面配置一個Struts2的核心過濾器 這樣Struts2才能開始工作

<!-- 配置struts2的核心過濾器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>
</filter-mapping>

2.在工程的src目錄下建一個struts.xml 為Struts2的核心配置文件

<?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>

<!--配置struts2包 (struts2中所有的action都放置在包內) -->

<package name="名字任意 不重復就行" extends="struts-default" namespace="/">

<!--配置action * 號代表通配符 {1}代表第一個通配符的值 當值和action類中的方法名相同 就會執行對應的方法 -->

<action name=" 一般取action類的簡短類名_* " class="action類的完整類名" method="{1}">

<!-- 比如登錄頁面 我要請求UserAction中的登錄方法 請求地址可以這樣寫 User_Login.action 這樣struts2會找到對應的action類並執行對應方法 -->

<!--配置結果 當action類中的方法返回值和name的值相同的時候 會執行這個<result> 跳轉到對應頁面 默認是服務器轉發跳轉 可以通過設置 type的值 常用取值如下

默認是dispatcher 轉發到某個頁面

redirect 重定向到某個頁面

chain 轉發到某個action

redirectAction 重定向到某個 action

-->

<result name="和action類中方法的返回值一致" >頁面路徑 , 如果是跳轉到別的action 就是請求別的action的請求路徑</result>

</action>

</package>

</struts>

3.action類的寫法

定義一個類繼承ActionSupport類 然後就可以寫方法,方法的返回值必須是String 如果這個方法處理完成不跳轉頁面 可以 return NONE;

這是ActionSupport類的一個常量 代表不跳轉頁面

struts2可以幫我們接收從頁面傳遞過來的參數 並且封裝成對應的對象,前提是參數名必須和對象的屬性名一致 一般采用模型驅動的方法封裝

action類繼承一個ModelDriven<要封裝對象的類>接口 重寫getModel()方法 然後定義一個屬性 就是對象的實例 然後在getModel()方法中返回 這個實例

struts2就會自動幫我們將頁面傳遞的值 封裝到這個對象 在這個類中就可以使用這個對象 進行操作 栗子 如下:

public class UserAction extends ActionSupport implements ModelDriven<User> {
   private User user=new User();

@Override public User getModel() { // TODO Auto-generated method stub return user; }

struts2中如果想使用request和respon或者session之類的對象 可以通過 ServletActionContext類的靜態方法getRequest()方法獲得request對象

通過getResponse()方法 可以得到respon對象 可以進行一些存取值的操作

這是一個簡單的登錄方法 返回值可以在Struts2的核心配置文件中的action下配置result標簽 name值和這個方法的返回值相同就可以跳轉頁面了

如果這個方法不需要跳轉頁面 直接 return NONE; 這是ActionSupport類的常量 代表不跳轉頁面

public String login(){
    User u = userService.userLogin(user);
        if(u==null){
ServletActionContext.getRequest().getSession().setAttribute("messg", "登錄失敗,用戶名或密碼錯誤!");
        return "loginFail";
        }else{
            ServletActionContext.getRequest().getSession().setAttribute("user", u);
            return "loginSuccess";
        }
    
    }

這些就是struts2的基本使用 當然還有ongl表達式,值棧存取值和配置攔截器 這些功能 我就沒寫了,因為struts2這個框架過時了 而且還被爆出有安全漏洞

現在已經有更加完美的解決方案 就是SpringMVC

Struts2基本配置和使用