框架Struts2第二天學習
Struts2_day02
1.1 今日內容
l Servlet的API的訪問
l Result結果檢視配置
l Struts2的資料封裝
l 複雜型別資料的封裝
l 完成客戶的儲存的操作
1.2 Struts2中的Servlet的API的訪問
1.2.1 完全解耦合的方式訪問Servlet的API
使用ActionContext物件中的方法訪問Servlet的API
1.2.2 使用原生方式訪問Servlet的API
使用ServletActionContext物件的中方法訪問Servlet的API
1.2.3 實現某些介面的方式訪問Servlet
使用實現特定的介面的方式訪問Servlet的API
ServletRequestAware
ServletContextAware
1.3 Result的配置
1.3.1 結果頁面的配置
1.3.1.1 全域性結果頁面
全域性結果頁面:針對一個包下的所有的Action的頁面的跳轉都可以生效。
<!--全域性結果頁面-->
<global-results>
<result >/demo1/success.jsp</result>
</global-results>
1.3.1.2 區域性結果頁面
區域性結果頁面:針對一個Action中的頁面跳轉生效。
<action name="requestDemo1"class="com.csq.struts2.demo1.RequestDemo1Action">
<result>/demo1/demo2.jsp</result>
</action>
1.3.1.3 結果頁面的型別
result標籤的屬性:
name:邏輯檢視的名稱。SUCCESS(預設值) ERROR INPUT NONE LOGIN
type:頁面跳轉的型別。
* dispatcher :預設值。轉發到某個JSP
* redirect :重定向到某個JSP
* chain :鏈。轉發到某個Action
* redirectAction :重定向到某個Action
* stream :檔案下載的時候用到。
1.4 Struts2的資料的封裝
1.4.1 屬性驅動
1.4.1.1 提供屬性的set方法的方式
頁面:
<h1>屬性驅動方式一:提供屬性的set方法的方式</h1>
<form action="${pageContext.request.contextPath }/demo1.action" method="post">
使用者名稱:<input type="text" name="username"/><br/>
密碼:<input type="password" name="password"/><br/>
性別:<input type="radio" name="sex" value="男"/>男
<input type="radio" name="sex" value="女"/>女<br/>
愛好:<input type="checkbox" name="hobby" value="唱歌"/>唱歌
<input type="checkbox" name="hobby" value="喝酒"/>喝酒
<input type="checkbox" name="hobby" value="編碼"/>編碼<br/>
生日:<input type="text" name="birthday"/><br/>
<input type="submit" value="提交"/>
</form>
Action:
public class CustomerDemo1Action extends ActionSupport{
private Stringname;
private Integerage;
private Doublesalary;
private Datebirthday;
public void setName(Stringname) {
this.name =name;
}
public void setAge(Integerage) {
this.age =age;
}
public void setSalary(Doublesalary) {
this.salary =salary;
}
public void setBirthday(Datebirthday) {
this.birthday =birthday;
}
@Override
public String execute() throws Exception {
System.out.println(name);
System.out.println(age);
System.out.println(salary);
System.out.println(birthday);
return NONE;
}
}
1.4.1.2 頁面使用表示式的方式
頁面:
<h1>屬性驅動方式二:表示式的方式</h1>
<form action="${pageContext.request.contextPath }/demo2.action" method="post">
使用者名稱:<input type="text" name="user.username"/><br/>
密碼:<input type="password" name="user.password"/><br/>
性別:<input type="radio" name="user.sex" value="男"/>男
<input type="radio" name="user.sex" value="女"/>女<br/>
愛好:<input type="checkbox" name="user.hobby" value="唱歌"/>唱歌
<input type="checkbox" name="user.hobby" value="喝酒"/>喝酒
<input type="checkbox" name="user.hobby" value="編碼"/>編碼<br/>
生日:<input type="text" name="user.birthday"/><br/>
<input type="submit" value="提交"/>
</form>
Action:
public class CustomerDemo2Action extends ActionSupport{
//在Action中提供封裝的物件的屬性:提供該物件的set和get方法.
private Customer customer;
//一定要有get
public Customer getCustomer() {
return customer;
}
publicvoid setCustomer(Customer customer) {
this.customer = customer;
}
@Override
public String execute() throws Exception {
System.out.println(customer);
return NONE;
}
}
1.4.2 模型驅動
1.4.2.1 模型驅動的方式(推薦)
頁面:
<h1>資料封裝方式三:模型驅動的方式</h1>
<form action="${ pageContext.request.contextPath }/customerDemo3.action" method="post">
姓名:<input type="text" name="name"/><br/>
年齡:<input type="text" name="age"/><br/>
工資:<input type="text" name="salary"/><br/>
生日:<input type="text" name="birthday"/><br/>
<input type="submit" value="提交">
</form>
Action:
public class CustomerDemo3Action extends ActionSupportimplements ModelDriven<Customer>{
private Customer customer = new Customer(); //必須手動建立物件。
//模型驅動使用的方法:
@Override
public Customer getModel() {
return customer;
}
@Override
public String execute() throws Exception {
System.out.println(customer);
return NONE;
}
}
1.4.3 資料封裝型別轉換的錯誤處理
<action name="demo1" class="com.csq.web.action.Demo1Action">
<result name="success">/success.jsp</result>
<result name="input">/demo1.jsp</result>
</action>
1.1 Result的配置
1.1.1 結果頁面的配置
1.1.1.1 全域性結果頁面
全域性結果頁面:針對一個包下的所有的Action的頁面的跳轉都可以生效。
<!-- 全域性結果頁面 -->
<global-results>
<result >/demo1/success.jsp</result>
</global-results>
1.1.1.2 區域性結果頁面
區域性結果頁面:針對一個Action中的頁面跳轉生效。
<action name="requestDemo1" class="com.csq.struts2.demo1.RequestDemo1Action">
<result>/demo1/demo2.jsp</result>
</action>
1.1.1.3 結果頁面的型別
result標籤的屬性:
name:邏輯檢視的名稱。SUCCESS(預設值) ERROR INPUT NONE LOGIN
type:頁面跳轉的型別。
* dispatcher:預設值。轉發到某個JSP
* redirect:重定向到某個JSP
* chain:鏈。轉發到某個Action
* redirectAction:重定向到某個Action
* stream:檔案下載的時候用到。
1.4.4 封裝資料到集合中
以客戶關係後臺系統為例
1.4.5 新增客戶思路分析:
1.4.6 修改客戶回顯資料--思路分析