getSession().getParameter();getSession( ).getAttribute;getSession().removeAttribute()讲解

JSP 2.3 四种作用域实战:从页面到应用的5种数据共享场景与代码示例 本文深入解析JSP 2.3的四种作用域(page、request、session、application),通过5种典型应用场景和实战代码示范,帮助Java开发者掌握数据共享的最佳实践。内容涵盖从页面级临时存储到全局配置的完整解决方案,特别适合Servlet和JavaBean开发场景。 阅读详情

最近学习Java的WEB开发,遇到Request中相关的getParameter方法问题。在网上找了一下。自己整理,以备以后查用。

实例:

SQLQuery query = this.getSession().createSQLQuery("delete from tab where groupId=? and expertsid in (?)");
query.setParameter(0, groupId);
query.setParameter(1, expertIds);
上面setParameter用法是给问号( 占位符)赋值;

现在的问题是,groupId是单个id,比如说是123456,这个没有问题,但是后面的那个in里面改怎么设置参数,比如说现在有两个id分别是234和456,那么expertids该是一个什么样的字符串。
就事说执行的sql语句应该是
delete from tab where groupId=123456'' and expertsid in ('234','456');

改成下面这样就可以了:

SQLQuery query = this.getSession().createSQLQuery("delete from tab where groupId=:griupId and expertsid in (:expertsid)");
query.setParameter(griupId, groupId);
List list=new ArrayList();    
list.add(“234”);    
list.add(“456”);    
query.setParameterList(“:expertsid”,list);  
setParameter List可以添加集合


getParameter得到的都是String类型的。或者是用于读取提交的表单中的值(http://a.jsp?id=123中的123),或者是某个表单提交过去的数据; 

getAttribute则可以是对象Object,需进行转换,可用setAttribute设置成任意对象,使用很灵活,可随时用; 
getAttribute()是获取对象容器中的数据值; 
request.getSession().setAttribute()          是给SESSION赋值;
request.getSession().getAttribute()          是获取SESSION的值;  

request.getSession().removeAttribute()   是移出SESSION的值;

举例说明:

public String getAllDw(HttpServletRequest request){
String str ="张三";
request.getSession().setAttribute("name", str);//给name赋值张三
request.getSession().getAttribute("name");	//获取name值
request.getSession().removeAttribute("name");	//清除name的值
}


getParameter()是获取POST/GET传递的参数值;  
getParameter:用于客户端重定向时,即点击了链接或提交按扭时传值用,即用于在用表单或url重定向传值时接收数据用。 
getAttribute:用于服务器端重定向时,即在sevlet中使用了forward函数,或struts中使用了mapping.findForward。getAttribute只能收到程序用setAttribute传过来的值。 
setAttribute 是应用服务器把这个对象放在该页面所对应的一块内存中去,当你的页面服务器重定向到另一个页面时,应用服务器会把这块内存拷贝另一个页面所对应的内存中。这样getAttribute就能取得你所设下的值,当然这种方法可以传对象。session也一样,只是对象在内存中的生命周期不一样而已。 

getParameter只是应用服务器在分析你送上来的request页面的文本时,取得你设在表单或url重定向时的值。 


request.getParameterValues与request.getParameter的区别

 简单的对比

request.getParameter用的比较多,相对熟悉 

request.getParameterValues(String   name)是获得如checkbox类(名字相同,但值有多个)的数据。   接收数组变量 ,如checkobx类型     
request.getParameter(String   name)是获得相应名的数据,如果有重复的名,则返回第一个的值 . 接收一般变量 ,如text类型
 

例:

1. 三个名字相同的text标签

<input type="text" name="test" value="1" /> 
<input type="text" name="test" value="2" /> 
<input type="text" name="test" value="3" />

 

request.getParameterValues("test")   ----------------- [1, 2, 3]

request.getParameter("test")             ------------------ 1

 

${paramValues.test}

${param.test}

 

2. checkbox

 <input type="checkbox" name="habit" value="read">看书

 <input type="checkbox" name="habit" value="movie">电影

 <input type="checkbox" name="habit" value="game">游戏

request.getParameterValues("habit")



HttpServletRequest类既有getAttribute()方法,也由getParameter()方法;
HttpServletRequest类有setAttribute()方法,而没有setParameter()方法;


从更深的层次考虑,request.getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。request.getParameter()方法返回String类型的数据。 

request.setAttribute()和getAttribute()方法传递的数据只会存在于Web容器内部,在具有转发关系的Web组件之间共享。这两个方法能够设置Object类型的共享数据。


PS:
当利用request.getParameter得到Form元素的时候,默认情况的字符编码为ISO-8859-1 ,这种编码不能正确地显示汉字。目前有两种解决方法,一种是在执行操作之前,设置request的编码格式,语法是“request.setCharacterEncoding("GBK");”。另一种方法是转换字符编码,语法为:
<%String str=request.getParameter("boy");
  byte  b[ ]=str.getBytes("ISO-8859-1");
  str=new String(b);
头歌JavaWeb实训通关指南:JSP+Servlet全链路解析 JSP是JavaWeb开发的基础视图技术,但其本质依赖Servlet容器与HTTP请求生命周期。理解JSP如何被编译为Servlet、request/session域对象的作用机制、以及MVC分层中Model-View数据传递规则,是掌握Web开发底层原理的关键。在头歌等实训平台中,判题系统实际验证的是Servlet API运用能力、Tomcat运行时行为合规性及JNDI数据源配置等工程实践细节。典型应用场景包括用户登录态管理、表单错误回显、安全重定向与事务控制。本文聚焦JSP基础项目背后的Servlet核 阅读详情

相关推荐

StringBoot+Vue实现游客或用户未登录系统前、可以浏览商品等信息、但是不能购买商品或者加入购物车等操作。登录系统显示用户的登录名(源码+讲解)

StringBoot+Vue实现游客或用户未登录系统前、可以浏览商品等信息、但是不能购买商品或者加入购物车等操作。登录系统显示用户的登录名(源码+讲解)

日常笔记 | 干货分享 | 毕设源码 | 毕设指导 | 答辩指导 2005

你真的了解request.getsession().getAttribute吗?

具体来说,`getAttribute()` 获取的是一个 object 类型的值,因为 httpse,获取的是一个 object 类型的值,因为 httpsession 中存储的数据类型可能有多样性,需要根据实际情况进行强制类型转换。同时,需要注意的是,如果对指定名称的属性不存在,则。是 java web 开发中常用的获取 session 属性的方法,可以通过以下几点来对其进行。方法将返回 null 值,因此在使用该方法时需要先对返回结果做检查。的含义就是:从当前请求所对应的会话对象中获取指定名称的属性值。

思索的涟漪,突破自我 5118

Jakarta EE 实验 — Web 聊天室(过滤器、监听器版)进阶

本文介绍了一个基于JakartaEE的Web聊天室项目,重点展示了过滤器(Filter)和监听器(Listener)的进阶应用。项目采用JSP表单提交数据,使用@WebServlet注解替代web.xml配置。主要特点包括:1)在EncodingFilter中增加了日志记录和性能监控功能;2)通过web.xml配置动态敏感词表;3)扩展了ServletContext和Session属性监听器,实现细粒度的状态管理。该项目遵循Maven+Tomcat架构,完整展示了JakartaEE核心组件在实际应用中的组合

元直的博客 884

对request.getSession().setAttribute和request.getSession().getAttribute()的理解

对内置的对象request就不多讲,就直接进入主题。void getSession()方法相当于得到一个session对象,而void setAttribute()和String Attribute分别是对属性赋值和得到属性值的方法。request.getSession().setAttribute和request.getSession().getAttribute()就是分别对session对象...

huxiaoxi的博客 8万+

Jakarta EE 实验 — Web 聊天室(过滤器、监听器版)

本文介绍了一个基于JakartaEE框架的简易Web聊天室系统开发实验。实验使用IntelliJ IDEA 2025.2创建项目,通过Maven构建,依赖JakartaEE API。系统实现了Servlet Filter和Listener的核心功能:EncodingFilter处理请求编码和敏感词过滤,AuthFilter进行权限验证;AppInitListener初始化应用数据,SessionLifecycleListener管理会话生命周期。聊天室使用ServletContext共享在线用户列表、消息列

元直的博客 1400

Jakarta EE 实验 — Web 聊天室(JSP版)

本文介绍了基于JakartaEE技术栈的Web聊天室实现方案。系统采用JSP+Servlet架构,使用Maven构建,运行在Tomcat10+服务器上。主要功能包括用户登录、消息收发、在线用户查看、退出功能,并实现了敏感词过滤、权限控制和消息条数限制。关键技术点包括:通过ServletContext共享全局数据,使用Filter处理编码和权限验证,利用Listener管理应用初始化和会话生命周期。文章提供了完整的项目创建步骤、代码实现和详细解释,并附有测试方案。该实验项目可作为学习JakartaEE中Ser

元直的博客 1292

request.getSession().getAttribute取值为空

最近在做瑞吉外卖的时候就遇到了这个问题,写过滤器处理请求的时候判断是否登录时 request.getSession().getAttribute("employee") 获得了空值 //4 判断是否登录 已登录则放行 if(request.getSession().getAttribute("employee")!=null){ log.info("用户已登录,id为{}",request.getSession().getAttribute("employ

m0_50744317的博客 5137

初探Proxmox Datacenter Manager:统一管理多集群与单节点的利器

本文介绍了Proxmox Datacenter Manager (PDM) 这一统一管理工具,它能有效解决多套Proxmox VE环境(包括集群和单节点)管理碎片化的痛点。文章详细阐述了PDM的核心功能、安装部署步骤,并通过实战演示了如何添加单节点与整个集群,实现资源的集中监控与基础运维,为运维人员提供了高效的集中管理解决方案。

weixin_29217235的博客 159

request.getSession().getAttribute获取值为null

控制器A中request.getSession().setAttribute,在B控制器中getAttribute获取到的是null 这个是因为在前后端分离架构中,使用vue、angular 等发送ajax存在跨域请求没有携带请求凭证(cookie、HTTP认证及客户端SSL证明)造成request.getSession()获取的是不同的sessionId。 解决方法 在前端axios里加上axios.defaults.withCredentials = true; ...

qq_1415904132的博客 3021

安防相机宽动态(WDR)技术解析:从原理到实战应用

本文深入解析安防相机宽动态(WDR)技术原理,对比多次曝光与DOL-WDR等实现方式,并区分硬件WDR与数字WDR(DWDR)的本质差异。文章重点阐述了WDR在逆光出入口、夜间道路监控等五大典型场景的实战应用与调参技巧,旨在帮助用户根据实际需求正确选择与配置,确保监控系统在复杂光线下清晰成像。

weixin_29191081的博客 427

AgentScope深入分析-ReActAgent

ReActAgent 是 AgentScope 框架中最核心的智能体实现,它完美诠释了"推理-行动"(Reasoning-Acting)循环的精髓。本文将深入分析 ReActAgent 的类继承关系、核心执行流程,以及状态管理、钩子机制、实时介入等关键技术点。通过阅读本文,你会理解智能体如何与模型交互、如何执行工具、如何处理中断,以及这些机制背后的设计考量。模块化:通过组合不同的组件(模型、格式化器、工具集、记忆)来构建智能体透明性:所有关键流程都对开发者可见,可以精确控制可扩展性。

842

request.setAttribute()和request.getSession().setAttribute()解释

request.setAttribute()只能在一个request内有效,如果重定向客户端,将取不到值。request.getSession().setAttribute()可以通过sessionID得到自己的session,将参数存储在session中,即使重定向客户端也没事,这个值可以在多个页面上使用。比如访问一个网站,登录后用户信息被保存到session中,在session过期之前或者用户...

熊大的博客 991

2020年大连理工大学《计算机控制技术》期末试卷

2020年大连理工大学《计算机控制技术》期末试卷 2020年大连理工大学《计算机控制技术》期末试卷 2020年大连理工大学《计算机控制技术》期末试卷 2020年大连理工大学《计算机控制技术》期末试卷 ...

无名何许人的博客 646

java request,response解析及中文编码 , jsp注释 xml中文编码,getsession()使用方法...

1.request和response(请求和响应) 当Web容器收到客户端的发送过来http请求,会针对每一次请求,分别创建一个用于代表此次请求的HttpServletRequest对象(request)对象、和代表响应的HTTPServletResponse对象(response)。 request负责获取客户机提交过来的数据。 response负责向客户机输出数据。 2. ...

weixin_30783629的博客 224

基于 OpenCVSharp 的晶圆缺口自动检测与旋正方案

在半导体制造过程中,晶圆(Wafer)需要精确定位才能进行后续加工。每个晶圆边缘都有一个特定的缺口,这个缺口就像 "箭头" 一样,帮助机器确定晶圆的方向。我们的任务就是通过摄像头拍摄的图片,自动找到这个缺口的位置,计算出需要旋转多少角度才能让晶圆对准正确方向。简单来说,这个技术就像给晶圆 "找方向",确保它在生产线上始终保持正确的姿态。

品质生活,极致编程。 1210

lammps多晶正弦粗糙界面建模

其中,30可以理解为正弦曲线的幅度,150为正弦曲线的基准坐标值,80控制周期,改变参数多试试就能找到规律。很久之前介绍过lammps粗糙界面建模,主要是在lammps中进行一维和二维的正弦粗糙面建模。运行完成后,会生成final.data,这个模型即为上表面为正弦波动的粗糙界面。新建1.py文件,粘贴下面内容后,运行:python 1.py。多晶需要在atomsk中进行,因此上述的方法就不再适用。最近有学员咨询多晶模型的正弦粗糙界面建模应该如何实现。在cmd窗口按顺序运行以下命令创建多晶模型。

lammps_jiayou的博客 386

Request对象及常用方法

Object getAttribute(String name) 获得name的属性,若不存在,则返回null Enumeration getAttributeNames() 返回一个枚举类型的包含request对象所有属性名称的集合 String getCharacterEncoding() 返回request请求体的字符编码 int ge...

weixin_38168382的博客 110

HTML流光爱心(完整代码)

HTML语言实现红蓝色流光爱心效果的完整代码。

AIGC 1万+

Java24:会话管理 过滤器 监听器

过滤器 是JAVAEE技术规范之一,作用目标资源的请求进行过滤的一套技术规范,是java web项目中最为实用的技术之一。

zzx_nihao的博客 902

Mathematica 训练课(12)常用注释方法

Mathematica从入门到进阶

qq_25018077的博客 9073

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

从零构建Java Web验证码:动态生成与安全校验实战

本文详细介绍了从零构建Java Web验证码系统的全过程,包括动态生成图片验证码、前端集成、服务端安全校验等核心环节。通过实战代码演示和高级安全增强方案,帮助开发者掌握验证码技术,有效防御暴力破解、垃圾注册等自动化攻击,提升Web应用安全性。

weixin_33749131的博客 361

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IDEA(2020版)sevlet+session模拟用户登录

本文介绍了使用Session技术实现用户登录功能的Java Web开发过程。首先创建User实体类存储用户信息,然后编写三个Servlet:IndexServlet用于检查登录状态并显示对应信息,LoginServlet处理用户登录验证,LogoutServlet实现注销功能。通过HttpSession对象保存用户登录状态,并利用Cookie存储Session ID以维持会话。当用户访问首页时,系统会判断Session中是否存在用户信息,未登录则跳转至登录页面,已登录则显示欢迎信息和注销链接。完整代码示例和

城南蝈蝈 323

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

基于Spring Boot的喜月月子中心管理系统设计与实现 源码+文档

基于Spring Boot的喜月月子中心管理系统设计与实现 源码+文档

大学生毕设选题 / 源码文档 → 置顶文章名片交流 172

JSP Session机制详解:原理、应用与安全实践

Session是Web开发中维护用户状态的核心机制,通过在服务器端存储会话数据实现跨请求的用户追踪。其工作原理基于Session ID的传递与匹配,相比Cookie具有更高的安全性(数据存储在服务端)和灵活性(支持复杂对象存储)。在JSP开发中,Session常用于用户登录状态维护、购物车功能实现等典型场景,同时需要注意分布式环境下的同步问题。随着技术演进,JWT等无状态方案逐渐流行,但理解Session底层机制仍是Java Web开发者的必备技能,特别是在处理会话固定攻击防护、Session劫持防御等安全

weixin_33816946的博客 339

springboot项目异步(子线程)处理获取不到header中的token

可以看到采用的ThreadLocal存储的request对象,所以子线程魂总获取不到主线程的request。解决办法重新创建request对象,传参给service中异步方法。contoller中方法注入HttpServletRequest对象,并创建自定义request对象。上述方法是spring的异步执行方法,方法中就能成功使用开始的那种方式获取到token。答案是以上两种方式都不能成功在异步方法中获取token,详细原因还未深究。service中异步方法需要将request放入。

平时的经验总结,学习历程 560

request的各种方法

request.setAttribute("result", district);//放进作用域,可以用el表达式在页面展示。(名字,调用方法的结果) pageContext.request.contextPath  上级目录 ?=request.getContextPath  得到路径赋予? request.getParameter("id");  //获得页面传来的id参数   re...

lishanchuan的博客 483
上一篇: java登录验证码 用到spring框架
下一篇: MD5加密 加密功能更好的一段代码
前端蜗牛君
博客等级 码龄10年 274粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值