Struts2中访问ServletAPI的四种方式
来源:互联网 发布:cf经常网络出现异常 编辑:程序博客网 时间:2024/06/05 09:51
一: 使用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;
}
}
- Struts2中访问ServletAPI的四种方式
- struts2访问servletAPI的几种方式
- Struts2的Action访问ServletAPI的方式
- Struts2中访问ServletAPI
- Structs中Action访问ServletAPI的几种方式
- Action 中访问servletAPI的方式总结
- Struts2访问ServletAPI的两种途径
- Struts2获取servletAPI的几种方式
- Struts2中Action访问ServletAPI
- 在struts2中访问servletAPI
- Struts2中Action访问ServletAPI
- Struts2访问ServletAPI的三种方式,以及使用推荐对比
- Struts2--获取ServletAPI的方式
- Struts2学习(五)【访问servletAPI方式】
- Struts2中访问web元素的四种方式
- Struts2中访问web元素的四种方式
- Struts2中访问web元素的四种方式
- 总结Struts2获取servletAPI的几种方式
- Consumer与Consumer Group
- 程序插桩-实例
- Android Activity 4种启动模式的详解
- 一道看似很简单的判断A==B问题
- RedHat7.2 如何修改root密码
- Struts2中访问ServletAPI的四种方式
- 数据库char和varchar的区别
- TensorFlow学习笔记11----Building Input Functions with tf.contrib.learn
- linux 归档命令
- CSDN机器学习笔记二 线性回归实例
- 线程池
- Iherb 优惠码
- Tensorflow变量表示神经网络参数
- CSS3 3D transform变换