在tomcat启动后,session赋值后在另一个.java文件中第一次取值为null?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在tomcat启动后,session赋值后在另一个.java文件中第一次取值为null?相关的知识,希望对你有一定的参考价值。

public void getRandcode(HttpServletRequest request,
HttpServletResponse response)
session.removeAttribute(“RANDOMVALIDATECODEKEY”);
session.setAttribute(“RANDOMVALIDATECODEKEY”, randomString);
System.out.println("刚设置完::::::::::"+session.getAttribute("RANDOMVALIDATECODEKEY"));
//成功》》》》》》》》》》》》》》》》》》》》》》》

public class ValidateRandomCodeServlet extends HttpServlet

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
HttpSession session = request.getSession(true);

String vercode = request.getParameter("verCode").toUpperCase();
System.out.println("输入的::::"+vercode);
try
if(session.getAttribute("RANDOMVALIDATECODEKEY") == null)

response.getWriter().print(0);
System.out.println("为空~~~~~~~~~~~~~~~~~~~~~~~");//失败??????


else

String randomcode = (String)session.getAttribute("RANDOMVALIDATECODEKEY");
System.out.println("验证码:::"+randomcode);

if(randomcode.equals(vercode))
response.getWriter().print(1);

else
response.getWriter().print(0);



catch (Exception e)
e.printStackTrace();


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
doGet(request, response);




在tomcat第一次启动,每次获取session里的值 都是 null。。。。。但是刷新一次就好了。可以获取到。

求大神解答。。。。 session 时间设置 30分钟。。

这个跟session时间没有关系,你tomcat重启之后如果没有重新赋值的话,session就是空的,关闭tomcat,session值会清空的追问

必然赋值了啊。。验证码图片输出到页面上就已经存在session中了。

参考技术A 关于验证码,流程一般是调用一个servlet,在这里面准备验证码,就是你的getRandcode方法,把验证码放在request.getSession中,然后返回一个页面,在页面上点确定的时候,调用你的ValidateRandomCodeServlet 这个servlet,验证用户输入与session中的是否一致。如果你流程这么走的,肯定没问题的追问

就是这么走的。。现在问题是,当tomcat启动的时候,第一次输入验证码,在后台验证的时候,session为空。。。。刷新一次,在输入一次就可以了。。。。。。。。。。。。。。。。。。。。。。。。。

追答

你直接把项目发附件过来

参考技术B session的范围,比如是不是从request中取得session,每一个request都会独立出来一个session,其他的请求中就取不到上次请求的这个session 参考技术C 这个问题最后怎么解决的了

在另一个事务中提交数据对象后在一个事务中读取数据对象 - 脏读?

【中文标题】在另一个事务中提交数据对象后在一个事务中读取数据对象 - 脏读?【英文标题】:Reading data object in one transaction after comitting data object in another transaction - dirty read? 【发布时间】:2018-10-02 01:55:07 【问题描述】:

根据定义,脏读是对未提交数据的读取。我的问题是:

如果您有多个来自同一故事中不同事务的写操作紧接着发生(比如说事务 1、2 和 3),那么在写入结束时,其中一个事务提交(假设它是事务1),然后从事务 2 或 3 读取,这算作脏读吗?

例如:w1(X);w2(X);w3(X);c1;r2(X).....

【问题讨论】:

【参考方案1】:

不,这些术语是不可重复读取或幻读 (source)。许多(如果不是大多数)数据库引擎默认允许它们。

【讨论】:

以上是关于在tomcat启动后,session赋值后在另一个.java文件中第一次取值为null?的主要内容,如果未能解决你的问题,请参考以下文章

动态填充后在另一个(未绑定的)表单中显示表单

Tomcat关闭后,重新启动,session中保存的对象为什么还存在解决方法

用tomcat部署上java web项目后在地址里输入地址有没有办法不加项目名

tomcat如何手动启动

java 类中定义一个String变量a并赋值1,后在方法中赋值2,那在该方法中调用a时,得到的是值1还是值2?

session的值为空