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. vscode灰暗色主题和 左侧加图标 Spacegray VSCode vscode-icons

    vscode灰暗色主题和 左侧加图标 Spacegray VSCode vscode-icons

  2. 改变 C/C++ 控制台程序的输出颜色和样式

    我们经常可以看见Linux自带终端下的许多程序都输出了不同颜色和底纹的字体.最近也想要自己实现一下这种效果,方法是在输出流中插入占位符\033[***. 我从网上收集了一些常用的控制语句,并用以下代码 ...

  3. 在5G+AI+Cl 拉动互联网走向物联网

    大家好我是浅笑若风,今天在这里和大家聊聊的是:5G+AI+CL拉动互联网走向物联网 在虫洞时空里我们早已能遇见到世界的尽头会是什么样子,微服务,微生活的迅速发展的时代.我们在虚拟的多次元世界购物.交易 ...

  4. 利用JDBC工具类添加和查询数据-Java(新手)

    JDBC工具类: 1 package cn.lxr.jdbclx; 2 3 import java.sql.*; 4 5 public class JDBCUtils { 6 private stat ...

  5. 后端程序员必备:书写高质量SQL的30条建议

    前言 本文将结合实例demo,阐述30条有关于优化SQL的建议,多数是实际开发中总结出来的,希望对大家有帮助. 1.查询SQL尽量不要使用select *,而是select具体字段. 反例子: sel ...

  6. 控制游戏/app使用期限/过期,证书有效期,弹出公告支持离线使用/后端控制,支持Swift、Objective-C集成非常简单,永久免费框架

    CertCheck.framework (for iOS) 只能运行于真机上,切勿在模拟器上使用 这是一个控制游戏/app使用期限(到设定的时间无法打开app),或发布弹出公告永久免费的框架,可以全版 ...

  7. 学习vue前的准备工作

    起步 1.扎实的HTML/CSS/Javascript基本功,这是前置条件. 2.不要用任何的构建项目工具,只用最简单的<script>,把教程里的例子模仿一遍,理解用法.不推荐上来就直接 ...

  8. jwt token认证

    目录 1.drf-jwt手动签发与校验 2.drf小组件:过滤.筛选.排序.分页 => 针对与群查接口 jwt_token源码分析(入口) 签发token源码分析 校验token源码分析 url ...

  9. 【2019牛客暑期多校第一场】E题ABBA

    题目链接 大致题意 有(n+m)(n + m)(n+m)个字母A和(n+m)(n + m)(n+m)个字母B,组成一个长度为 2∗(n+m)2*(n + m)2∗(n+m)的字符串,并且使得字符串中有 ...

  10. 深度学习vs机器学习 | 这些本质区别你知道多少?

    目录: 数据相关性 硬件依赖性 特征工程 解决问题方法 执行时间 可解释性 一.数据相关性 深度学习与传统机器学习最重要的区别是,随着数据量的增加,其性能也随之提高.当数据很小的时候,深度学习算法并不 ...