一、Struts2入門案例
①引入jar包
②在src下創建struts.xml配置文件
<?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> <!-- 修改文件 tomact不用重啟 --> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <!-- 第一個action --> <action name="HelloWordAction" class="cn.happy.action.HelloWordAction"> <result name="success">index.jsp</result> </action> </package> </struts>
dtd約束條件查找路徑:
③創建HelloWordAction類,實現Action接口,不僅定義了public String execute(),還提供了5個字符串類型的靜態常量。如
success、none、error、input、login
public class HelloWordAction implements Action{ private String name; public String execute() throws Exception { setName("Hello"+name); return "success"; } public String getName() { return name; } public void setName(String name) { this.name = name; }
④配置文件web.xml。將全部請求定位到指定的Struts 2過濾器中
index.jsp頁面:
并引用 taglib指令<%@taglib uri="/struts-tags" prefix="s" %>
注:form表單的action屬性名應該和struts.xml的action一致
<div>
<h1>
<s:property value="name"/>
</h1>
</div>
<div>
<form action="HelloWordAction" method="post">
請輸入你的姓名:
<input name="name" type="text"><br/><br/>
<input type="submit" value="提交">
</form>
</div>
實現效果:
二、實現自動裝配,將action類中的屬性 包裝到一個實體類User。然后在action類中定義私有屬性User,進行封裝。在index.jsp頁面即可使用User對象點出其屬性
三、登錄案例:
實現效果:
四、如何使頁面上還是username,也能實現 自動裝配呢?[模型驅動--ModelDriven]
讓Action實現一個ModelDriven<User>,其次手動實例化User對象,并實現該方法,返回user
五、Struts2訪問ServletAPI對象獲取Session。
分為兩類:①解耦的訪問方式 ②耦合的訪問方式
關鍵代碼:
1、耦合一。
獲取到session并返回一個HttpSession.以及session.setAttribute方法獲取到username
//耦合
private HttpServletRequest request; HttpSession session2 = ServletActionContext.getRequest().getSession(); session2.setAttribute("uname", user.getUsername());
2、耦合二。
實現ServletRequestAware接口,并重寫其方法,定義一個Request屬性并進行封裝
request.getSession().setAttribute("uname", user.getUsername());
3、解耦合一
使用ActionContex類獲取ServletAPI對象對應的Map對象
private Map<String, Object> map;
Map<String, Object> session = ActionContext.getContext().getSession(); session.put("uname",user.getUsername());
4、解耦合二 注入[IOC思想]。實現SessionAware接口,獲取到Map集合
map.put("uname", user.getUsername());
六、struts2常用表單標簽
文章列表