zoukankan      html  css  js  c++  java
  • 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;
        }
        
    }
  • 相关阅读:
    Linux内核参数信息(Oracle相关)
    Android和java平台 DES加密解密互通程序及其不能互通的原因
    [置顶] ※数据结构※→☆线性表结构(queue)☆============循环队列 顺序存储结构(queue circular sequence)(十)
    理解 Thread.Sleep 函数
    引导加载程序:GRUB
    xvfb 初步探究
    [置顶] 中国象棋程序的设计与实现(原始版)(包含源码)
    Ext图表的精彩
    JSTL解析——004——core标签库03
    Servlet API中文版
  • 原文地址:https://www.cnblogs.com/djoker/p/6218587.html
Copyright © 2011-2022 走看看