我的异常:jsp与session不同步问题(验证码在Servlet中生成,存到session中和页面显示的不一致)

JSP与session不同步问题

  • 问题
  • 解决

问题

在jsp页面中,提交验证码,每次提交的验证码必须是上一次显示的,如第一次页面显示的是“1234”,这时候取出来的不是“1234”,刷新页面后再从session中取,取出来的才是“1234”
JSP页面:

<input class="input__field input__field--hideo" type="text" id="login-verify-code"
		autocomplete="off" placeholder="请输入验证码" tabindex="3" maxlength="4" />
<label class="input__label input__label--hideo" for="login-verify-code">
	<i class="fa fa-fw fa-bell-o icon icon--hideo"></i>
	<span class="input__label-content input__label-content--hideo"></span>
</label>
<img src="./Captche" width="100" height="43" style="margin-top: 15px" id="login-verify-code-canvas" onclick="changeCheckCode(this)">

Servlet中:

@WebServlet("/Captche")
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
---省略部分代码---
        HttpSession session = req.getSession(); //使用req获取session对象
        session.setAttribute("checkCode",code);  //将生成的验证码放入session
---省略部分代码---
}

解决

思路: jsp与session不同步问题,页面和图片同时访问session,由于jsp先运行,先访问session,在页面显示图片时Servlet才运行,此时Servlet生成一个新的代码
解决: 在JSP里面设定session,在Servlet中读session

直接在后台验证验证码,这样每次session里面的validateCode就是后端最新的值了。

你可能感兴趣的:(我的异常:jsp与session不同步问题(验证码在Servlet中生成,存到session中和页面显示的不一致))