1. 程式人生 > >框架Struts2第二天學習

框架Struts2第二天學習

Struts2_day02

1.1 今日內容

l Servlet的API的訪問

Result結果檢視配置

Struts2的資料封裝

l 複雜型別資料的封裝

l 完成客戶的儲存的操作

1.2 Struts2中的ServletAPI的訪問

1.2.1 完全解耦合的方式訪問ServletAPI

使用ActionContext物件中的方法訪問Servlet的API

 

1.2.2 使用原生方式訪問ServletAPI

使用ServletActionContext物件的中方法訪問Servlet的API

1.2.3 實現某些介面的方式訪問Servlet

API

使用實現特定的介面的方式訪問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中提供封裝的物件的屬性:提供該物件的setget方法.

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 修改客戶回顯資料--思路分析