java web实现页面跳转页面_JavaWeb过滤器实现页面跳转至登录页面
需求說明:
1、用戶登錄某頁(yè)面一段時(shí)間之內(nèi),如果無任何操作,跳轉(zhuǎn)至登錄頁(yè)面。
2、用戶在非登錄狀態(tài)下,無法訪問項(xiàng)目下的某些頁(yè)面。
解決方式:
通過session過濾器實(shí)現(xiàn)對(duì)請(qǐng)求的過濾,如果未登錄跳轉(zhuǎn)至登錄頁(yè)面,如果已登錄直接放行。在過濾器中不對(duì)登錄頁(yè)面進(jìn)行過濾,不對(duì)css、js、img資源進(jìn)行過濾。
如果不是前面說的兩種資源,則判斷記錄用戶信息的session是否為空,空則跳轉(zhuǎn)至登錄頁(yè)面、非空則放行。
方法一:Java過濾器實(shí)現(xiàn)(推薦)
解決步驟:
步驟一:在項(xiàng)目下配置web.xml文件中配置session
1、設(shè)置session失效時(shí)間(時(shí)間單位為分鐘)
30
2、配置過濾器
session過濾器
sessionFilter
com.filter.SessionFilter
sessionFilter
/*
注意:這里對(duì)所有的請(qǐng)求都進(jìn)行了過濾。也可以在配置過濾器的時(shí)候設(shè)置某些請(qǐng)求不進(jìn)行過濾,這里不進(jìn)行具體的介紹。
步驟二:編寫過濾器類
packagecom.filter;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importcom.model.user.User;public class SessionFilter implementsFilter {public void init(FilterConfig filterConfig) throwsServletException {
}public voiddoFilter(ServletRequest request, ServletResponse response, FilterChain chain)throwsIOException, ServletException {
HttpServletRequest req=(HttpServletRequest) request;
HttpServletResponse res=(HttpServletResponse) response;
res.addHeader("Access-Control-Allow-Origin", "*");
String uri=req.getRequestURI();if (uri.indexOf("login") != -1 || uri.indexOf("Login") != -1) {
chain.doFilter(req, res);
}else if ((uri.contains(".css") || uri.contains(".js") || uri.contains(".jpg") || uri.contains(".png")|| uri.contains(".jpng") && !uri.contains(".jsp")) {
chain.doFilter(req, res);
}else{HttpSession session=req.getSession();
User user = (User) session.getAttribute("user");
String username= "";if (user != null && !user.equals("")) {
username=user.getLoginName();
}if (username != "" && username != null) {chain.doFilter(req, res);
}else{session.invalidate();
res.setContentType("text/html;charset=utf-8");
PrintWriter out=res.getWriter();
out.println("
out.println("window.top.location.href='" + req.getContextPath() + "/jsp/login.jsp'");
out.println("");
}
}if (uri.indexOf("redirect") != -1) {if (null != request.getParameter("userimg")) {chain.doFilter(req, res);
}
}
}public voiddestroy() {
}
}
注意:1、這里使用window.top.location.herf,如果使用window.location.herf有時(shí)候無法完成跳轉(zhuǎn)。2、上面的代碼執(zhí)行時(shí)需要用戶在登錄時(shí)將用戶信息放入session中。
方法二:Jsp頁(yè)面Java代碼實(shí)現(xiàn)(了解)
完成方法一的步驟就可以實(shí)現(xiàn)一個(gè)session過濾器了,過濾器會(huì)對(duì)請(qǐng)求想要訪問的頁(yè)面進(jìn)行進(jìn)行請(qǐng)求判斷。如果我們只想對(duì)某一個(gè)頁(yè)面進(jìn)行session判斷又不想使用過濾器,可以在頁(yè)面上使用java代碼進(jìn)行判斷。
注意這里只對(duì)某一個(gè)特定的頁(yè)面,其他頁(yè)面是不能用的。
if(session.getAttribute("user")== null) {%>
top.location.href="jsp/login.jsp";
總結(jié)
以上是生活随笔為你收集整理的java web实现页面跳转页面_JavaWeb过滤器实现页面跳转至登录页面的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql qadir_MySQL 及
- 下一篇: java tf值搜索_搜索引擎优化 TF