struts2第十讲学习笔记,获取Servlet.api的两种方式
来源:互联网 发布:java 外贸电商平台 编辑:程序博客网 时间:2024/06/16 00:01
解耦使得使用struts2来进行测试的时候,不需要启动服务器。一定程度上提高了开发效率.
使用解耦的方式来获取Servlet.api,通过ActionContext对象获取
ActionContext获取的session,request,application并不是真正的HttpServletRequest,HttpServletResponse,ServletContext对象,
而是将这三个对象里面的值重新包装成了map对象.
这样的封装,可以让我们及时获取到值,并且避免和web容器直接打交道,实现了完全的解耦。
获取Servlet中的requset的两种方式
1.解耦方式获取requset
//获取session
ActionContext ac = ActionContext.getContext().
Map<String,Object> session = as.getSession();//看,这里是put,这是Map集合哦
session.put("user",name);
//获取request---HttpServletRequest对象的attributes(一些键值对)
Map<String,Object> requset = ac.get("requset");
Map<String,Object> requset = Map<String,Object>ActionContext.getContext().get("request");
这拿到了request的相当于attributes的键值对
1.什么是ActionContext?
ActionContext是map结构的容器,ActionContext是Action上下文,存放Action执行过程中的数据信息,如requset,session,application的数据。
每次请求都都会为当前线程创建一个新的ActionContext.因此ActionContext是线程安全的。
2.ActionContext的获取方式
ActionContext可以通过ActionContext类的静态方法getContext获取到,ActionContext as = ActionContext.getContext();
由于ActionContext是线程安全的,并且是通过静态方getContext()获取到的,所以在本线程中的非Action类中也可以访问
注意:ActionContext是基于请求创建的,所以在非请求的线程中是不能使用ActionContext对象的,如filter的init()方法。
完整action代码
public class Login {
private String username;
private String pwd;
public String execute(){
return login();
}
public String login(){
if("siggy".equals(username)&&"1111".equals(pwd)){
//获取session
ActionContext as = ActionContext.getContext();
Map<String,Object> session = as.getSession();
session.put("user", username);
//获取requset的HttpServletRequest的attributes对象
//Map<String,Object> request = (Map<String,Object>)ActionContext.getContext().get("request");
Map request = (Map) as.get("request");request.put("password",pwd);
System.out.println(request.get("password"));
return Action.SUCCESS;
}else
{
return Action.LOGIN;
}
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
jsp页面上请求${user } 打印出来的是username的值
在服务器端,也能接收到密码,它是通过requset拿到的
耦合
2.通过获取ServletActionContext工具类获取HttpServletRequset对象
HttpServletRequset requset = ServletActionContext.getRequset();//这里的requset是服务器创建的请求,所以跟web服务器有耦合的地方。
package cn.sxt.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.Action;
public class Login {
private String username;
private String pwd;
public String execute(){
return login();
}
public String login(){
if("siggy".equals(username)&&"1111".equals(pwd)){
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
session.setAttribute("user", username);
request.setAttribute("password", pwd);
System.out.println(request.getAttribute("password"));
return Action.SUCCESS;
}else{
return Action.LOGIN;
}
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
JSP代码: ${user },欢迎你 this is success.jsp
页面显示 : siggy,欢迎你 this is success.jsp
控制台显示 1111
- struts2第十讲学习笔记,获取Servlet.api的两种方式
- Struts2获取Servlet API的两种方式
- Struts2第九讲学习笔记Action的三种实现方式,两种驱动方式
- struts2中,action访问servlet api的两种方式
- struts2获取请求的两种方式
- 在Struts2框架中获取Servlet api的三种方式
- Struts2中Action访问Servlet API的两种方法
- Struts2中Action访问Servlet API的两种方法
- Struts2中Action访问Servlet API的两种方法
- struts2学习之访问Servlet对象的两种实现方式
- 【Struts2七】struts2获取表单元素的两种方式
- struts2中Action访问servlet的两种方式
- struts2的servlet的API的三种方式
- struts2 获取servlet API
- 非IoC方式访问Servlet API的两种方法
- Struts2学习笔记----访问Servlet API
- Struts2访问Servlet API的三种方式
- Struts2 访问 Servlet API 的四种方式
- 代码健壮性 --- 失误点:对规则的变动不能良好处理
- Kotlin编程之代理模式
- Java实现设计模式之适配器模式
- 搭建服务器(Tomcat,struts)
- 微擎模块安装文件manifest.xml
- struts2第十讲学习笔记,获取Servlet.api的两种方式
- Java中变量的说明,常量的表示方式,Java数据类型,个别运算符的说明
- Linux下守护进程编程c语言实例
- python基础语法-0531
- React-Element 元素之动态显式当前时间
- php核心学习-设计模式的学习-注册树模式
- linux下ftp的安装
- RHEL 7.0 64位使用CentOS7 yum源
- 前端安全之XSS