解决weblogic下java应用请求session中的验证码为空的问题

来源:互联网 发布:网络歌手伤感歌曲 编辑:程序博客网 时间:2024/05/22 13:17
个人认为原因在于:weblogic服务器下jsp页面加载比session创建速度快,当jsp页面加载验证码,写入session后,服务器又创建了新的session,导致下一次请求时浏览器cookie中jessionId访问不到储存验证码的session,所以第一次验证失败。第二次验证刷新验证码可以验证,因为服务器返回了新的jessionId并将新的验证码放入session中。


解决办法:初始化界面时,用jquery延时加载一个空请求,得到session后,加载验证码。

//js代码$(function(){$.ajaxSetup({   async: false   });//解决weblogic下第一次验证请求是session为null的问题//使用jquery延迟进行服务器访问请求,获取会话信息后,加载验证码存入session中function showPic(){$.ajax({type: 'POST',url:"*.sesseionAction",dataType:"text",success:function(data){if(data =='success') {}else if(data!=null&&data!=""){}}});var _src = "Random.jsp?"+Math.random(); $("#randImage").attr("src",_src);} var test = setTimeout(function(){showPic()    },200);});
//Servlet响应public class SessionServlet extends LoginServlet {/** *  */private static final long serialVersionUID = -5271370581043822209L;public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {HttpSession session = request.getSession();String ran= (String) session.getAttribute("random");if (ran == null) {response.setContentType("text/html; charset=utf-8");response.getOutputStream().write("random".getBytes());    return;}else {response.setContentType("text/html; charset=utf-8");response.getOutputStream().write("success".getBytes());    return;}}public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException {this.doPost(request, response);}}



阅读全文
0 0
原创粉丝点击