框架Struts2第二天学习

Struts2_day02
1.1 今日内容
ServletAPI的访问
Result结果视图配置
Struts2的数据封装
复杂类型数据的封装
完成客户的保存的操作
1.2 Struts2中的ServletAPI的访问
1.2.1 完全解耦合的方式访问ServletAPI
使用ActionContext对象中的方法访问ServletAPI

 框架Struts2第二天学习

1.2.2 使用原生方式访问ServletAPI
使用ServletActionContext对象的中方法访问ServletAPI

框架Struts2第二天学习

1.2.3 实现某些接口的方式访问ServletAPI
使用实现特定的接口的方式访问ServletAPI
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.itheima.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;
}
 
public void 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="cn.itcast.web.action.Demo1Action">
        <result name="success">/success.jsp</result>
        <result name="input">/demo1.jsp</result>
  </action>
 
 框架Struts2第二天学习

 

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.itheima.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 封装数据到集合中
 以客户关系后台系统为例

 框架Struts2第二天学习
 
 
1.4.5 添加客户思路分析:

 框架Struts2第二天学习
 
 
 
 
1.4.6 修改客户回显数据--思路分析
框架Struts2第二天学习