• struts2获取web元素(request、session、application)


    一、Action中获取

    第一种方式:

    通过ActionContext,这种方式取到的对象是Map类型

    import java.util.Map;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UserAction extends ActionSupport{
        
        private String uid;
        
        public String login(){
            
            Map<String , Object> request = (Map<String, Object>) ActionContext.getContext().get("request");
            
            Map<String , Object> session = ActionContext.getContext().getSession();
            
            Map<String , Object> application = ActionContext.getContext().getApplication();
            
            if (uid != null) {
                
                System.out.println(uid);
                session.put("uid" , uid);
            }
            
            return SUCCESS;
        }
        
        public String getUid() {
            return uid;
        }
    
        public void setUid(String uid) {
            this.uid = uid;
        }
    }

    第二种方式:

    通过实现RequestAware,SessionAware,ApplicationAware接口来获取,这种方式获取到的依然是Map类型

    package cn.orlion.actions;
    
    import java.util.Map;
    
    import org.apache.struts2.interceptor.ApplicationAware;
    import org.apache.struts2.interceptor.RequestAware;
    import org.apache.struts2.interceptor.SessionAware;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UserAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
        
        private String uid;
        
        private Map<String, Object> request;
        
        private Map<String, Object> session;
        
        private Map<String, Object> application;
        
        public String login(){
            
            if (uid != null) {
                
                System.out.println(uid);
                session.put("uid" , uid);
            }
            
            return SUCCESS;
        }
        
        public String getUid() {
            return uid;
        }
    
        public void setUid(String uid) {
            this.uid = uid;
        }
    
        @Override
        public void setSession(Map<String, Object> arg0) {
            // TODO Auto-generated method stub
            this.session = arg0;
        }
    
        @Override
        public void setRequest(Map<String, Object> arg0) {
            // TODO Auto-generated method stub
            this.request = arg0;
        }
    
        @Override
        public void setApplication(Map<String, Object> arg0) {
            // TODO Auto-generated method stub
            this.application = arg0;
        }
    }

    第三种方式:

    通过实现ServletRequestAware接口获取到request,然后用request去获取session和application,这种方式获取到的是HttpServletRequest ,HttpSession ,ServletContext类型。

    package cn.orlion.actions;
    
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import org.apache.struts2.interceptor.ServletRequestAware;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UserAction extends ActionSupport implements ServletRequestAware{
        
        private String uid;
        
        private HttpServletRequest request;
        
        private HttpSession session;
        
        private ServletContext application;
        
        public String login(){
            
            if (uid != null) {
                
                session = request.getSession();
                
                application = session.getServletContext();
                
                System.out.println(uid);
           // HttpSession类型,所以用setAttribute方法 session.setAttribute(
    "uid" , uid); } return SUCCESS; } public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } @Override public void setServletRequest(HttpServletRequest arg0) { // TODO Auto-generated method stub this.request = arg0; } }

    第四种方式:

    用ServletActionContext得到request再得到sesion和application,这种获取到的类型与第二种相同

    package cn.orlion.actions;
    
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    import org.apache.struts2.ServletActionContext;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UserAction extends ActionSupport{
        
        private String uid;
        
        private HttpServletRequest request;
        
        private HttpSession session;
        
        private ServletContext application;
        
        public String login(){
            
            if (uid != null) {
                
                request = ServletActionContext.getRequest();
                
                session = request.getSession();
                
                application = session.getServletContext();
                
                System.out.println(uid);
                session.setAttribute("uid" , uid);
            }
            
            return SUCCESS;
        }
        
        public String getUid() {
            
            return uid;
        }
    
        public void setUid(String uid) {
            this.uid = uid;
        }
    }

    二、JSP中获取

    通过session.setAttribute()方式设置的值不能通过<s:property value="#session.uid" />方式获取到。

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="/struts-tags" prefix="s" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>success</title>
    </head>
    <body>
        uid为:<s:property value="#session.uid" />|||<br/>
           ${ sessionScope.uid }
           
           <s:debug></s:debug>
    </body>
    </html>
  • 相关阅读:
    COM编程入门
    DirectShow Filter 开发典型例子分析 ——字幕叠加 (FilterTitleOverlay)1
    互联网的三大巨头 百度 阿里巴巴 腾讯(BAT)
    入侵Tomcat服务器一次实战
    TinyXML:一个优秀的C++ XML解析器
    Apache POI (JAVA处理Office文档的类库)
    MediaInfo源代码分析 4:Inform()函数
    MediaInfo源代码分析 3:Open()函数
    洛谷 P3905 道路重建
    CF16A Flag
  • 原文地址:https://www.cnblogs.com/orlion/p/5017009.html
Copyright © 2020-2023  润新知