Struts2中访问ServletAPI的四种方式
2017-06-06 20:35
309 查看
一: 使用Struts2中ActionContext(Action的上下文)解耦和的方式
package cn.mldn.controller;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
//不与ServletAPI相耦合,测试struts2中ActionContext(Action上下文)这个类的方法
public class TestActionContextAction {
public String execute()
{
//0:获取ActionContext对象,是Action的上下文
ActionContext actionContext=ActionContext.getContext();
//1:获取application对应的Map,为其添加属性
Map<String, Object> applicationMap=actionContext.getApplication();
//设置属性
applicationMap.put("applicationKey","applicationValue");
//获取属性
Object date=applicationMap.get("date");
System.out.println("date: "+date);
//2:获取session对应的Map,为其添加属性
Map<String, Object> sessionMap=actionContext.getSession();
sessionMap.put("sessionKey","sessionValue");
//3:获取request对应的Map,为其添加属性
Map<String, Object> requestMap=(Map<String, Object>) actionContext.get("request");
requestMap.put("requestKey","requestValue");
//4:获取请求参数对应的Map,并获取指定的参数值
Map<String,Object> parameters=actionContext.getParameters();
//键:请求参数的名字,值:请求参数对应的字符串数组
System.out.println("params: "+((String[])parameters.get("name"))[0]);
return "success";
}
}
二:实现XXX_Aware接口,是解耦和的方式
package cn.mldn.controller;
import java.util.Map;
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.ParameterAware;
import org.apache.struts2.interceptor.SessionAware;
//不与ServletAPI相耦合,测试struts2中ServletXXXAware(Action上下文)这个类的方法
public class TestAwareAction implements ApplicationAware,SessionAware,ParameterAware{
private Map<String, Object> applicationMap=null;
private Map<String,String[]> parameters=null;
private Map<String, Object> sessionMap=null;
public String execute()
{
//1:向application中加入一个属性:applicationKey2->applicationValue2
applicationMap.put("applicationKey2","applicationValue2");
sessionMap.put("sessionKey2", "sessionValue2");
//2:从application中读取一个属性date
Object date=applicationMap.get("date");
System.out.println("date:"+date);
System.out.println("session:"+sessionMap.getClass());
// SesionMap类中有 public void invalidate()方法让session失效
if(sessionMap instanceof SessionMap)
{
SessionMap sessionMap2=(SessionMap<String, Object>)sessionMap;
//sessionMap2.invalidate();//让session会话失效
//System.out.println("session失效了!");
}
//键:请求参数的名字,值:请求参数对应的字符串数组
System.out.println("params: "+parameters.get("name2")[0]);
return "success";
}
@Override
public void setApplication(Map<String, Object> applicationMap) {
this.applicationMap=applicationMap;
}
@Override
public void setParameters(Map<String, String[]> parameters) {
this.parameters=parameters;
}
@Override
public void setSession(Map<String, Object> session) {
this.sessionMap=session;
}
}
三: 使用ServletActionContex,与ServletAPI相耦合
package cn.mldn.controller;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
//与ServletAPI相耦合,测试ServletActionContext这个类,可以获取HttpServletRequet
public class TestServletActionContextAction {
public String execute()
{
HttpServletRequest request=ServletActionContext.getRequest();
HttpSession session=ServletActionContext.getRequest().getSession();
ServletContext application=ServletActionContext.getServletContext();
application.setAttribute("applicationKey3", "applicationValue3");
session.setAttribute("sessionKey3", "sessionValue3");
request.setAttribute("requestKey3", "requestValue3");
System.out.println("execute...");
return "success";
}
}
四:实现ServletXXX-Aware接口,与ServletAPI相耦合
package cn.mldn.controller;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware;
//与ServletAPI相耦合,测试ServletAwareAction这个类,可以获取HttpServletRequet
public class TestServletAwareAction implements ServletRequestAware,ServletContextAware{
private HttpServletRequest request=null;
private ServletContext application=null;
public String execute()
{
HttpSession session=ServletActionContext.getRequest().getSession();
application.setAttribute("applicationKey4", "applicationValue4");
session.setAttribute("sessionKey4", "sessionValue4");
request.setAttribute("requestKey4", "requestValue4");
System.out.println("execute...");
return "success";
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
@Override
public void setServletContext(ServletContext context) {
this.application=context;
}
}
package cn.mldn.controller;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
//不与ServletAPI相耦合,测试struts2中ActionContext(Action上下文)这个类的方法
public class TestActionContextAction {
public String execute()
{
//0:获取ActionContext对象,是Action的上下文
ActionContext actionContext=ActionContext.getContext();
//1:获取application对应的Map,为其添加属性
Map<String, Object> applicationMap=actionContext.getApplication();
//设置属性
applicationMap.put("applicationKey","applicationValue");
//获取属性
Object date=applicationMap.get("date");
System.out.println("date: "+date);
//2:获取session对应的Map,为其添加属性
Map<String, Object> sessionMap=actionContext.getSession();
sessionMap.put("sessionKey","sessionValue");
//3:获取request对应的Map,为其添加属性
Map<String, Object> requestMap=(Map<String, Object>) actionContext.get("request");
requestMap.put("requestKey","requestValue");
//4:获取请求参数对应的Map,并获取指定的参数值
Map<String,Object> parameters=actionContext.getParameters();
//键:请求参数的名字,值:请求参数对应的字符串数组
System.out.println("params: "+((String[])parameters.get("name"))[0]);
return "success";
}
}
二:实现XXX_Aware接口,是解耦和的方式
package cn.mldn.controller;
import java.util.Map;
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.ParameterAware;
import org.apache.struts2.interceptor.SessionAware;
//不与ServletAPI相耦合,测试struts2中ServletXXXAware(Action上下文)这个类的方法
public class TestAwareAction implements ApplicationAware,SessionAware,ParameterAware{
private Map<String, Object> applicationMap=null;
private Map<String,String[]> parameters=null;
private Map<String, Object> sessionMap=null;
public String execute()
{
//1:向application中加入一个属性:applicationKey2->applicationValue2
applicationMap.put("applicationKey2","applicationValue2");
sessionMap.put("sessionKey2", "sessionValue2");
//2:从application中读取一个属性date
Object date=applicationMap.get("date");
System.out.println("date:"+date);
System.out.println("session:"+sessionMap.getClass());
// SesionMap类中有 public void invalidate()方法让session失效
if(sessionMap instanceof SessionMap)
{
SessionMap sessionMap2=(SessionMap<String, Object>)sessionMap;
//sessionMap2.invalidate();//让session会话失效
//System.out.println("session失效了!");
}
//键:请求参数的名字,值:请求参数对应的字符串数组
System.out.println("params: "+parameters.get("name2")[0]);
return "success";
}
@Override
public void setApplication(Map<String, Object> applicationMap) {
this.applicationMap=applicationMap;
}
@Override
public void setParameters(Map<String, String[]> parameters) {
this.parameters=parameters;
}
@Override
public void setSession(Map<String, Object> session) {
this.sessionMap=session;
}
}
三: 使用ServletActionContex,与ServletAPI相耦合
package cn.mldn.controller;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
//与ServletAPI相耦合,测试ServletActionContext这个类,可以获取HttpServletRequet
public class TestServletActionContextAction {
public String execute()
{
HttpServletRequest request=ServletActionContext.getRequest();
HttpSession session=ServletActionContext.getRequest().getSession();
ServletContext application=ServletActionContext.getServletContext();
application.setAttribute("applicationKey3", "applicationValue3");
session.setAttribute("sessionKey3", "sessionValue3");
request.setAttribute("requestKey3", "requestValue3");
System.out.println("execute...");
return "success";
}
}
四:实现ServletXXX-Aware接口,与ServletAPI相耦合
package cn.mldn.controller;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware;
//与ServletAPI相耦合,测试ServletAwareAction这个类,可以获取HttpServletRequet
public class TestServletAwareAction implements ServletRequestAware,ServletContextAware{
private HttpServletRequest request=null;
private ServletContext application=null;
public String execute()
{
HttpSession session=ServletActionContext.getRequest().getSession();
application.setAttribute("applicationKey4", "applicationValue4");
session.setAttribute("sessionKey4", "sessionValue4");
request.setAttribute("requestKey4", "requestValue4");
System.out.println("execute...");
return "success";
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
@Override
public void setServletContext(ServletContext context) {
this.application=context;
}
}
相关文章推荐
- Struts2中访问web元素的四种方式
- Struts2访问request,session,application的四种方式
- Struts2的Action访问ServletAPI的方式
- struts2访问servletAPI的几种方式
- Struts2中访问web元素的四种方式
- Struts2中访问web元素的四种方式及前台jsp页面获取后台值的方式
- JAVAEE学习——struts2_02:结果跳转方式、访问servletAPI方式、获得参数以及封装、练习:添加客户
- 四种struts2访问web元素的方式
- Struts2访问request,session,application的四种方式
- Struts2访问ServletAPI的三种方式
- Struts2访问request,session,application的四种方式
- Struts2的Action中访问servletAPI方式
- Struts2 Action访问web元素的四种方式
- Struts2中访问web元素的四种方式及前台jsp页面获取后台值的方式
- STRUTS2 ACTION 访问WEB元素的四种方式
- Struts2中访问web元素的四种方式及前台jsp页面获取后台值的方式
- Java EE SSH框架之Struts2(3)—— 结果跳转方式和访问ServletAPI方式
- Struts2学习(五)【访问servletAPI方式】
- Struts2中访问web元素的四种方式
- Struts2 访问 Servlet API 的四种方式