5.1通过actioncontext:

 public String execute() throws Exception {

     ActionContext ctx = ActionContext.getContext();

     // 通过ActionContext访问application范围的属性值

     Integer counter = (Integer) ctx.getApplication().get("counter");

     if (counter == null) {

         counter = 1;

     } else {

         counter = counter + 1;

     }

     // 通过ActionContext设置application范围的属性

     ctx.getApplication().put("counter", counter);

     // 通过ActionContext设置session范围的属性

     ctx.getSession().put("user", getUser());

     if (getUser().equals("zcx")) {

         // 通过ActionContext设置request范围的属性

         ctx.put("tip", "欢迎登录");

         return SUCCESS;

     }

     // 通过ActionContext设置request范围的属性

     ctx.put("tip", "登录失败");

     return ERROR;

 }

取数据:注意写在HTML页面的OGNL表达式语法

${applicationScope.counter}
${
sessionScope.user}
${
requestScope.tip}

5.2实现servletcontextaware、servletrequestaware、servletresponseaware

实现ServletResponseAware 设置cookie

 public class LoginAction implements Action, ServletResponseAware {

     private String user;

     private String pwd;

     private String tip;

     private HttpServletResponse response;

     public String getPwd() {

         return pwd;

     }

     public void setPwd(String pwd) {

         this.pwd = pwd;

     }

     public String getUser() {

         return user;

     }

     public void setUser(String user) {

         this.user = user;

     }

     public String execute() throws Exception {

         ActionContext ctx = ActionContext.getContext();

         // 通过ActionContext访问application范围的属性值

         Integer counter = (Integer) ctx.getApplication().get("counter");

         if (counter == null) {

             counter = 1;

         } else {

             counter = counter + 1;

         }

         // 通过ActionContext设置application范围的属性

         ctx.getApplication().put("counter", counter);

         // 通过ActionContext设置session范围的属性

         ctx.getSession().put("user", getUser());

         if (getUser().equals("zcx")) {

             // 通过response添加Cookie

             Cookie c = new Cookie("user", getUser());

             c.setMaxAge(60 * 60);

             response.addCookie(c);

             // 通过ActionContext设置request范围的属性

             ctx.put("tip", "服务器提示:您已经成功的登录");

             return SUCCESS;

         }

         // 通过ActionContext设置request范围的属性

         ctx.put("tip", "登录失败");

         return ERROR;

     }

     public String getTip() {

         return tip;

     }

     public void setTip(String tip) {

         this.tip = tip;

     }

     @Override

     public void setServletResponse(HttpServletResponse httpServletResponse) {

         this.response = response;

     }

 }

5.3使用servletactioncontext

 public class LoginAction implements Action {

     private String user;

     private String pwd;

     private String tip;

     private HttpServletResponse response;

     public String getPwd() {

         return pwd;

     }

     public void setPwd(String pwd) {

         this.pwd = pwd;

     }

     public String getUser() {

         return user;

     }

     public void setUser(String user) {

         this.user = user;

     }

     public String execute() throws Exception {

         ActionContext ctx = ActionContext.getContext();

         // 通过ActionContext访问application范围的属性值

         Integer counter = (Integer) ctx.getApplication().get("counter");

         if (counter == null) {

             counter = 1;

         } else {

             counter = counter + 1;

         }

         // 通过ActionContext设置application范围的属性

         ctx.getApplication().put("counter", counter);

         // 通过ActionContext设置session范围的属性

         ctx.getSession().put("user", getUser());

         if (getUser().equals("zcx")) {

             // 通过response添加Cookie

             Cookie c = new Cookie("user", getUser());

             c.setMaxAge(60 * 60);

             ServletActionContext.getResponse().addCookie(c);

             // 通过ActionContext设置request范围的属性

             ctx.put("tip", "服务器提示:您已经成功的登录");

             return SUCCESS;

         }

         // 通过ActionContext设置request范围的属性

         ctx.put("tip", "登录失败");

         return ERROR;

     }

     public String getTip() {

         return tip;

     }

     public void setTip(String tip) {

         this.tip = tip;

     }

 }

Struts2-学习笔记系列(4)-访问servlet api的更多相关文章

  1. Struts2学习笔记(五)——Action访问Servlet API

    在Strut2中访问Servlet API有三种方式: 1.通过ActionContext访问Servlet API,推荐使用这种,但是这种方案它获取的不是真正的事Servlet API. 步骤: 1 ...

  2. Struts2笔记--Action访问Servlet API

    Web应用中通常需要访问的Servlet API就是HttpServletRequest.HttpSession和ServletContext,这三个接口分别代表JSP内置对象中的request.se ...

  3. struts2访问servlet API

    搭建环境: 引入jar包,src下建立struts.xml文件 项目配置文件web.xml. web.xml: <?xml version="1.0" encoding=&q ...

  4. struts2中访问servlet API

    Struts2中的Action没有与任何Servlet API耦合,,但对于WEB应用的控制器而言,不访问Servlet API几乎是不可能的,例如需要跟踪HTTP Session状态等.Struts ...

  5. Struts2访问Servlet API的三种方式

    有时我们需要用到Request, Response, Session,Page, ServletContext这些我们以前常用的对象,那么在Struts2中怎么样使用到这些对象呢,通常有三种方式. * ...

  6. struts2学习笔记(四)——访问Servlet的API&结果跳转&数据封装

    一.Struts2访问Servlet的API 前面已经对Struts2的流程执行完成了,但是如果表单中有参数如何进行接收?又或者我们需要向页面保存一些数据,又要如何完成呢?我们可以通过学习Struts ...

  7. struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  8. Struts2学习笔记三 访问servlet

    结果跳转方式 转发 <!-- 转发 --> <action name="Demo1Action" class="cn.itheima.a_result. ...

  9. Struts2学习二----------访问Servlet API

    © 版权声明:本文为博主原创文章,转载请注明出处 Struts2提供了三种方式去访问Servlet API -ActionContext -实现*Aware接口 -ServletActionConte ...

随机推荐

  1. 基于.NetCore3.1搭建项目系列 —— 使用Swagger做Api文档 (下篇)

    前言 回顾上一篇文章<使用Swagger做Api文档 >,文中介绍了在.net core 3.1中,利用Swagger轻量级框架,如何引入程序包,配置服务,注册中间件,一步一步的实现,最终 ...

  2. 1. python跨目录调用模块

    快速镜像安装第三方库 :  pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy (三方库名字) 同目录下,我们可以直接调用模块, ...

  3. Python3 分数

    limit_denominator()定义:通过限制分母的大小来取一个近似值提高精度.格式:fractionobject.limit_denominator('分母最大值') denominator定 ...

  4. 使用 xposed 突破饿了么 ssl pining

    作为一个对各种黑科技充满好奇心的前端工程师,这一次盯上了现在的外卖大佬-饿了么.这篇文章记录了抓包饿了么过程中碰到的问题,以及解决方案,希望能够大家带来一点收获. 工具 夜神模拟器 + charles ...

  5. Building Applications with Force.com and VisualForce(Dev401)(七):Designing Applications for Multiple users:Managing your users' experience I

    Dev 401-007 Designing Applications for Multiple users: Managing your users' experience part 1 Module ...

  6. 01FPGA设计流程

    今天学习了FPGA设计流程的视频,我理解要做一个完整的FPGA系统,所要经历的步骤,先将它简单总结如下: 我在对上面的流程图进行解释: 第一:设计定义就是我们这个FPGA系统或者FPGA设计所要实现的 ...

  7. 粒子群优化算法(PSO)之基于离散化的特征选择(FS)(二)

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 作者:Geppetto 前面我们介绍了特征选择(Feature S ...

  8. R与金钱游戏:美股与ARIMA模型预测

    似乎突如其来,似乎合情合理,我们和巴菲特老先生一起亲见了一次,又一次,双一次,叒一次的美股熔断.身处历史的洪流,渺小的我们会不禁发问:那以后呢?还会有叕一次吗?于是就有了这篇记录:利用ARIMA模型来 ...

  9. 从阿里、腾讯的面试真题中总结了这11个Redis高频面试题

    前言 现在大家的工作生活基本已经是回归正轨了,最近也是迎来了跳槽面试季,有些人已经拿到了一两个offer了. 这段时间收集了阿里.腾讯.百度.京东.美团.字节跳动等公司的Java面试题,总结了Redi ...

  10. Centos 8 上安装 Consul

    /* 1. 下载二进制安装文件 */下载地址:https://www.consul.io/downloads.html /* 2. 解压缩安装包 */unzip consul_1.6.2_linux_ ...