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.获 ...
随机推荐
- LeetCode--125--验证回文串
问题描述: 好 times out: class Solution(object): def isPalindrome(self, s): """ :type s: st ...
- LeetCode--058--最后一个单词的长度
问题描述 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但不包含任何空格的字符串. 示例: 输入: ...
- 4-4 集成测试练习,和测试基础知识(guide)。
Guide指南 18章应用测试指南(简单学习了一下.) (中文版--主要是为了先理解,之前看过英文版受语言影响,怕理解有偏差.) Minitest::Test是ActiveSupport::TestC ...
- 3-13《元编程》第5章Class Definitions 3-14(5-4Singleton Classes,2小时)3-15(3小时✅)
类宏 环绕别名 singleton class Class就是增强的模块,类定义也就是模块定义. 5.1 Class Definitions Demystified 5.11 Inside Class ...
- HDU-3729 二分匹配 匈牙利算法
题目大意:学生给出其成绩区间,但可能出现矛盾情况,找出合理组合使没有说谎的人尽可能多,并按maximum lexicographic规则输出组合. //用学生去和成绩匹配,成绩区间就是学生可以匹配的成 ...
- Three Pieces CodeForces - 1065D (BFS)
链接 大意: n*n棋盘, 每个格子写有数字, 各不相同, 范围[1,n*n], 初始在数字1的位置, 可以操纵knight,bishop,rook三种棋子, 每走一步花费1, 交换棋子花费1, 问按 ...
- 页面跳转 Server.Transfer和 Response.Redirect的区别
1.Server.Transfer 用于把处理的控制权从一个页面转移到另一个页面,在转移的工程中没有离开服务器内部控件(如request,session等)保存的信息不变.因此你能从a页面跳转到b页面 ...
- git在eclipse中的配置 转载
git在eclipse中的配置 转载 一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜索EG ...
- PL/SQL Developer 使用中文条件查询时无数据的解决方法(转)
原文地址: PL/SQL Developer 使用中文条件查询时无数据的解决方法 PL/SQL Developer 使用中文条件查询时无数据,这是由于字符集的不一致导致的. 执行以下sql命令:sel ...
- 使用tomcat启动dubbo项目
首先,黑体标出 官方不推荐使用web容器进行dubbo的启动 但是,有些时候,我们不采用他们的建议. 背景: 之前用的dubbo项目,是由main函数启动的,每次发布项目,需要启动两项: 1. tom ...