struts2之Action获取请求参数与web元素(四)
2013-03-21 16:23
429 查看
这一篇主要给大家讲两个问题:
1,Action如何获取请求参数
2,Action如何获取web元素
好的,先介绍Action获取请求参数的三种方法:
1、Action组件基本类型属性的自动填充
2、Action组件复杂类型属性的自动填充
3、基于模型驱动的自动填充
下面还是像往常一样,以图和代码的形式讲解:
第一种:Action组件基本类型属性的自动填充
index.jsp
struts.xml
demo1.java
demo1.jsp
第二种:Action组件复杂类型属性的自动填充
demo2.java
User.java
demo2.jsp
index.jsp
第三种:基于模型驱动的自动填充
demo3.java
index.jsp
demo3.jsp
以上就是三种方法,大家很容易就可以看到他们之间的区别~~~
以下是项目的文件结构:
接下来,介绍一下Action如何获取web元素,如:session,request,response等
strust2获取web元素的方法有四种:
1.依赖于容器(ActionContext)获取Map类型的Web元素
2.依赖于容器(ServletActionContext)获取真实类型的Web元素
3.依赖于Struts2框架注入(IoC-控制反转)获取Map类型的Web元素(只用这种方法)
4.依赖于Struts2框架注入(IoC-控制反转)获取真实类型的Web元素(不讲,自学)
第一种方法:依赖于容器(ActionContext)获取Map类型的Web元素
【ActionContext】是Action执行的上下文,提供一系列相关方法用于访问保存在HttpServletRequest、HttpSession、ServletContext中的信息,并将其存储在Map中。
【ActionContext对象获取】 通过ActionConext类的静态方法getContext()
【ActionContext常用方法】
public Object get(String key):获取ActionContext中指定键名的元素对象
public Map<String, Object> getSession():获取session元素对象
public Map<String, Object> getApplication():获取application元素对象
【Map常用方法】
public void put(String key,Object value):向Map对象中添加一个具有键名标识的元素
public Object get(Object key):从Map对象中获取指定的元素
在Action中获取Web元素的方法】
1.获取ActionContext对象
ActionContext ac= ActionContext.getContext();
2.通过ActionContext对象获取Map类型的Web元素
Map<String,Object> s=ac.getSession();
或: Map<String,Object> s=( Map<String,Object> )ac.get ("session");
3.使用Map对象的put/get方法添加/获取属性
s.put("username","lucky");
【JSP中获取Web元素属性方法】
1.通过JSP脚本元素
<%=session.getAttribute("username")%>
2.通过Struts2框架标签和OGNL表达式
<s:property value="#session.username"/>
demo1.java
ActionContext ac=ActionContext.getContext();
//////ac已经算是获得了request
ac.put("sse", "request获取一");
Map<String,Object> sse=ac.getSession();
sse.put("sse", "session获取一");
Map<String,Object> app=ac.getApplication();
app.put("sse", "applaction获取一");
demo1.jsp中获取元素之代码
<%=" session内容为:"+session.getAttribute("sse")%><br>
<%=" aplication内容为:"+application.getAttribute("sse")%><br>
<%=" request内容为:"+request.getAttribute("sse")%><br>
第二种方法:依赖于容器(ServletActionContext)获取真实类型的Web元素
【问题】 通过ActionContext获取的Web元素是Map形式的,这对于习惯了Servlet编程的开发人员可能不太习惯
【解决方法】Struts2框架中可以通过ServletActionContext类 获取 ServletAPI对象
【ServletActionContext的常用方法】
public static HttpServletRequest getRequest():获取请求对象
public static ServletContext getServletContext():获取应用程序对象
【思考】
获取HttpSession的方法?
【基本思路】
1、在Action中使用真实类型的Web元素,即通过ServletActionContext获取HttpServletRequest、HttpSession、ServletContext类型的Web元素。
2、在视图中输出Web元素属性的方法不变。
demo2.java
HttpServletRequest request;
HttpSession session;
ServletContext application;
request=ServletActionContext.getRequest();
session=request.getSession();
application=ServletActionContext.getServletContext();
request.setAttribute("sse", "request获取二");
session.setAttribute("sse", "session获取二");
application.setAttribute("sse", "application获取二");
demo2.jsp和demo1.jsp一样
第三种方法:依赖于Struts2框架注入(IoC-控制反转)获取Map类型的Web元素(只用这种方法)
相关概念】
DI:Dependency Injection—依赖注入
IoC:Inversion of Control—控制反转
两个概念表达相同的思想,即:
当我们想得到某个对象时,不需要我们主动创建这个对象,或主动去获取这个对象,而是等待系统把这个对象自动交给我们,我们只是被动接受。(网购模式)
我们需要的对象我们不去主动创建,而让系统自动填充的,叫依赖注入;本来是我们控制去获取这个对象,结果控制权交给了系统,我们被动接受,叫控制反转。
【依赖注入的相关接口】
Action中通过实现相关接口,Web元素即可由框架自动注入,这组接口以Aware(知道,明白)结尾
RequestAware:Map类型的request元素
ServletRequestAware:HttpServletRequest类型
ServletResponseAware:HttpServletResponse类型
SessionAware:Map类型的session元素
ApplicationAware:Map类型的application元素
CookiesAware:Map类型的Cookie元素
【依赖注入的Web元素获取方法】
1.创建Action时实现Web元素相关接口
2.在Action中声明Map类型的私有变量
3.在Aware接口的实现方法中为变量赋值
【基本思路】
1、创建Action实现RequestAware、SessionAware、ApplicationAware三个接口,声明三个Map类型的私有变量,三个接口的实现方法分别对三个变量赋值,从页获取Web元素。
2、在视图中输出Web元素属性的方法不变。
demo3.java
public class demo1 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware {
private String name,password;//变量名可以与form表单中的name一致,也可以不一致,但是set与get方法后的变量必须与form表单中的保持一致
Map<String,Object> request;
Map<String,Object> session;
Map<String,Object> application;
public String execute() throws Exception {
this.name="demo1获取参数Action参数的第一种方法:基本数据类型的自动填充";
request.put("sse", "request获取三");
session.put("sse", "session获取三");
application.put("sse", "application获三");
return super.execute();
}
public String getUsername() {
return name;
}
public void setUsername(String username) {
this.name = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setRequest(Map<String, Object> request) {
this.request=request;
}
public void setApplication(Map<String, Object> application) {
this.application=application;
}
public void setSession(Map<String, Object> session) {
this.session=session;
}
}
demo3.jsp如同demo1.jsp
好了,到此就结束了~~~
1,Action如何获取请求参数
2,Action如何获取web元素
好的,先介绍Action获取请求参数的三种方法:
1、Action组件基本类型属性的自动填充
2、Action组件复杂类型属性的自动填充
3、基于模型驱动的自动填充
下面还是像往常一样,以图和代码的形式讲解:
第一种:Action组件基本类型属性的自动填充
index.jsp
<form action="demo/demo1" method="post"> <input type="text" name="username"> <input type="password" name="password"> <input type="submit" value="提交"> </form>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <package name="default" namespace="/demo" extends="struts-default" > <action name="demo1" class="action.demo1"> <result name="success">/demo1.jsp</result> </action> <action name="demo2" class="action.demo2"> <result name="success">/demo2.jsp</result> </action> <action name="demo3" class="action.demo3"> <result name="success">/demo3.jsp</result> </action> </package> </struts>
demo1.java
package action; import com.opensymphony.xwork2.ActionSupport; ////////获取参数Action参数的第一种方法:基本数据类型的自动填充 public class demo1 extends ActionSupport { private String name,password;//变量名可以与form表单中的name一致,也可以不一致,但是set与get方法后的变量必须与form表单中的保持一致 public String execute() throws Exception { this.name="demo1获取参数Action参数的第一种方法:基本数据类型的自动填充"; return super.execute(); } public String getUsername() { return name; } public void setUsername(String username) { this.name = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
demo1.jsp
<body> ${username} </body>
第二种:Action组件复杂类型属性的自动填充
demo2.java
package action; import bean.User; //////////获取参数Action参数的第二种方法:复杂数据类型的自动填充 import com.opensymphony.xwork2.ActionSupport; public class demo2 extends ActionSupport { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String execute() throws Exception { return super.execute(); } }
User.java
package bean; public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
demo2.jsp
${user.username}
index.jsp
<form action="demo/demo2" method="post"> <input type="text" name="user.username"> <input type="password" name="user.password"> <input type="submit" value="提交"> </form> </body>
第三种:基于模型驱动的自动填充
demo3.java
package action; import bean.User; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; //////基于模型驱动的自动填充 public class demo3 extends ActionSupport implements ModelDriven{ private User user=new User(); public String execute() throws Exception { // TODO Auto-generated method stub return super.execute(); } public Object getModel() { // TODO Auto-generated method stub return user; } }
index.jsp
<form action="demo/demo3" method="post"> <input type="text" name="username"> <input type="password" name="password"> <input type="submit" value="提交"> </form>
demo3.jsp
${username}
以上就是三种方法,大家很容易就可以看到他们之间的区别~~~
以下是项目的文件结构:
接下来,介绍一下Action如何获取web元素,如:session,request,response等
strust2获取web元素的方法有四种:
1.依赖于容器(ActionContext)获取Map类型的Web元素
2.依赖于容器(ServletActionContext)获取真实类型的Web元素
3.依赖于Struts2框架注入(IoC-控制反转)获取Map类型的Web元素(只用这种方法)
4.依赖于Struts2框架注入(IoC-控制反转)获取真实类型的Web元素(不讲,自学)
第一种方法:依赖于容器(ActionContext)获取Map类型的Web元素
【ActionContext】是Action执行的上下文,提供一系列相关方法用于访问保存在HttpServletRequest、HttpSession、ServletContext中的信息,并将其存储在Map中。
【ActionContext对象获取】 通过ActionConext类的静态方法getContext()
【ActionContext常用方法】
public Object get(String key):获取ActionContext中指定键名的元素对象
public Map<String, Object> getSession():获取session元素对象
public Map<String, Object> getApplication():获取application元素对象
【Map常用方法】
public void put(String key,Object value):向Map对象中添加一个具有键名标识的元素
public Object get(Object key):从Map对象中获取指定的元素
在Action中获取Web元素的方法】
1.获取ActionContext对象
ActionContext ac= ActionContext.getContext();
2.通过ActionContext对象获取Map类型的Web元素
Map<String,Object> s=ac.getSession();
或: Map<String,Object> s=( Map<String,Object> )ac.get ("session");
3.使用Map对象的put/get方法添加/获取属性
s.put("username","lucky");
【JSP中获取Web元素属性方法】
1.通过JSP脚本元素
<%=session.getAttribute("username")%>
2.通过Struts2框架标签和OGNL表达式
<s:property value="#session.username"/>
demo1.java
ActionContext ac=ActionContext.getContext();
//////ac已经算是获得了request
ac.put("sse", "request获取一");
Map<String,Object> sse=ac.getSession();
sse.put("sse", "session获取一");
Map<String,Object> app=ac.getApplication();
app.put("sse", "applaction获取一");
demo1.jsp中获取元素之代码
<%=" session内容为:"+session.getAttribute("sse")%><br>
<%=" aplication内容为:"+application.getAttribute("sse")%><br>
<%=" request内容为:"+request.getAttribute("sse")%><br>
第二种方法:依赖于容器(ServletActionContext)获取真实类型的Web元素
【问题】 通过ActionContext获取的Web元素是Map形式的,这对于习惯了Servlet编程的开发人员可能不太习惯
【解决方法】Struts2框架中可以通过ServletActionContext类 获取 ServletAPI对象
【ServletActionContext的常用方法】
public static HttpServletRequest getRequest():获取请求对象
public static ServletContext getServletContext():获取应用程序对象
【思考】
获取HttpSession的方法?
【基本思路】
1、在Action中使用真实类型的Web元素,即通过ServletActionContext获取HttpServletRequest、HttpSession、ServletContext类型的Web元素。
2、在视图中输出Web元素属性的方法不变。
demo2.java
HttpServletRequest request;
HttpSession session;
ServletContext application;
request=ServletActionContext.getRequest();
session=request.getSession();
application=ServletActionContext.getServletContext();
request.setAttribute("sse", "request获取二");
session.setAttribute("sse", "session获取二");
application.setAttribute("sse", "application获取二");
demo2.jsp和demo1.jsp一样
第三种方法:依赖于Struts2框架注入(IoC-控制反转)获取Map类型的Web元素(只用这种方法)
相关概念】
DI:Dependency Injection—依赖注入
IoC:Inversion of Control—控制反转
两个概念表达相同的思想,即:
当我们想得到某个对象时,不需要我们主动创建这个对象,或主动去获取这个对象,而是等待系统把这个对象自动交给我们,我们只是被动接受。(网购模式)
我们需要的对象我们不去主动创建,而让系统自动填充的,叫依赖注入;本来是我们控制去获取这个对象,结果控制权交给了系统,我们被动接受,叫控制反转。
【依赖注入的相关接口】
Action中通过实现相关接口,Web元素即可由框架自动注入,这组接口以Aware(知道,明白)结尾
RequestAware:Map类型的request元素
ServletRequestAware:HttpServletRequest类型
ServletResponseAware:HttpServletResponse类型
SessionAware:Map类型的session元素
ApplicationAware:Map类型的application元素
CookiesAware:Map类型的Cookie元素
【依赖注入的Web元素获取方法】
1.创建Action时实现Web元素相关接口
2.在Action中声明Map类型的私有变量
3.在Aware接口的实现方法中为变量赋值
【基本思路】
1、创建Action实现RequestAware、SessionAware、ApplicationAware三个接口,声明三个Map类型的私有变量,三个接口的实现方法分别对三个变量赋值,从页获取Web元素。
2、在视图中输出Web元素属性的方法不变。
demo3.java
public class demo1 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware {
private String name,password;//变量名可以与form表单中的name一致,也可以不一致,但是set与get方法后的变量必须与form表单中的保持一致
Map<String,Object> request;
Map<String,Object> session;
Map<String,Object> application;
public String execute() throws Exception {
this.name="demo1获取参数Action参数的第一种方法:基本数据类型的自动填充";
request.put("sse", "request获取三");
session.put("sse", "session获取三");
application.put("sse", "application获三");
return super.execute();
}
public String getUsername() {
return name;
}
public void setUsername(String username) {
this.name = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setRequest(Map<String, Object> request) {
this.request=request;
}
public void setApplication(Map<String, Object> application) {
this.application=application;
}
public void setSession(Map<String, Object> session) {
this.session=session;
}
}
demo3.jsp如同demo1.jsp
好了,到此就结束了~~~
相关文章推荐
- struts2之Action获取请求参数与web元素
- JAVAWEB开发之Struts2详解(二)——Action接受请求参数、类型转换器、使用Struts2的输入校验、以及遵守约定规则实现Struts2的零配置
- SSH:Struts2的Action中获取GET请求参数中文乱码问题
- 在struts2中获取请求action名称或参数
- struts2业务控制类(Action)获取页面请求参数的几种方式
- 在Struts2拦截器中获取请求action名称及参数
- 在Struts2拦截器中获取请求action名称及参数
- struts2中 Action获取表单参数的几种方式
- Struts2系统学习(7)Action中取得请求参数的方法总结
- struts2中action如何获取Session,request,jsp页面参数等等信息的值
- Struts2_学习笔记(五)----访问Web元素、include、默认Action、Action总结
- Struts2中访问web元素的四种方式及前台jsp页面获取后台值的方式
- struts2获取请求参数的三种方式及传递给JSP参数的方式
- struts2中 action获取jsp页面的参数的方法
- jsp页面,使用Struts2标签,传递和获取Action类里的参数,注意事项。<s:a action><s:iterator><s:param>ognl表达式 在编写SSH2项目的时候,除
- Struts 2 的Action中如何获取request、response、session、application等web元素(1)
- 获取HttpActionContext请求参数
- struts2获取web元素(request、session、application)
- STRUTS2 ACTION 访问WEB元素的四种方式
- struts2:JSP页面及Action中获取HTTP参数(parameter)的几种方式