1. 在struts2中有两种方式使用SercletAPI,一种解耦方式,一种耦合方式。

2. 解耦方式就是使用ActionContext 来实现,是完全解耦 servletAPI。 ActionContext可以在任何地方使用(action,service,dao).

实例如下:

public String login(){
System.out.println("用户名:"+username+"\t密码:"+password);
if("siggy".equals(username)&&"1111".equals(password)){
//通过ActionContext获取session
Map<String,Object> session = ActionContext.getContext().getSession();
session.put("currentUser", "siggy");
//获取全局域
ActionContext.getContext().getApplication();
//获取请求域中的数据
ActionContext.getContext().get("request");
return Action.SUCCESS;
}
return "login";
}

3. 通过耦合的方式来使用ServletAPI.耦合方式既SercletAPI本身的对象。

  (a) .通过ActionContext来实现耦合。

    实例如下:

//登录处理方法
public String login(){
System.out.println("用户名:"+username+"\t密码:"+password);
if("siggy".equals(username)&&"1111".equals(password)){
//通过ActionContext获取HttpServletRequest对象
HttpServletRequest req = (HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);
req.getSession().setAttribute("currentUser", "siggy");
return Action.SUCCESS;
}
return "login";
}

  (b) 通过ServletActionContext 来获取servletAPI:

    实例如下:

public String login(){
System.out.println("用户名:"+username+"\t密码:"+password);
if("siggy".equals(username)&&"1111".equals(password)){
//通过ServletActionContext获取HttpServletRequest对象
HttpServletRequest req = ServletActionContext.getRequest();
req.getSession().setAttribute("currentUser", "siggy");
return Action.SUCCESS;
}
return "login";
}

  (c)通过实现SerletRuestAware接口来获取HttpServletRequest对象

    实例如下:

public class User3Action implements ServletRequestAware{
private String username;
private String password; private HttpServletRequest req;
//登录处理方法
public String login(){
System.out.println("用户名:"+username+"\t密码:"+password);
if("siggy".equals(username)&&"1111".equals(password)){
req.getSession().setAttribute("currentUser", "siggy");
return Action.SUCCESS;
}
return "login";
}
public void setServletRequest(HttpServletRequest request) {
req = request;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

struts2 之 ServletAPI的更多相关文章

  1. Struts2访问ServletAPI的三种方式

    web应用中需要访问的ServletAPI,通常只有HttpServletRequest,HttpSession,ServletContext三个,这三个接口分别代表jsp内置对象中的request, ...

  2. struts2访问ServletAPI方式和获取参数的方式

    一.访问ServletAPI的三种方式 方式1:通过让Action类去实现感知接口. 此时项目依赖:servlet-api.jar. ServletRequestAware:感知HttpServlet ...

  3. 2018.11.21 struts2获得servletAPI方式及如何获得参数

    访问servletAPI方式 第一种:通过ActionContext (重点及常用 都是获得原生对象) 原理 Action配置 被引入的配置文件 在页面调用取值 第二种:通过ServletAction ...

  4. java之struts2之ServletAPI

    在之前的学习中struts2已经可以处理大部分问题了.但是如果要将用户登录数据存入session中,可以有两种方式开存入ServletAPI. 一种解耦合方式,一种耦合方式. 1. 解耦合方式 解耦合 ...

  5. Struts2与ServletAPI解耦

    什么是与Servlet API解耦? 为了避免与servlet API耦合在一起,方便Action做单元测试, Struts2对HttpServletRequest,HttpSession,和Serv ...

  6. 【深入Struts2】获取ServletAPI的三种方式

    一:获取servletAPI的三种方法 在传统的Web开发中,经常会用到Servlet API中的HttpServletRequest.HttpSession和ServletContext.Strut ...

  7. Struts2的经典入门

    一:Struts2的起源与背景 在了解Struts2之前我们先来聊聊Struts1,我们都知道在很长的一段时间内,所有的MVC框架中,Struts1他是处于一个超级大咖的地位,无论是从市场角度和使用的 ...

  8. Struts2 入门

    一.Struts2入门案例 ①引入jar包 ②在src下创建struts.xml配置文件 <?xml version="1.0" encoding="UTF-8&q ...

  9. 【Java EE 学习 35 上】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】【资源文件乱码问题已经解决】

    一.类型转换器 1.在动作类action中,声明和表单中name属性的值同名的属性,提供get和set方法,struts2就可以通过反射机制,从页面中获取对应的内容 package com.kdyzm ...

随机推荐

  1. Triangle Problems

    Triangle Problem songxiuhuan 宋修寰 Import the Junit and eclemma Choose the project and right click, ch ...

  2. ACM Fibonacci数 计算

    Fibonacci数 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递 ...

  3. UI --UIView 及其子类

    一 > UIView  1> iOS 概述: iOS 是 Apple 公司的移动操作系统,主要用于iPhone, iPad, iPad Mini , iPod Touch 等移动产品. 借 ...

  4. Centos 7 上安装使用 vscode

    #系统信息 Linux localhost.localdomain 3.10.0-327.el7.x86_64  x86_64 x86_64 x86_64 GNU/Linux 进入 vscode 下载 ...

  5. PHP之流程的控制

       在一个公司中,员工肯定会有高层.中层和普通员工的,这样如果在某个公司员工遇到某种问题,需要请假.或者提一些请求的时候,就会需要去申请,申请的时候有的是可以直接和上级申请的,有时比较重要的事情,是 ...

  6. php人员权限管理(RBAC)

    在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法  (4).可以添 ...

  7. MSDN官方数据库开发群

    QQ群1:43563009 创建人:中国风(Roy_88) 创建时间:2007-07-21 当前人数:326人 QQ群2:27156079 创建人: fcuandy 创建时间:2008-03-20 当 ...

  8. Linux之cut命令

    cut 参数: -d  指定分隔符,与-f 一起使用,默认是空格.例如:-d“|” -f  指定取第几段的数据与-d一起使用 -c  以字符为单位取出固定字符区间 示例: 取不连续区间的内容的时候使用 ...

  9. Spring的IoC容器

    Spring是一个轻量级的Java开发框架,其提供的两大基础功能为IoC和AOP,其中IoC为依赖反转(Inversion of Control).IOC容器的基本理念就是"为别人服务&qu ...

  10. build.gradle代码

    Android Studio 这么强大的工具,就算我们不懂 gradle, groovy, 也照样能借助AS对 Android 项目进行编译.调试.运行.打包等操作.build.gradle 这个文件 ...