解决weblogic下java应用请求session中的验证码为空的问题
2017-06-07 18:31
405 查看
个人认为原因在于: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);
});
解决办法:初始化界面时,用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); } }
相关文章推荐
- java实现验证码生成,解决在页面验证时候session获得的总是前一次值的问题
- 在Web应用中,会用到大量的Ajax请求,在Ajax请求中存在的一个问题就是如何判断session超时,在网上找到的一个java中处理此问题方法:
- 以前端架构师的思想看问题:解决单页应用,系统角色请求抢占session发送请求问题
- 以整体思维看问题:解决单页应用,系统角色请求覆盖身份唯一标识(本项目中是session_id命名的)发送请求问题
- 分享一次解决线上java应用导致JVM内存溢出(OOM)的问题
- 两把利斧解决maven的类包冲突问题 - Spring,企业应用 - Java - ITeye论坛
- 利用java技术生成验证码的多种方法及遇到问题的解决
- strust框架中java web应用的中文化问题解决
- 解决应用服务器集群后的Session问题
- weblogic java.lang.OutOfMemoryError: PermGen space 问题解决方法
- Spring 4.0 StandaloneMockMvcBuilder java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig 问题解决
- 解决同一IP不同端口访问的站点iframe应用session丢失的问题
- 一个Android应用开发菜鸟的成长之路——工作第一天:解决了java.lang.NoClassDefFoundError问题
- 转:java多线程小结,及解决应用挂死的问题
- linux环境weblogic & tomcat 下报表里报出的图表类不能显示和乱码的错误-java.lang.NoClassDefFoundError: sun/awt/X11 问题解决
- weblogic通过代理插件weblogic.servlet.proxy.HttpProxyServlet跨域访问导致session丢失问题的解决
- Websphere多个应用session相互覆盖问题解决办法
- Java 应用显示中文乱码问题的解决方法
- 解决一些网站文字不能复制的问题?java应用
- 完美解决php验证码session不同步的问题