Struts2基本配置和使用
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>
</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基本配置和使用