Struts 2 数据传递
来源:互联网 发布:金昌印花软件 编辑:程序博客网 时间:2024/06/06 06:29
Struts 2 数据传递
一 从前台页面
把数据传到后台业务逻辑层
从前台页面把数据传到后台业务逻辑层
传统的Web应用程序(例如使用Jsp/Servlet技术)是由开发人员调用HttpServletRequest的getParameter(String name)方法从请求中获取数据。
而Web框架(例如Struts1,Struts2)都提供了数据绑定机制(也叫界面绑定机制),由框架从请求中获取数据,然后帮定到一个JavaBean对象中。
Struts2提供了多种方式用于接收用户输入的数据(即从前台页面把数据传到后台业务逻辑)
从前台页面把数据传到后台业务逻辑层
1、使用领域对象接收用户输入
2、使用ModelDriven action接收用户输入
3、使用action的属性接收用户输入
4、使用request对象接收用户输入(和Servlet API耦合的方式)
1、用领域对象接收用户输入
login.jsp页面中,form表单内
<input type=“text” name=“user.username”/>
<input type=“text” name=“user.password”/>
领域对象 User.java 内,两个属性及其getter和setter方法
private String username;
private String password;、
action类 LoginAction 实现了Action接口
Private User user;
//拥有一个action属性及其getter和setter方法,同时注意,user无需实例化,由struts2会遍历所有的请求参数,自动依次实例化任何用于填充数据的对象。
在success.jsp页面中
<s:property value=“user.username”/>
2、用ModelDriven action接收用户输入
Struts2提供了另外一种直接使用领域对象的方式,就是让action实现ModelDriven接口。ModelDriven让你可以直接操作应用程序中的领域对象,允许你在Web层和业务逻辑层使用相同的对象。
login.jsp页面中,form表单内
<input type=“text” name=“username”/>
<input type=“text” name=“password”/>
//无需再使用”user.”前缀了
领域对象 User.java 内,两个属性及其getter和setter方法
private String username;
private String password;、
action类 LoginAction 实现了Action接口、ModelDriven接口
private User user=new User();
public User getModel(){
return user;
}
//不是action属性及没有其getter和setter方法,同时注意,user无需实例化,由struts2会遍历所有的请求参数,自动依次实例化任何用于填充数据的对象。
//getModel()方法返回一个用于接收用户输入的模型对象,从而在页面中,这个模型对象中的属性可以直接通过属性名来访问(如username),而不需要使用形如“user.username”这种格式的表达式。在action中也不需要为这个模型对象提供JavaBean风格的getter和setter方法。
在success.jsp页面中
<s:property value=“username”/>
3、用action的属性接收用户输入
login.jsp页面中,form表单内
<input type=“text” name=“username”/>
<input type=“text” name=“password”/>
action类 LoginAction 实现了Action接口
private String username;
private String password;
//拥有两个action属性及其getter和setter方法。
在success.jsp页面中
<s:property value=“username”/>
//使用了OGNL值栈
4、使用request对象接收用户输入(和Servlet API耦合的方式)
直接访问Servlet API将使你的action与Servlet环境耦合在一起,我们知道对象HttpServletRequest对象、HttpServletResponse对象和ServletContext对象,他们都是由Servlet容器来构造的,与这些对象绑定在一起,测试时就需要有Servlet容器,不便于Action单元的测试。
login.jsp页面中,form表单内
<input type=“text” name=“username”/>
<input type=“text” name=“password”/>
action类 LoginAction 实现了Action接口
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
HttpSession session=request.getSession();
ServletContext application=ServletActionContext.getServletContext();
//HttpServletRequest request= ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
//HttpServletResponse response= ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
//HttpSession session=request.getSession();
//ServletContext application= ActionContext.getContext().get(ServletActionContext.SERVLET_CONTEXT);
String username=request.getParameter(“username”);
String password=request.getParameter(“password”);
从后台业务逻辑层
把数据传到前台页面
从后台业务逻辑层把数据传到前台页面
1、使用领域对象JavaBean,ognl的值栈/Jsp:useBean标签
2、使用action的属性,ognl的值栈
3、使用request对象、response对象、session对象、application对象(和Servlet API耦合的方式)
4、使用request、response、session、application Map型对象(和Servlet API解耦的方式)
5、注入request、response、session、application Map型对象(和Servlet API解耦的方式)
1、使用领域对象JavaBean(1)
login.jsp页面中,form表单内
<input type=“text” name=“user.username”/>
<input type=“text” name=“user.password”/>
领域对象 User.java 内,两个属性及其getter和setter方法
private String username;
private String password;、
action类 LoginAction 实现了Action接口
Private User user;
//拥有一个action属性及其getter和setter方法,同时注意,user无需实例化,由struts2会遍历所有的请求参数,自动依次实例化任何用于填充数据的对象。
//在LoginAction内的execute()方法内操作user的setter(),从而改变了从前台传入到action的数据。
1、使用领域对象JavaBean(2)
在success.jsp页面中,有多种方法可以获得被传递的数据对象,比如:
<s:property value=“user.username”/>
或者
<jsp:useBean id=“user” scope=“session” class=“com.ibm.model.User”/>
<jsp:getProperty name=“user” property=“username”/>
2、使用action的属性,ognl的值栈
action类 LoginAction 实现了Action接口
private String strValueStack;
//拥有一个action属性及其getter和setter方法。
Public execute(){
//
strValueStack=“Who am i?”;
//
}
在success.jsp页面中
<s:property value=“strValueStack”/>
//使用了OGNL值栈
3、用request、response对象、session、application对象(和Servlet API耦合的方式)(1)
action类 LoginAction 实现了Action接口
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
HttpSession session=request.getSession();
ServletContext application=ServletActionContext.getServletContext();
//HttpServletRequest request= ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
//HttpServletResponse response= ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
//HttpSession session=request.getSession();
//ServletContext application= ActionContext.getContext().get(ServletActionContext.SERVLET_CONTEXT);
request.setAttribute(“key1”,valueObject1);
session.setAttribute(“key2”,valueObject2);
3、用request、response对象、session、application对象(和Servlet API耦合的方式)(2)
在success.jsp页面中,有多种方法可以获得被传递的数据对象,比如:
(A)
<%
Object valueObject1=request.getAttribute(“key1”);
Object valueObject2=session.getAttribute(“key2”);
%>
(B) <s:iterator value="#request.key1">
<s:property value=“#request.key1”>获得被传递的数据对象。
4、用request、response、session、application对象(和Servlet API解耦的方式)(1)
action类 LoginAction 实现了Action接口
Map request= (Map)ActionContext.getContext().get(“request”);
Map session= (Map)ActionContext.getContext()..getSession();
Map application= (Map)ActionContext.getContext().getApplication();
Map parameters= (Map)ActionContext.getContext().getParameters();
request.put((“key1”,valueObject1);
session.put(“key2”,valueObject2);
4、用request、response、session、application对象(和Servlet API解耦的方式)(2)
在success.jsp页面中,有多种方法可以获得被传递的数据对象,比如:
(A)
<%
Object valueObject1=request.getAttribute(“key1”);
Object valueObject2=session.getAttribute(“key2”);
%>
(B) <s:iterator value=“#request.key1”>
<s:property value=“#request.key1”>获得被传递的数据对象。
(C)${ requestScope.key1 }获得被传递的数据对象。
5、注入Map型对象(和Servlet API解耦的方式)
action类 LoginAction 实现了Action接口、RequestAware、SessionAware、ApplicationAware和ParameterAware接口
private Map request;
private Map session;
private Map application;
private Map parameters;
以及四个接口的重载方法:
@Override
public void setRequest(Map request){
this.request = request;
}
@Override
public void setSession(Map session){
this.session = session;
}
@Override
public void setApplication(Map application){
this.application = application;
}
@Override
public void setParameters(Map parameters){
this.parameters = parameters;
}
request.put((“key1”,valueObject1);
session.put(“key2”,valueObject2);
5、注入Map型对象(和Servlet API解耦的方式)
Struts2框架在运行时向Action实例注入request\session\application 等Map对象。
在success.jsp页面中,有多种方法可以获得被传递的数据对象,比如:
(A)
<%
Object valueObject1=request.getAttribute(“key1”);
Object valueObject2=session.getAttribute(“key2”);
%>
(B) <s:iterator value=“#request.key1”>
<s:property value=“#request.key1”>获得被传递的数据对象。
(C)${ requestScope.key1 }获得被传递的数据对象。
一 从前台页面
把数据传到后台业务逻辑层
从前台页面把数据传到后台业务逻辑层
传统的Web应用程序(例如使用Jsp/Servlet技术)是由开发人员调用HttpServletRequest的getParameter(String name)方法从请求中获取数据。
而Web框架(例如Struts1,Struts2)都提供了数据绑定机制(也叫界面绑定机制),由框架从请求中获取数据,然后帮定到一个JavaBean对象中。
Struts2提供了多种方式用于接收用户输入的数据(即从前台页面把数据传到后台业务逻辑)
从前台页面把数据传到后台业务逻辑层
1、使用领域对象接收用户输入
2、使用ModelDriven action接收用户输入
3、使用action的属性接收用户输入
4、使用request对象接收用户输入(和Servlet API耦合的方式)
1、用领域对象接收用户输入
login.jsp页面中,form表单内
<input type=“text” name=“user.username”/>
<input type=“text” name=“user.password”/>
领域对象 User.java 内,两个属性及其getter和setter方法
private String username;
private String password;、
action类 LoginAction 实现了Action接口
Private User user;
//拥有一个action属性及其getter和setter方法,同时注意,user无需实例化,由struts2会遍历所有的请求参数,自动依次实例化任何用于填充数据的对象。
在success.jsp页面中
<s:property value=“user.username”/>
2、用ModelDriven action接收用户输入
Struts2提供了另外一种直接使用领域对象的方式,就是让action实现ModelDriven接口。ModelDriven让你可以直接操作应用程序中的领域对象,允许你在Web层和业务逻辑层使用相同的对象。
login.jsp页面中,form表单内
<input type=“text” name=“username”/>
<input type=“text” name=“password”/>
//无需再使用”user.”前缀了
领域对象 User.java 内,两个属性及其getter和setter方法
private String username;
private String password;、
action类 LoginAction 实现了Action接口、ModelDriven接口
private User user=new User();
public User getModel(){
return user;
}
//不是action属性及没有其getter和setter方法,同时注意,user无需实例化,由struts2会遍历所有的请求参数,自动依次实例化任何用于填充数据的对象。
//getModel()方法返回一个用于接收用户输入的模型对象,从而在页面中,这个模型对象中的属性可以直接通过属性名来访问(如username),而不需要使用形如“user.username”这种格式的表达式。在action中也不需要为这个模型对象提供JavaBean风格的getter和setter方法。
在success.jsp页面中
<s:property value=“username”/>
3、用action的属性接收用户输入
login.jsp页面中,form表单内
<input type=“text” name=“username”/>
<input type=“text” name=“password”/>
action类 LoginAction 实现了Action接口
private String username;
private String password;
//拥有两个action属性及其getter和setter方法。
在success.jsp页面中
<s:property value=“username”/>
//使用了OGNL值栈
4、使用request对象接收用户输入(和Servlet API耦合的方式)
直接访问Servlet API将使你的action与Servlet环境耦合在一起,我们知道对象HttpServletRequest对象、HttpServletResponse对象和ServletContext对象,他们都是由Servlet容器来构造的,与这些对象绑定在一起,测试时就需要有Servlet容器,不便于Action单元的测试。
login.jsp页面中,form表单内
<input type=“text” name=“username”/>
<input type=“text” name=“password”/>
action类 LoginAction 实现了Action接口
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
HttpSession session=request.getSession();
ServletContext application=ServletActionContext.getServletContext();
//HttpServletRequest request= ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
//HttpServletResponse response= ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
//HttpSession session=request.getSession();
//ServletContext application= ActionContext.getContext().get(ServletActionContext.SERVLET_CONTEXT);
String username=request.getParameter(“username”);
String password=request.getParameter(“password”);
从后台业务逻辑层
把数据传到前台页面
从后台业务逻辑层把数据传到前台页面
1、使用领域对象JavaBean,ognl的值栈/Jsp:useBean标签
2、使用action的属性,ognl的值栈
3、使用request对象、response对象、session对象、application对象(和Servlet API耦合的方式)
4、使用request、response、session、application Map型对象(和Servlet API解耦的方式)
5、注入request、response、session、application Map型对象(和Servlet API解耦的方式)
1、使用领域对象JavaBean(1)
login.jsp页面中,form表单内
<input type=“text” name=“user.username”/>
<input type=“text” name=“user.password”/>
领域对象 User.java 内,两个属性及其getter和setter方法
private String username;
private String password;、
action类 LoginAction 实现了Action接口
Private User user;
//拥有一个action属性及其getter和setter方法,同时注意,user无需实例化,由struts2会遍历所有的请求参数,自动依次实例化任何用于填充数据的对象。
//在LoginAction内的execute()方法内操作user的setter(),从而改变了从前台传入到action的数据。
1、使用领域对象JavaBean(2)
在success.jsp页面中,有多种方法可以获得被传递的数据对象,比如:
<s:property value=“user.username”/>
或者
<jsp:useBean id=“user” scope=“session” class=“com.ibm.model.User”/>
<jsp:getProperty name=“user” property=“username”/>
2、使用action的属性,ognl的值栈
action类 LoginAction 实现了Action接口
private String strValueStack;
//拥有一个action属性及其getter和setter方法。
Public execute(){
//
strValueStack=“Who am i?”;
//
}
在success.jsp页面中
<s:property value=“strValueStack”/>
//使用了OGNL值栈
3、用request、response对象、session、application对象(和Servlet API耦合的方式)(1)
action类 LoginAction 实现了Action接口
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
HttpSession session=request.getSession();
ServletContext application=ServletActionContext.getServletContext();
//HttpServletRequest request= ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
//HttpServletResponse response= ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
//HttpSession session=request.getSession();
//ServletContext application= ActionContext.getContext().get(ServletActionContext.SERVLET_CONTEXT);
request.setAttribute(“key1”,valueObject1);
session.setAttribute(“key2”,valueObject2);
3、用request、response对象、session、application对象(和Servlet API耦合的方式)(2)
在success.jsp页面中,有多种方法可以获得被传递的数据对象,比如:
(A)
<%
Object valueObject1=request.getAttribute(“key1”);
Object valueObject2=session.getAttribute(“key2”);
%>
(B) <s:iterator value="#request.key1">
<s:property value=“#request.key1”>获得被传递的数据对象。
4、用request、response、session、application对象(和Servlet API解耦的方式)(1)
action类 LoginAction 实现了Action接口
Map request= (Map)ActionContext.getContext().get(“request”);
Map session= (Map)ActionContext.getContext()..getSession();
Map application= (Map)ActionContext.getContext().getApplication();
Map parameters= (Map)ActionContext.getContext().getParameters();
request.put((“key1”,valueObject1);
session.put(“key2”,valueObject2);
4、用request、response、session、application对象(和Servlet API解耦的方式)(2)
在success.jsp页面中,有多种方法可以获得被传递的数据对象,比如:
(A)
<%
Object valueObject1=request.getAttribute(“key1”);
Object valueObject2=session.getAttribute(“key2”);
%>
(B) <s:iterator value=“#request.key1”>
<s:property value=“#request.key1”>获得被传递的数据对象。
(C)${ requestScope.key1 }获得被传递的数据对象。
5、注入Map型对象(和Servlet API解耦的方式)
action类 LoginAction 实现了Action接口、RequestAware、SessionAware、ApplicationAware和ParameterAware接口
private Map request;
private Map session;
private Map application;
private Map parameters;
以及四个接口的重载方法:
@Override
public void setRequest(Map request){
this.request = request;
}
@Override
public void setSession(Map session){
this.session = session;
}
@Override
public void setApplication(Map application){
this.application = application;
}
@Override
public void setParameters(Map parameters){
this.parameters = parameters;
}
request.put((“key1”,valueObject1);
session.put(“key2”,valueObject2);
5、注入Map型对象(和Servlet API解耦的方式)
Struts2框架在运行时向Action实例注入request\session\application 等Map对象。
在success.jsp页面中,有多种方法可以获得被传递的数据对象,比如:
(A)
<%
Object valueObject1=request.getAttribute(“key1”);
Object valueObject2=session.getAttribute(“key2”);
%>
(B) <s:iterator value=“#request.key1”>
<s:property value=“#request.key1”>获得被传递的数据对象。
(C)${ requestScope.key1 }获得被传递的数据对象。
- Struts 2 数据传递
- Struts 数据传递
- jdbc+struts axis 传递大数据
- struts向页面传递多个json数据
- 页面之间参数传递2--Struts标签
- dwr数据传递2
- Struts 2 数据标签教程
- struts 2 值栈 存放数据
- Struts 2 简单数据验证
- struts之参数传递
- Struts之参数传递
- 页面之间传递数据2
- onclick()在struts 2中使用时传递参数
- struts中在两个action之间进行传递数据的方法
- struts:将Action处理后的数据传递给前台jsp页面
- struts中在两个action之间进行传递数据的方法
- jquery 的ajax请求传递json数据给struts的action
- 我的Struts框架学习 -- form表单提交 action数据传递
- 玩转myeclipse
- ios7新特性--2
- java swing 图片按钮的使用
- JS编程技巧
- 讨厌的字符串读入
- Struts 2 数据传递
- oracle中三种方式来分析索引结构
- hdu 4771 Stealing Harry Potter's Precious (2013 杭州 onsite B题)bfs预处理后,dfs枚举或tsp
- assert() debug() release()
- ios7新特性--3
- 如何在一个字符上面加横线或者加波浪线?
- AE中调用内置方法创建菜单
- Fortran矩阵运算
- NDK报错:make: *** 没有规则可以创建“obj/local/armeabi/objs/a/a.o”需要的目标“/a.c”。 停止。