登录超时跳转页面失败和ajax传递到后台数据乱码
登录超时后,拦截任何点击的链接,跳转到登录页面发生上面错误。拦截代码如下
public void doFilter(ServletRequest servletRequest,ServletResponse servletResponse,FilterChain chain)
throws IOException,ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpSession session = request.getSession();
if ((session == null) || (session.getAttribute("username") == null)) {
String PATH=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
response.sendRedirect(PATH+"login.htm");
//System.out.println(PATH);
return;
}
chain.doFilter(request,response);
return ;
} 解决办法是,不让它直接跳转到登录页面,而是跳转到一个errors.jsp页面上,在这个页面用js写个跳转页面的方法。errors,jsp的js方法
<script type="text/javascript">
//登录超时
window.location.href="${base}/login.htm";
</script>
这个问题困扰了我很多时间,其中查阅了很多response.sendRedirect的使用方法和碰到的问题,但都解决不了,知道同学帮忙提出js跳转这个思路去解决。
第二个是ajax传递给后台数据乱码问题,这也是很常见的问题。解决办法如下:
function createTab(code,title,url ) {
$.ajax({
type : "post",contentType:"application/string",url : url+"?title="+escape(encodeURIComponent(title)),success:function(data){
$("#mainContent").html(data);//要刷新的div
},error: function() {
alert("失败,请稍后再试!");
}
});
}
我需要往后台传递“title”,除了前台使用escape(encodeURIComponent(title))封装title,后台还需要处理其格式,代码如下:
java.net.URLDecoder.decode(request.getParameter("title"),"UTF-8") (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|