[color=brown][color=orange][/color][/color]
[b]一[/b]Struts2如何获得前台的输入数据
1属性驱动PropertyDriven
1-1:当Action中属性名与表单name一致时,下面的表单提交后自动会将值赋给同名属性。
这种情况适用在Action属性较少时使用。
注意:action中要写对应属性的get set 方法
1-2:Action中属性不再是String\Integer\Double这些基本类型,而是POJO对象,那么表单元素的name值前增加对象变量名便可Action的POJO对象同名属性进行赋值
这种用法很方便,可以直接对pojo属性进行赋值。但Action与JSP页面存在耦合,因为HTML编写者必须要知道Action中的属性名。
注意:action中要写pojo对象这个属性的 get set 方法
此方法的缺陷:这种用法很方便,可以直接对pojo属性进行赋值。但Action与JSP页面存在耦合,因为HTML编写者必须要知道Action中的属性名。
有没有两全其美的办法?-----引出模型驱动
2模型驱动ModelDriven
要使用ModelDriven,Action必须实现ModelDriven接口的getModel()方法
实例:public class UserAction implements ModelDriven {
private UserService userService = new UserService();
private User user = new User();
public String add() {
userService.add(user);
return "success";
}
public Object getModel() {
return user;
}
}
[b]二[/b]struts2中的package作用
Struts2中的包类似于Java中的包,提供将Action、Result、Result类型、拦截器组织为一个逻辑单元的方式,从而简化维护工作,提高了重用性,它也有抽象包,但抽象包中不能定义action
[b]三[/b]Action定义方式有三种
1. 标准的JavaBean作为定义
2. 实现Action接口
3. 继承ActionSupport
[b]四[/b]Action与Servlet通信的桥梁:
ServletActionContext从这个类中得到Servlet容器的上下文。
ServletActionContext提供获取Request、Response、Session、ServletContext的对象。
与Servlet不同,Action是多例的,每一次请求Struts2都为我们创建一个Action的实例
[b]五[/b]
在大型项目中,为了降低项目的复杂度,便于团队成员的分工协作,通常将项目划分为较小的模块,每个单独开发与管理。Struts2也支持这种“分而治之”的策略,为每一个模块提供一个配置文件。
struts.xml文件内容:
<struts>
<!-- <constant name="struts.enable.DynamicMethodInvocation" value="false" /> -->
<package name = "default" extends = "struts-default" namespace="/test">
<global-results>
<result name = "index">/index.jsp</result>
</global-results>
<action name = "hello" class = "com.bjsxt.struts2.action.HelloWorldAction" method = "sayHello"></action>
<action name="default" class = "com.bjsxt.struts2.action.HelloWorldAction"></action>
<action name="bye" class = "com.bjsxt.struts2.action.HelloWorldAction" method="sayBye"></action>
</package>
<include file="struts-user.xml"></include>
<include file="struts-report.xml"></include>
</struts>
struts-report.xml文件内容:
<struts>
<!-- <constant name="struts.enable.DynamicMethodInvocation" value="false" /> -->
<package name = "report" extends = "struts-default" namespace="/test">
</package>
</struts>
struts-user.xml文件内容:
<struts>
<!-- <constant name="struts.enable.DynamicMethodInvocation" value="false" /> -->
<package name = "user" extends = "struts-default" namespace="/test">
</package>
</struts>
[b]一[/b]Struts2如何获得前台的输入数据
1属性驱动PropertyDriven
1-1:当Action中属性名与表单name一致时,下面的表单提交后自动会将值赋给同名属性。
这种情况适用在Action属性较少时使用。
注意:action中要写对应属性的get set 方法
1-2:Action中属性不再是String\Integer\Double这些基本类型,而是POJO对象,那么表单元素的name值前增加对象变量名便可Action的POJO对象同名属性进行赋值
这种用法很方便,可以直接对pojo属性进行赋值。但Action与JSP页面存在耦合,因为HTML编写者必须要知道Action中的属性名。
注意:action中要写pojo对象这个属性的 get set 方法
此方法的缺陷:这种用法很方便,可以直接对pojo属性进行赋值。但Action与JSP页面存在耦合,因为HTML编写者必须要知道Action中的属性名。
有没有两全其美的办法?-----引出模型驱动
2模型驱动ModelDriven
要使用ModelDriven,Action必须实现ModelDriven接口的getModel()方法
实例:public class UserAction implements ModelDriven {
private UserService userService = new UserService();
private User user = new User();
public String add() {
userService.add(user);
return "success";
}
public Object getModel() {
return user;
}
}
[b]二[/b]struts2中的package作用
Struts2中的包类似于Java中的包,提供将Action、Result、Result类型、拦截器组织为一个逻辑单元的方式,从而简化维护工作,提高了重用性,它也有抽象包,但抽象包中不能定义action
[b]三[/b]Action定义方式有三种
1. 标准的JavaBean作为定义
2. 实现Action接口
3. 继承ActionSupport
[b]四[/b]Action与Servlet通信的桥梁:
ServletActionContext从这个类中得到Servlet容器的上下文。
ServletActionContext提供获取Request、Response、Session、ServletContext的对象。
与Servlet不同,Action是多例的,每一次请求Struts2都为我们创建一个Action的实例
[b]五[/b]
在大型项目中,为了降低项目的复杂度,便于团队成员的分工协作,通常将项目划分为较小的模块,每个单独开发与管理。Struts2也支持这种“分而治之”的策略,为每一个模块提供一个配置文件。
struts.xml文件内容:
<struts>
<!-- <constant name="struts.enable.DynamicMethodInvocation" value="false" /> -->
<package name = "default" extends = "struts-default" namespace="/test">
<global-results>
<result name = "index">/index.jsp</result>
</global-results>
<action name = "hello" class = "com.bjsxt.struts2.action.HelloWorldAction" method = "sayHello"></action>
<action name="default" class = "com.bjsxt.struts2.action.HelloWorldAction"></action>
<action name="bye" class = "com.bjsxt.struts2.action.HelloWorldAction" method="sayBye"></action>
</package>
<include file="struts-user.xml"></include>
<include file="struts-report.xml"></include>
</struts>
struts-report.xml文件内容:
<struts>
<!-- <constant name="struts.enable.DynamicMethodInvocation" value="false" /> -->
<package name = "report" extends = "struts-default" namespace="/test">
</package>
</struts>
struts-user.xml文件内容:
<struts>
<!-- <constant name="struts.enable.DynamicMethodInvocation" value="false" /> -->
<package name = "user" extends = "struts-default" namespace="/test">
</package>
</struts>