struts2访问ServletAPI方式和获取参数的方式
一、访问ServletAPI的三种方式
方式1:通过让Action类去实现感知接口.
此时项目依赖:servlet-api.jar.
- ServletRequestAware:感知HttpServletRequest对象;
- ServletResponseAware:感知HttpServletResponse对象;
- ServletSessionAware:感知HttpSession对象;
public class ServletApiAction1 extends ActionSupport implements ServletRequestAware{
private static final long serialVersionUID = 1L;
private HttpServletRequest request;
@Override
public String execute() throws Exception {
//获取请求参数
System.out.println("HHH" + request.getParameter("name"));
return SUCCESS;
}
//注意这里依赖于servlet-api.jar
public void setServletRequest(HttpServletRequest req) {
this.request = req;
}
}
方式二:使用ServletActionContext类,该类提供很多静态方法可以返回Servlet API对象
public class ServletApiAction2 extends ActionSupport{
private static final long serialVersionUID = 1L;
@Override
public String execute() throws Exception {
//获取请求参数
System.out.println("objk" + ServletActionContext.getRequest().getParameter("name"));
//通过请求得到session对象
ServletActionContext.getRequest().getSession().setAttribute("sessionKey", "我是session");
//得到响应对象
ServletActionContext.getResponse().sendRedirect("/view/welcome.jsp");
return NONE;
}
}
方式3.使用ActionContext类,本身是Struts2对Servlet API的封装
ActionContext使用了ThreadLocal模式,所以说是线程安全的
实际得到的都是map可以直接向map中添加数据或者获取数据
public class ServletApiAction3 extends ActionSupport{
private static final long serialVersionUID = 1L;
@Override
public String execute() throws Exception {
//获取请求参数
Map<String, Object> parameters = ActionContext.getContext().getParameters();
System.out.println(parameters);
//request作用域
ActionContext.getContext().put("requestName", "requestValue");
//Session作用域
ActionContext.getContext().getSession().put("sessionName", "sessionValue");
//application作用域
ActionContext.getContext().getApplication().put("applicationName", "applicationValue");
return SUCCESS;
}
}
二、获取请求参数的三种方式
方式一:第一种:Action本身作为Model对象,通过setter方法封装(属性注入)
对属性提供setter方法,拦截器会自动给调用方法把参数设置给属性
public class LoginAction1 extends ActionSupport {
private static final long serialVersionUID = 1L;
private String username;
private String password;
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public String execute() throws Exception {
System.out.println(username + "," + password);
return NONE;
}
}
方式二:创建独立Model对象,页面通过ognl表达式封装(属性注入)
把请求参数先封装成一个对象,例如把username 和password封装成了User对象
public class LoginAction2 extends ActionSupport {
private static final long serialVersionUID = 1L;
private User user;
/**
* jsp中的 user.username 用action对象调用getUser()得到user对象然后给属性设置值
*/
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String execute() throws Exception {
System.out.println(user);
return NONE;
}
}
此时jsp界面这样写
<h3>登录页面 方式二</h3>
<form action="/params/login2" method="post">
账号 <input type="text" name="user.username"/><br/>
密码<input type="text" name="user.password"/><br/>
<input type="submit" value=" 登录 ">
</form>
方式三:使用ModelDriven接口,对请求数据进行封装(模型驱动)
public class LoginAction3 extends ActionSupport implements ModelDriven<User>{
private static final long serialVersionUID = 1L;
//必须自己创建对象
private User user = new User();
@Override
public User getModel() {
return user;
}
@Override
public String execute() throws Exception {
System.out.println(user);
return NONE;
}
}
struts2访问ServletAPI方式和获取参数的方式的更多相关文章
- 使用HTTP协议向服务器传参的方式及django中获取参数的方式
使用HTTP协议向服务器传参的四种方式 URL路径携带参数,形如/weather/beijing/2018; 查询字符串(query string),形如key1=value1&key2=va ...
- DRF框架获取参数的方式
DRF获取参数的方式 例如url url(r'^demo/(?P<word>.*)/$', DemoView.as_view()) 在类视图中获取参数 url:http://127.0.0 ...
- Struts2访问ServletAPI的三种方式
web应用中需要访问的ServletAPI,通常只有HttpServletRequest,HttpSession,ServletContext三个,这三个接口分别代表jsp内置对象中的request, ...
- Json 后台转对象的方式或者获取属性值方式。
类似这类的 json字符串 后台转成 model 或者取其中一个属性值. 需要去掉前后引号 以及将转义字符去掉.空格代替 resoult = resoult.Substring(0, resoult. ...
- koa通过get请求获取参数
1.通过get方式请求获取参数的方式有两种 通过上下文获取 通过request获取 获得的格式有两种:query与querystring 注意:querystring为小写,驼峰格式会导致无法获取 2 ...
- 2018.11.21 struts2获得servletAPI方式及如何获得参数
访问servletAPI方式 第一种:通过ActionContext (重点及常用 都是获得原生对象) 原理 Action配置 被引入的配置文件 在页面调用取值 第二种:通过ServletAction ...
- Struts2-整理笔记(四)Action生命周期、如何获取参数(3种)、集合类型参数封装
一.Action生命周期 每次请求到来时,都会创建一个新的Action实例 Action是线程安全的,可以使用成员变量接收参数 二.获取参数的方式(3种) 1.属性驱动获得参数 每次请求Action时 ...
- python DRF获取参数介绍
DRF获取参数的方式 例如url url(r'^demo/(?P<word>.*)/$', DemoView.as_view()) 在类视图中获取参数 url:http://127.0.0 ...
- springMVC --@RequestParam注解(后台控制器获取参数)
在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取. 1.获 ...
随机推荐
- python--HTTPClient接口测试踩坑
1.今天下午做接口测试的时候遇到一个奇怪的问题:原因不明 requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisc ...
- WPF 元素的查找
预设置元素名字 WPF有两种方式设置元素的Name <StackPanel x:Name="panel"> <Label Name="name1&quo ...
- 『Json』常用方法记录
json模块可以把字典结构改写为string然后保存,并可以反向读取字典 pickle模块则可以持久化任意数据结构 但是即使同样是字典数据结构,两个包也是有差别的, json字典value不支持其他对 ...
- LICEcap 和 FS Capture入门教程
上一篇介绍了如何使用 Visio 图形图表工具,文中贴了一张gif图,留言的小伙伴们迫不及待想知道如何录制 GIF 图,强哥姑且卖弄一次,把 PC 端截图工具和教程分享给大家,分别为 LICEcap ...
- HDU 2157 矩阵幂orDP
How many ways?? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- div节点的操作(添加,删除,替换,克隆)
<html> <head> <title></title> <style type="text/css"> div{ b ...
- 第5章——使用 Razor(MVC框架视图引擎)
Razor 是MVC框架视图引擎的名称. 本章提供 Razor 语法的快速教程,以使你能够识别 Razor 表达式. 本章不打算提供 Razor 的完整参考,而将其视为一个语法速成教程.在本书的后续内 ...
- Syntax error: Bad for loop variable解决办法
从 ubuntu 6.10 开始,ubuntu 就将先前默认的bash shell 更换成了dash shell:其表现为 /bin/sh 链接倒了/bin/dash而不是传统的/bin/bash. ...
- OC 类的本质和分类
一.分类 (一)分类的基本知识 概念:Category 分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件结构图: 在分类中添加一 ...
- iddea代码调试debug篇
代码调试debug篇 主要看图,看图一目了然. 断点的设定和eclipse一样,只要点一下就可以,下面是我设定的几个断点,再下面的三个窗口是用来调试代码的,这个和eclipse类似 调试常用的快捷键 ...