在Struts2 中获取session 的方式

【HOJ系列】HOJ判题机部署 阅读详情

在struts2 中request,response,session 都被隐藏起来了,所以不能在像JSP中那样的方式来设置和获取session的值了

可以通过IoC(控制反转)的方式来获取request,response,session,这里以session为列

以登录用户和密码存储在session中为列

首先index.jsp 页面

	<div align="center">
		<form action="" method="post" name="loginForm">
			username:<input type="text" name="username"/> <br>
			password:<input type="password" name="password"/> <br>
			<input type="button" name="btn" value="提交" onclick="javascript:document.loginForm.action='login/Login';document.loginForm.submit();">			
		</form>
	</div>


web.xml如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>struts_session</display-name>
  <filter>
       <filter-name>struts2</filter-name>
       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
   </filter>

   <filter-mapping>
       <filter-name>struts2</filter-name>
       <url-pattern>/*</url-pattern>
   </filter-mapping>
    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

接下来根据struts.xml中寻找action  


<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
   
    <package name="example" namespace="/login" extends="struts-default">
    	<action name="Login" class="com.session.LoginAction">
    		<result >/success.jsp</result>
    	</action>        
    </package>
    <!-- Add packages here -->
</struts>

然后是创建对应的action对象,然后会根据询问时候实了SessionAware,ServletRequestAware,

ServletResponseAware接口,反射之后得知实现了这些借口,则调用相对应的set方法。之后访问LoginAction的execute()的方法

之所以叫做控制反转,是因为action对象的session变量不是自己设置的,而是依赖于外部注入的

Java代码如下

package com.session;

import java.util.Map;

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

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

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport implements SessionAware,ServletRequestAware,ServletResponseAware{
	private static final long serialVersionUID = 111;
	private String username;
	private String password;
	
	private HttpServletResponse Response;
	private HttpServletRequest Request;
	private Map<String,Object> Session;
	
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String psw) {
		this.password = password;
	}
	@Override
	public void setServletResponse(HttpServletResponse Response) {
		this.Response = Response;
	}
	@Override
	public void setServletRequest(HttpServletRequest Request) {
		this.Request = Request;
	}
	@Override
	public void setSession(Map<String, Object> Session) {
		this.Session = Session;
	}	
	public String execute() {
		this.Session.put("username", username);
		this.Session.put("password", password);
		return SUCCESS;
	}
}

成功之后跳转到success.jsp页面,在此页面通过session获取username的值

<body>
	<div align="center">
		<%=session.getAttribute("username")%> <br>
		<s:property value="#session.username"/>	<br>
		<s:debug></s:debug>
	</div>
</body>




Pytorch入门实战(2)-使用BP神经网络实现MNIST手写数字识别 上一篇:Pytorch入门实战(1) - 实现线性回归 涉及知识点 Pytorch nn.Module的基本使用 Pytorch nn.Linear的基本用法 PytorchVision Transforms的基本使用 Pytorch中DataLoader的基本用法 Pytorch详解NLLLoss和CrossEntropyLoss 如何确定神经网络的层数和隐藏层神经元数量 本文内容 本文将会使用BP神经网络(就是最普通的神经网络)实现一个MNIST手写数据集的实现。话不多说,直接开始。 首先先导入需要的包 阅读详情

相关推荐

RTC 实时时钟实验

如果在 RTC_CR 寄存器中设置了相应的允许位,则在每个TR_CLK 周期中 RTC 产生一个中断(秒中断)。void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data) // 往备份区域写用户数据的函数 (这个函数的第一个参数就是寄存器的标号了,这个是通过宏定义定义的)存储在 RTC_ALR 寄存器中的可编程时间相比较,如果 RTC_CR 控制寄存器中设置了相应允许位,比较匹配时将产生一个闹钟中断。寄存器操作完成,并同步之后,设置秒钟中断。

m0_55996456的博客 1205

Struts2获取Session的三种方式

1、Map&lt;String,Object&gt; session =  ActionContext.getContext().getSession();   session.put("codeTextFromSys", checkCode.getCodeText());   String codeTextFromSys = session.get("codeTextFromSys");2、...

weixin_34273481的博客 214

为什么PCB设计中的50Ω阻抗如此重要?从USB到以太网的实战解析

本文深入解析了PCB设计中50Ω特征阻抗的核心重要性及其工程权衡起源。文章从传输线理论出发,阐释了阻抗匹配对防止信号反射、确保信号完整性的关键作用,并对比了USB、以太网等不同应用场景的阻抗标准。同时,文章结合实际案例,剖析了在两层板等简单设计中实现精准阻抗控制的难点与实战解决方案。

weixin_29268385的博客 297

在struts中获得Session的几种方法

在Action中获得Session的方法, 一是          由Action容器来创建  Map session = ActionContext.getContext().getSession(); 这是设置属性的值为:session.put("属性名", 属性名);  这种方法还可以创建request和application对象  二是   实现ServletRequ

Crystal的专栏 5008

python设计俄罗斯方块(附源码)

【代码】python设计俄罗斯方块(附源码)

牧魂的博客 2058

CorelDraw插件开发-Cdr插件-CPG插件-GMS插件-安装位置

文章目录1.gms格式插件2.cpg格式插件3.作者答疑   CorelDraw软件是一款使用非常广泛的矢量图形软件,系统本身提供了非常便利的二次开发环境,制作插件的格式有两种,一种是gms格式的脚本插件,另外一种是cpg格式dll插件。 1.gms格式插件   gms格式插件是使用微软的 VBA 技术,编写和调试都比较方便,从9的版本开始支持。   安装:把gms文件复制到程序所安装的目录 gms 下,一般在C:\Program Files\Corel\CorelDRAW Graphics Suite 1

插件开发 2748

struts2下如何获取session

1) ActionContext类 ActionContext.getContext().getSession(); 该方法返回的是一个Map,Strust2使用该类型是想简化对session的操作。 2)ServletActionContext类 ServletActionContext.getRequest().getSession(); 该方法返回的是一个HttpSession

amunamuna 763

从入门到精通!Arduino 全栈开发深度指南

本文围绕 Arduino 开发撰写全攻略,从基础入门到高级应用层层递进。开篇介绍 Arduino 概念、优势及硬件家族,引导读者完成开发环境搭建与首个 LED 闪烁项目;深入讲解编程语法、I/O 控制及通信协议;详细阐述传感器、模块应用与调试优化技巧;最后以自定义库开发、低功耗设计等高级内容收尾,并给出综合项目案例与产品化思路。无论新手入门,还是开发者进阶,均可从中系统学习 Arduino 知识,掌握从理论到实践的全流程开发技能。

邓邓子的博客 2754

Struts2中利用filter、session实现安全访问和身份认证

1、开发环境: Eclipse软件 JDK 1.7 Apach Tomcat 7 2、通过eclipse创建Dynamic Web Project后,导入相应的Struts2 的jar文件: 3、导入jar包后,创建如下图所示项目相应目录:    权限说明  (1) 根目录(WebContent)下的资源,如:index.jsp和login.jsp,允许匿名访

人生本不易,何添烦恼丝~~ 3993

22h2版本的win10安装Docker Desktop时页面空白

摘要:Windows10 22H2系统重装Docker时出现安装界面卡死问题,通过管理员CMD执行静默安装命令解决。命令指定了WSL-2后端及多个自定义数据存储路径(安装目录、Hyper-V数据、Windows容器数据、WSL数据),安装需等待几分钟。最终验证安装成功。

猿小白的博客 650

innovus:ccopt_design分段长tree操作

这步don't touch保证后面完整cts尽量不会动到已经长过的tree。需要给sub tree手写一个spec,参考create_ccopt_clock_tree_spec -file的写法,只写create_ccopt_clock_tree和skew group部分就行。

m0_61544122的博客 1675

struts2获取request、session、application的四种方式

struts2获取request、session、application的四种方式 //获取map类型的request、session、application public class LoginAction1 extendsActionSupport { private Map request; private Map session; private Map application; publ

helloJay1995的博客 495

计算机实战分享3:森林火灾预测分析可视化机器学习预测-完整数据代码-可直接运行

计算机实战分享3:森林火灾预测分析可视化机器学习预测-完整数据代码-可直接运行

603

【Struts2】Struts2获取session的三种方式

1、Map<String,Object> map = ActionContext.getContext().getSession(); 2、HttpSession session = ServletActionContext.getRequest().getSession(); 3、让Action实现SessionAware接口,并实现public void setSes...

weixin_30244889的博客 211

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

struts2当中获取Application request response session作用域的方式

struts2中关于Application request response session 作用域的获取方式 解耦合式 方式一 第一种方式:使用Map集合 public class TestAction extends ActionSupport{ //struts2中关于Application request response session 作用域的获取方式 //解耦合的方式:Map ...

小小&大大 240

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Struts2中action获取request、response、session的方式

   第一种方式,非IoC(Spring中的控制反转)方式:/** * File Name:BaseAction.java * Version: * Date:2010-1-27 * Copyright Belongs To Musoon Corporation 2010 */ package com.action; import java.util.Map; import javax.servlet.http.HttpServletRequest; import jav

uzY)&PHd!cqj 1925

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

struts2获取request,session,application4种方式

第一种,依赖容器获取:                               private Map request; private Map session; private Map application; public ActionTest() { request=(Map)ActionContext.getContext().get("request");

收破烂的 2271

struts2获取request,session,application方式

1.取得Map类型request,session,application引用(依赖于容器) package com.bjsxt.struts2.user.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport

彻底拆分,一切可控! 720
上一篇: JSP页面出现的中文乱码显示问题
下一篇: Java中对产生serialVersionUID的警告解释
java_wliang
博客等级 码龄15年 19粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值