Struts 2--Struts 2访问ServletAPI对象

ServletAP解析:API(Application Programming Interface) 应用程序编程接口。

   ServletAPI就是和Servlet相关的一组接口和类。

  为了能够实现对ServletAPI对象的访问,Struts 2 提供了多种方式,但归结起来可分为两大类:

  1.与ServletAPI解耦的访问方式

  2.与ServletAPI耦合的访问方式

下面介绍解耦方式:  

1.使用ActionContex类获取ServletAPI对象对应的Map对象。

public class LoginAction implements Action {

    private UserInfo user =new UserInfo();
    @Override
    public String execute() throws Exception {

        if(user.getUserName().equals("admin") && user.getPassword().equals("admin")){

             Map<String, Object> session = ActionContext.getContext().getSession();
             session.put("name", user.getUserName());
            return "success";
        }else{
            return "error";
        }
    }
    public UserInfo getUser() {
        return user;
    }
    public void setUser(UserInfo user) {
        this.user = user;
    }

}

2.向Action注入ServletAPI对象对应的Map对象

public class LoginAction implements Action,SessionAware {

    private UserInfo user =new UserInfo();
    private Map<String, Object> map;

    @Override
    public String execute() throws Exception {

        if(user.getUserName().equals("admin") && user.getPassword().equals("admin")){

            map.put("name", user.getUserName());
            return "success";
        }else{
            return "error";
        }
    }

    //SessionAware实现方法
    @Override
    public void setSession(Map<String, Object> map) {
        this.map=map;
    }

    public UserInfo getUser() {
        return user;
    }
    public void setUser(UserInfo user) {
        this.user = user;
    }

    public Map<String, Object> getMap() {
        return map;
    }
    public void setMap(Map<String, Object> map) {
        this.map = map;
    }

}

第三种:

public class LoginAction implements Action,ServletRequestAware {

    private UserInfo user =new UserInfo();
    private HttpServletRequest request;

    @Override
    public String execute() throws Exception {

        if(user.getUserName().equals("admin") && user.getPassword().equals("admin")){

            request.setAttribute("name", user.getUserName());
            return "success";
        }else{
            return "error";
        }
    }

    //ServletRequestAware实现方法
    @Override
    public void setServletRequest(HttpServletRequest request) {
        this.request=request;
    }

    public HttpServletRequest getRequest() {
        return request;
    }

    public void setRequest(HttpServletRequest request) {
        this.request = request;
    }

    public UserInfo getUser() {
        return user;
    }
    public void setUser(UserInfo user) {
        this.user = user;
    }

}

耦合方式:

第一种:

public class LoginAction implements Action {

    private UserInfo user =new UserInfo();
    @Override
    public String execute() throws Exception {

        if(user.getUserName().equals("admin") && user.getPassword().equals("admin")){

            HttpSession session = ServletActionContext.getRequest().getSession();
            session.setAttribute("name", user.getUserName());
            return "success";
        }else{
            return "error";
        }
    }
    public UserInfo getUser() {
        return user;
    }
    public void setUser(UserInfo user) {
        this.user = user;
    }
}

第二种:

public class LoginAction implements Action {

    private UserInfo user =new UserInfo();
    @Override
    public String execute() throws Exception {

        if(user.getUserName().equals("admin") && user.getPassword().equals("admin")){

            Map<String, Object> session = ServletActionContext.getContext().getSession();
            session.put("name", user.getUserName());
            return "success";
        }else{
            return "error";
        }
    }
    public UserInfo getUser() {
        return user;
    }
    public void setUser(UserInfo user) {
        this.user = user;
    }

}
时间: 2025-01-02 09:25:49

Struts 2--Struts 2访问ServletAPI对象的相关文章

Action访问ServletAPI的三种方式

一.前言 Struts是一种基于MVC设计模式的web应用框架,主要担任C的角色,用于分离页面显示和业务逻辑处理,那其实在我们学习jsp的时候学过一个具有类似功能的东西--servlet.其实Struts本质上相当于servlet,可以理解Struts是对servlet的进一步封装和抽象.那么在servlet里面使用的对象,在Struts里面同样也是可以使用的,这也是这一章的主要内容. 二.传统的Web程序和Web容器传递数据的方法 HttpServletRequest的getParameter

Struts 2的OGNL的根对象

Struts2中的OGNL表达式语言是对Xwork的OGNL的封装.我们要理解一下几点: 1. Struts2中将ActionContext作为OGNL的上下文环境(ActionContext内部含有一个Map对象) 2. Struts2中的OGNL表达式语言的根对象是一个ValueStack,ValueStack中的每一个对象都被视为根对象. Struts2框架将实例化的Action对象放入ValueStack中,如果是Action链,则多个Action都存在于ValueStack中.而Val

JAVAEE学习——struts2_02:结果跳转、访问servletAPI、获得参数以及封装、练习:添加客户

一.结果跳转方式 <action name="Demo1Action" class="cn.itheima.a_result.Demo1Action" method="execute" > <result name="success" type="dispatcher" >/hello.jsp</result> </action> 转发 <action

OGNL访问复杂对象和静态方法

今天学习了Struts的OGNL访问复杂对象和静态方法,现在来总结下. 1.OGNL访问复杂对象 (1)先创建包model.action.在model中创建模型Student(name,age).action中创建HelloAction package com.fangchao.action; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; imp

在struts2中访问servletAPI

在struts2中访问servletAPI,通俗点也就是使用servlet中的两个对象request对象和response对象. 前几天看到一个CRM项目的源码,里面使用request对象和response对象方式和我以前使用的方式有点不同,于是便上网查询一些相关资料.特此记录于此,有兴趣的也可以参考参考. 以往使用struts2往网页填充数据通常采用往值栈存放数据,也就是ActionContext.getContext().****();后面的方法类似与request对象和response对象

struts2中耦合访问servlet- API

struts2中耦合访问servlet- API有三种,推荐使用第二种.当然,尽量用解耦合的方式访问,解耦合方式访问内容在上一篇文章中有解释,需要者请查看. 方法一:.[一般推荐使用](只能获得request,而response则得不到) Struts2提供了一个ActionContext类,Struts2中的Action可以通过它进行访问. 其方法有:get(),getApplication(),getContext(),getParameters(),getSession(),setAppl

通过指针访问C++对象的私有成员

C++对象的私有成员是禁止类外的访问的.但是我们仍然可以通过指针访问C++对象的私有成员. #include <iostream> using namespace std; class A { public: A(int i = 0) :m_i(i) {} void print() { cout << "m_i" << this->m_i << endl; } private: int m_i; }; int main(int ar

Struts(2) struts.xml

通常struts.xml都是如下形式: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <st

OpenCV访问Mat对象中数据时发生异常---Mat中的数据访问

7.1和7.1.1由于越狱不成熟,半完美越狱后电脑上无法访问系统越狱目录,如var usr 等等. 今天有些意外地发现,可以在电脑上使用手机的越狱目录我手机 i4 7.1.1 联通 半完美越狱,没装Afc2Add,也没装Appsync 附上  --->我的半完美越狱过程 好了,下面直接正题 一.前提,必须安装ifile! 打开ifile,并转到 /var/mobile/media 目录下,然后点击右上角的 [ 编辑 ]如图: 二.点左下角的 + 号创建,如图: 三.点 [ 类型],选择[符号链接