2.1 Struts 2的應用
2.1.1 使用步驟
一、建立web項目,添加jar包,建立helloWorld.jsp頁面
二、建立HelloWorldAction類,用於對用戶的請求做出處理
public class HelloWorld implements Action {
//用戶輸入的姓名
private String name = "";
//向用戶顯示的信息
private String message = "";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@Override
public String execute() throws Exception {
this.setMessage("Hello,"+this.getName()+"!");
return "success";
}
}
三、修改項目配置文件web.xml,將全部請求定位到指定當的Struts 2 過濾器中
<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>
四、建立Struts 2配置文件
Struts.xmll:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.ui.theme" value="simple"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="helloWorld" class="cn.jbit.strutsdemo.HelloWorld">
<result name="success">helloWorld.jsp</result>
</action>
<action name="login" class="cn.jbit.strutsdemo.loginAction">
<result name="loginInfo">loginInfo.jsp</result>
<result name="login">login.jsp</result>
<result name="input">login.jsp</result>
</action>
</package>
</struts>
總結步驟:
一、確認環境
一、將Struts 2框架支持文件引入項目
二、修改工程的web.xml文件,配置過濾器
二、代碼編寫
一、編寫開發處理求求的Action類,實現處理請求的方法,返回一個字符串類型的結果
二、編寫Struts.xml文件,對Action進行配置
三、編寫與Action相關的JSP頁面
2.2 Struts 2訪問servletAPI對象
一、使用ActionContex類獲取ServletPAI對應的Map對象
request:ActionContext ac=ActionContext.getContext();
Map request=(Map)ac.get("request");
session: ActionContext ac=ActionContext.getContext();
Map session=(Map)ac.get("session");
application:ActionContext ac=ActionContext.getContext();
Map application=(Map)ac.get("application");
二、Struts 2 向Action注入ServletAPI對象對應的Map對象
org.apache.struts2.interceptor.RequestAware:向Action實例注入HttpServletRequest對象對應的Map對象
public void setRequest(Map<String,Object>request);
org.apache.struts2.interceptor.SessionAware:向Action實例注入HttpSession對象對應的Map對象
public void setSession(Map<String,Object>Session);
org.apache.struts2.interceptor.ApplicationAware:向Action實例注入ServletContext對象對應的Map對象
public void setApplication(Map<String,Object>Application);
與Servlet API耦合的訪問方式
使用ServletActionContext類獲取ServletAPI對象
HttpServletRequest = public static HttpServletRequest getRequest();
ServletCOntext = public static ServletContext getServletContext();
HttpServletResponse = public static HttpServletResponse getResponse();
使用HttpServletRequest能夠得到HttpSession對象
除了使用ServletActionContext獲取ServletAPI對象,還能夠實現特定的接口實現注入Action實例注入ServletAPI對象
ServletContext :void setServletCOntext(ServletCOntext context);
HttpServletRequest :void serServletRequest(HttpServletRequest request);
HttpServletResponse :void setServletResponse(HttpServletResponse response);
2.3 Struts 2數據校驗
經過繼承ActionSupport類實現數據驗證機制
例: public void validate(){
if(this.getUsername().length()==0||"".equals(this.getUsername())){
addFieldError("name", "用戶名不能爲空");
}
if(this.getPassword().length()==0||"".equals(this.getPassword())){
addFieldError("pwd", "密碼不能爲空");
}
}
2.4 Struts 2標籤
UI標籤
表單標籤:
<s:form></s:form>:獲取相應form的值
<s:textfied></s:textfied>:文本輸入框
<s:password></password>:密碼輸入框
<s:textarea></textarea>:文本域輸入框
<s:radio></s:radio>:單選按鈕
<s:checkbox></s:checkbox>:複選框
<s:submit/>:提交標籤
<s:reset/>:重置標籤
<s:hidden/>:隱藏域標籤
例:<s:form action="login.action">
<div>用戶名:<s:textfield name="username"/></div>
<div>密碼:<s:password name="password"/><br></div>
<div><s:submit value="提交"/></div>
</s:form>
<font color="red"><s:property value="text"/><s:fielderror/></font>
非表單標籤
Ajax標籤
通用標籤
條件標籤:
<s:if>
需執行的代碼
</s:if>
<s:elseif>
需執行的代碼
</s:elseif>
<s:else>
需執行的代碼
</s:else>
迭代標籤:<s:iterator value="集合對象" status="status" id="name">
讀取集合對象並輸出顯示
</s:iterator>
web