一、为什么要访问Servlet API ?

Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试。但是对于Web控制器而言,不访问action是不行的,Struts提供了一种比较简单的方式来访问Servlet API 。

二、通常我们需要访问的Servlet API 是 HttpSession、HttpservletRequest、ServletContext,分别对应了JSP内置对象 session,request,application。

三、Action访问Servlet API的三种方法

1、使用ActionContext类访问Servlet API。将HttpSession、HttpservletRequest、ServletContext封装成了Map,用put方法赋值,用EL表达式取。

写在Action类中代码:

public String execute() throws Exception {ActionContext context=ActionContext.getContext();Map request = (Map)context.get("request");Map session = (Map)context.getSession();Map application = (Map)context.getApplication();if("admin".equals(username) && "123".equals(password)){request.put("uesrname",username);return SUCCESS;}else{session.put("username", username);session.put("errorMsg", "您的用户名或密码有误!");return ERROR;}}

写在success.jsp中代码:

<body>登陆成功!!!欢迎您! ${param.username}</body>

写在error.jsp中代码:

 <body>对不起, 登录失败!!!<br/><font color="red">${sessionScope.errorMsg}</font></body>

2、ServletActionContext类提供了3个方法,可直接得到HttpSession、HttpservletRequest、ServletContext对象。

写在Action类中代码:

public String execute() throws Exception {HttpServletRequest request = ServletActionContext.getRequest();HttpSession session = request.getSession();if("admin".equals(username) && "123".equals(password)){request.setAttribute("username", username);return SUCCESS;}else{session.setAttribute("errorMsg", "您输错了用户名或密码!");return ERROR;}}

jsp文件中代码不变。

3、实现***Aware接口直接访问Servlet API

为了使Struts2能够直接访问到Servlet API的实例,Struts2提供了ServletContextAware接口、 ServletRequest接口、 ServletResponsetAware接口。

转载于:https://www.cnblogs.com/iqingchen-vic/p/6964497.html

Action访问Servlet API的三种方法相关推荐

  1. Struts2中Action访问Servlet API的三种方法

    Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,能更轻松的测试该Action.但如何访问? ...

  2. Opencv3编程入门学习笔记(三)之访问图像像素的三种方法

    访问图像像素的三种方法:指针访问,迭代器访问,动态地址访问.访问最快的为指针访问,以下算法在几毫秒,但指针访问容易造成内存泄漏:其次为迭代器访问:最后为动态地址访问. 以下程序是根据<OpenC ...

  3. Action访问Servlet API的对象

    1,Action访问ActionContext的方式:(request session application) Struts2中的Action与Servlet API完全分离,但是在实现业务逻辑处理 ...

  4. Servlet实现的三种方法

    (1)方法一: //这是第一个实现servlet的方法.使用时限servlet接口的方法来实现,使用的时候须要引用servlet-api.jar package com.lc;import javax ...

  5. 获取打气筒API的三种方法

    private class MyListadpater extends BaseAdapter {@Overridepublic int getCount() {return 1000;//返回是几, ...

  6. php获取打开网页文件名,php取得当前访问url文件名的几种方法

    php下获取当前访问的文件名的几种方法. 推荐函数: 一是PHP获取当前页面的网址: dedecms用的也是这个哦. //获得当前的脚本网址 function GetCurUrl() { if(!em ...

  7. 前端js调用后端API获取数据的三种方法(2022.7.25)

    前端js调用后台API获取数据的三种方法(2022.7.25) 前言 需求分析 一个Get实例 浏览器请求 SoapUI软件请求 一个Post实例 浏览器请求 SoapUI软件请求 1.Http简介( ...

  8. Struts(八)Strits2访问servlet API

    1.获得servlet API的两种方法 (1).ServletActionContext类(基本都是静态方法) public static HttpServletRequet getRequest( ...

  9. 关于Struts2三种访问Servlet API方式的总结

    在开发j2ee过程中,通常我们需要访问的Servlet API是:HttpSession,HttpservletRequest,ServletContext,这三者分别对应于JSP的内置对象:sess ...

最新文章

  1. HDU2648(map的应用)
  2. Mysql 索引原理及优化
  3. Shell编程进阶篇(完结)
  4. 虚拟机的性能监控与故障处理——jps,jstat,jinfo,jmap,jhat,jstack
  5. 线程:CountDownLatch同步工具
  6. oracle误删数据的解决方法
  7. 分组取最新记录的SQL
  8. 【Python3网络爬虫开发实战】 1.7-App爬取相关库的安装
  9. react 16 对外暴露function_【第 25 期】React 架构的演变 从同步到异步(一)
  10. Exchange Server 2016体验
  11. 如何为java添加日历控件_laydate日历控件使用方法详解
  12. SQL经典50查询语句案例_5(查询没学过“叶平”老师课的同学的学号、姓名)
  13. springboot 入门详细教程 源码
  14. php.c drcom,成功 将校园客户端drcom搞进openwrt
  15. UEBA架构设计之路3:复杂事件处理引擎
  16. 初中物理60个重要知识点
  17. ICP 问题之 SVD
  18. StoneDB 团队成员与 MySQL 之父 Monty 会面,共话未来数据库形态
  19. 酿酒知识-年会喝酒?你打算如何安排你的酒桌呢?
  20. idea如何配置显示多行tab标签

热门文章

  1. mysql 运行 sql 脚本
  2. 嵌入式环境:挂载开发板根NFS文件系统失败
  3. Mac和 iOS 下的对称和非对称加密算法的使用
  4. 快速写出较好CSS的5种方法
  5. Golang之单元测试
  6. Python输入输出练习,运算练习,turtle初步练习
  7. post传参部分数据丢失
  8. UITableView刷新单个cell或者单个Section
  9. 一个超酷的横向多列响应式布局效果
  10. Docker用Commit给容器做快照