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.获 ...
随机推荐
- English trip -- 国际音标表
26个字母音标表 A a [ei] B b [bi:] C c [si:] D d [di:] E e [i:] F f [ef] G g [dʒi:] H h [eit∫] I i [ai] J j ...
- (转)TeamViewer三种许可证的区别是什么?
xu言: 这几天在使用teamview对它的许可证做了一些了解,看到这个好像是官方的写的挺不错.留作收藏 PS:https://www.uret.in/ 顺便也发现了一个不错的网站 很多想要购买Te ...
- 3-9《元编程》第3章Tuesday:methods
第3章methods Ruby是动态语言,有静态语言实现不了的技巧.本章讲解代码的重构,把代码变得更简洁. 3.2Dynamic Methods 3.21Calling Methods Dynamic ...
- bzoj 1267 Kth Number I (点分治,堆)
超级钢琴的树上版本, 类似做法即可, 只不过区间转为dfs序了, 用点分求一下, 复杂度$O(nlog^2n)$ #include <iostream> #include <algo ...
- 『PyTorch x TensorFlow』第八弹_基本nn.Module层函数
『TensorFlow』网络操作API_上 『TensorFlow』网络操作API_中 『TensorFlow』网络操作API_下 之前也说过,tf 和 t 的层本质区别就是 tf 的是层函数,调用即 ...
- OAF页面集成条形码或者二维码
OAF页面集成条形码 OAF生成条形码 OAF页面集成二维码跟这个类似,生成二维码需要以下jar包,zxing-core.jar, zxing-javase.jar,可自行去maven下载. 代码如下 ...
- Markdown语法笔记
1.文字和图片中怎么让图片换行? 答:在文字和图片之间加入多个空格或者直接按Tab健即可
- Win10 dell驱动触摸板安装
Win10 dell驱动触摸板安装 在此之前安装驱动后要重启
- 小L的区间求和
题目描述 在给定的一个整数序列中,小L希望找到一个连续的区间,这个区间的和能够被k整除,请你帮小L算一下满足条件的最长的区间长度是多少. 输入 第一行输入两个整数n.k.(1 <= n < ...
- cf935E
题解: 树形dp 要记录一个最小的,一个最大的 然后转移 代码: #include<bits/stdc++.h> using namespace std; ; ][],f[N*][],T[ ...