struts2学习笔记之六:struts2的Action访问ServletAPI的几种方式

方法一:通过ActionContext访问SerlvetAPI,这种方式没有侵入性

Action类部分代码

import com.opensymphony.xwork2.ActionContext;

    public String execute() throws Exception {
        if("admin".equals(user.getUsername()) && "admin".equals(user.getPassword())){
            //获取Map方式的request
            //ActionContext.getContext().put("msg", "登录成功");
            //获取Map方式的Session
            //ActionContext.getContext().getSession().put("msg", "登录成功");
            //获取Map方式的Application
            ActionContext.getContext().getApplication().put("msg", "登录成功");
            return "success";

        }

        return "error";
    }

方法二:通过ServletActionContext访问SerlvetAPI,这种方式没有侵入性,建议使用这种方式

Action类部分代码

import org.apache.struts2.ServletActionContext;
    public String execute() throws Exception {
        if("admin".equals(user.getUsername()) && "admin".equals(user.getPassword())){
            ServletActionContext.getRequest().setAttribute("msg", "登录成功");
            ServletActionContext.getResponse();
            ServletActionContext.getPageContext().setAttribute("msg", "登录成功");
            ServletActionContext.getRequest().getSession().setAttribute("msg", "登录成功");
            return "success";

        }

        return "error";
    }

方法三:实现装配接口,实现方法(ServletRequestAware,ServletResponseAware)

Action类

package com.djoker.struts2;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;

public class LoginAction implements ServletRequestAware,ServletResponseAware{

    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    private HttpServletRequest request;

    private HttpServletResponse response;

    public String execute() throws Exception {
        if("admin".equals(user.getUsername()) && "admin".equals(user.getPassword())){
            this.request.setAttribute("msg", "登录成功");
            return "success";

        }

        return "error";
    }

    @Override
    public void setServletResponse(HttpServletResponse response) {
        this.response = response;
    }

    @Override
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }

}
时间: 2024-07-30 20:27:18

struts2学习笔记之六:struts2的Action访问ServletAPI的几种方式的相关文章

Action访问ServletAPI的三种方式

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

Struts2学习(二)运行Action中方法的三种方式

1.运行execute()方法 一般的能够直接在action中书写execute,调用action时会自己主动运行此方法 2.配置method方法 在struts.xml中配置action时.写method属性设置方法.例如以下所看到的.这样写能够在一个action类中写多个运行的方法.简化结构. <package name="user" extends="struts-default" namespace="/user"> <

struts2学习笔记(4)---------action中的方法调用

系统需要使用Action的不同方法来处理用户请求,这就需要让同一个Action里面包含多个控制处理逻辑. 1)动态方法调用 即DMI(dynamic method invocation),使用actionName!methodName的形式来指定想要调用的方法,如果想使用DMI,需要在struts.xml里面加入这句话: <constant name="struts.enable.DynamicMethodInvocation" value="true" /&

Citrix XenMobile学习笔记之六:XenMoble业务访问数据流程

总体访问流程图 终端设备注册流程 Android设备注册流程 到google Play或亚马逊应用商店或者豌豆荚.Citrix官网,下载思杰Worx Home应用.并在设备上安装. 当系统提示您安装该应用程序,单击下一步,然后单击安装. 安装Worx Home之后,点击启动. 输入您的认证信息,如设备管理器服务器名,用户主体名称(UPN),或电子邮件地址的名称,然后单击下一步. 在激活设备管理员屏幕上,点击激活. 输入您的账户密码,然后点击点登录. 根据XenMobile的配置方式,您可能会被要

struts2学习笔记之六(Action访问servlet的API以及复制项目小技巧)

action和servlet分离使得action代码更加纯洁,与servlet的耦合性也降低了 但是有时候却不得不访问servlet API,比如把数据放到session,application里, 更甚至于添加cookie(response.addCookie()) strust2提供了两种方式访问servlet api 伪访问 借助于ActionContext类 Map<String ,Object > getApplication() 模拟访问http application Map&l

struts2学习笔记2 -struts2的开发步骤和工作原理

struts2的开发步骤: 1.先定义一个能发送请求的页面,可以是链接,也可以是表单(form) 2.开发action类,struts2对action并没有过多的要求,只要求: a 推荐实现action接口,或继承actionsupport类 b 为每个请求参数都提供feild,并为之提供相应的setter和getter方法 c 该action类应该有无参数构造器 3.配置action类 所有action都需要放在package里配置. <action>元素有如下属性: name 指定该act

Cocos2d-x学习笔记(五岁以下儿童) 精灵两种方式播放动画

 这几天在看控件类,临时没有想好实际运用的方向.单纯的创建网上已经有非常多这方面的样例,我就不写了.接下来是学习精灵类.精灵类若是单独学习也是非常easy.于是我加了一些有关动画方面的知识点与精灵类一起使用.让精灵播放简单的帧动画. 首先我们准备好动画素材,我在网上下了一个小游戏.将里面的素材做成了png和plist大图以供程序调用.我是用TexturePackerGUI来生成plist的.我选的是一个简单的待机动作,我们的目的就是让这张图动起来~ 第一种方式:使用CCSpriteFrame

struts2学习笔记(3)---Action中訪问ServletAPI获取真实类型的Servlet元素

一.源码: 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"> <s

struts2学习笔记(2)---Action中訪问ServletAPI获取Map类型的Servlet元素

源码: strust.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"> <struts