Struts2里如何取得request,session,application

2024-08-21 11:32

本文主要是介绍Struts2里如何取得request,session,application,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. 一共有4种方法
    第一种:
    取得MAP类型的request,session,application
    在java文件里写
    package com.xjtu.st;import java.util.Map;import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport{private Map request;private Map session;private Map application;public LoginAction(){request = (Map)ActionContext.getContext().get("request");session = ActionContext.getContext().getSession();application = ActionContext.getContext().getApplication();}public String execute(){request.put("rs", "rs");session.put("ss", "ss");application.put("as", "as");return SUCCESS;}
    }
    
    ActionContext.getContext()是获得Action的上下文,然后可以获得MAP类型的request等
  2. 在输出页面可获得参数
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <%@ taglib uri="/struts-tags" prefix="s" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html><head><title>My JSP 'MyJsp.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body>hello  <br><s:property value="#request.rs"/> <br><!--  //通过标签取值--><s:property value="#session.ss"/> <br><s:property value="#application.as"/> <br><%=request.getAttribute("rs") %><br><!-- 用原始的方法取值--><%=session.getAttribute("ss") %><br><%=application.getAttribute("as") %><br></body>
    </html>
    

  3. 第二种:
    实现RequestAware,SessionAware,ApplicationAware接口,该方法成为DI(依赖注入)或者IOC(控制反转)。代码如下
    package com.xjtu.st;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.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{private Map request;private Map session;private Map application;public String execute(){request.put("rs", "rrs");session.put("ss", "sss");application.put("as", "aas");return SUCCESS;}public void setRequest(Map<String, Object> request) {// TODO Auto-generated method stubthis.request=request;}public void setSession(Map<String, Object> session) {// TODO Auto-generated method stubthis.session= session;}public void setApplication(Map<String, Object> application) {// TODO Auto-generated method stubthis.application = application;}
    }
    

    前面2种是取得Map类型的,后两种是取得HtteServletRequest,HttpSession,ServletContext类型的办法
  4. 第三种:
    代码如下
    package com.xjtu.st;import java.util.Map;import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.interceptor.ApplicationAware;
    import org.apache.struts2.interceptor.RequestAware;
    import org.apache.struts2.interceptor.SessionAware;import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {private HttpServletRequest request;private HttpSession session;private ServletContext application;public LoginAction(){request= ServletActionContext.getRequest();session = request.getSession();application = session.getServletContext();}public String execute(){request.setAttribute("rs", "rrrs");session.setAttribute("ss", "ssss");application.setAttribute("as", "aaas");return SUCCESS;}}
    
    该方法不常用
  5. 第四种:
    也是ioc的方式
    代码如下
    package com.xjtu.st;import java.util.Map;import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.interceptor.ApplicationAware;
    import org.apache.struts2.interceptor.RequestAware;
    import org.apache.struts2.interceptor.ServletRequestAware;
    import org.apache.struts2.interceptor.SessionAware;import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport implements ServletRequestAware{private HttpServletRequest request;private HttpSession session;private ServletContext application;public String execute(){request.setAttribute("rs", "rrrrs");session.setAttribute("ss", "sssss");application.setAttribute("as", "aaaas");return SUCCESS;}public void setServletRequest(HttpServletRequest request) {// TODO Auto-generated method stubthis.request = request;session = request.getSession();application = session.getServletContext();}}
    

这篇关于Struts2里如何取得request,session,application的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1093039

相关文章

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

(南京观海微电子)——GH7006 Application Note

Features ⚫ Single chip solution for a WXGA α-Si type LCD display ⚫ Integrate 1200 channel source driver and timing controller ⚫ Display Resolution: ◼ 800 RGB x 480 ◼ 640 RGB x 480 ⚫ Display int

struts2中的json返回指定的多个参数

要返回指定的多个参数,就必须在struts.xml中的配置如下: <action name="goodsType_*" class="goodsTypeAction" method="{1}"> <!-- 查询商品类别信息==分页 --> <result type="json" name="goodsType_findPgae"> <!--在这一行进行指定,其中lis是一个List集合,但

struts2的时候

在使用struts2的时候,我们在jsp中经常写这样的代码片段:      学生姓名:            考试名称:            考试分数:         其中studentScores.student.stuName是对应后台action的熟悉,action是这样写的   public class StudentExamAc

Vue3上传图片报错:Current request is not a multipart request

当你看到错误 "Current request is not a multipart request" 时,这通常意味着你的服务器或后端代码期望接收一个 multipart/form-data 类型的请求,但实际上并没有收到这样的请求。在使用 <el-upload> 组件时,如果你已经设置了 http-request 属性来自定义上传行为,并且遇到了这个错误,可能是因为你在发送请求时没有正确地设置

使用http-request 属性替代action绑定上传URL

在 Element UI 的 <el-upload> 组件中,如果你需要为上传的 HTTP 请求添加自定义的请求头(例如,为了通过身份验证或满足服务器端的特定要求),你不能直接在 <el-upload> 组件的属性中设置这些请求头。但是,你可以通过 http-request 属性来自定义上传的行为,包括设置请求头。 http-request 属性允许你完全控制上传的行为,包括如何构建请求、发送请

Struts2常用标签总结--转载

Struts2常用标签总结 一 介绍 1.Struts2的作用 Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。 Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于

SIGMOD-24概览Part7: Industry Session (Graph Data Management)

👇BG3: A Cost Effective and I/O Efficient Graph Database in ByteDance 🏛机构:字节 ➡️领域: Information systems → Data management systemsStorage management 📚摘要:介绍了字节新提出的ByteGraph 3.0(BG3)模型,用来处理大规模图结构数据 背景

code: 400, msg: Required request body is missing 错误解决

引起这个错误的原因是,请求参数按照get方式给。 应该给json字符串才对 补充: 1. @RequestBody String resource 加@RequestBody必须给json字符串,否则会报错400,记如标题错误。 不加这个的进行请求的话,其实post和get就没有什么区别了。 2. List<String> indexCodes=(List<String>)json.

flask-login 生成 cookie,session

flask-login 生成 cookie,session Flask-Login login_user() 显示来自 Set-Cookie 标头的加密 cookie # 模拟一个用户类class User(UserMixin):def __init__(self, id):self.id = id@app.route('/login')def login():# 模拟用户登录过程user