java web实现页面跳转页面_JavaWeb过滤器实现页面跳转至登录页面
需求說明:
1、用戶登錄某頁面一段時間之內(nèi),如果無任何操作,跳轉(zhuǎn)至登錄頁面。
2、用戶在非登錄狀態(tài)下,無法訪問項目下的某些頁面。
解決方式:
通過session過濾器實現(xiàn)對請求的過濾,如果未登錄跳轉(zhuǎn)至登錄頁面,如果已登錄直接放行。在過濾器中不對登錄頁面進行過濾,不對css、js、img資源進行過濾。
如果不是前面說的兩種資源,則判斷記錄用戶信息的session是否為空,空則跳轉(zhuǎn)至登錄頁面、非空則放行。
方法一:Java過濾器實現(xiàn)(推薦)
解決步驟:
步驟一:在項目下配置web.xml文件中配置session
1、設(shè)置session失效時間(時間單位為分鐘)
30
2、配置過濾器
session過濾器
sessionFilter
com.filter.SessionFilter
sessionFilter
/*
注意:這里對所有的請求都進行了過濾。也可以在配置過濾器的時候設(shè)置某些請求不進行過濾,這里不進行具體的介紹。
步驟二:編寫過濾器類
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有時候無法完成跳轉(zhuǎn)。2、上面的代碼執(zhí)行時需要用戶在登錄時將用戶信息放入session中。
方法二:Jsp頁面Java代碼實現(xiàn)(了解)
完成方法一的步驟就可以實現(xiàn)一個session過濾器了,過濾器會對請求想要訪問的頁面進行進行請求判斷。如果我們只想對某一個頁面進行session判斷又不想使用過濾器,可以在頁面上使用java代碼進行判斷。
注意這里只對某一個特定的頁面,其他頁面是不能用的。
if(session.getAttribute("user")== null) {%>
top.location.href="jsp/login.jsp";
總結(jié)
以上是生活随笔為你收集整理的java web实现页面跳转页面_JavaWeb过滤器实现页面跳转至登录页面的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql qadir_MySQL 及
- 下一篇: java tf值搜索_搜索引擎优化 TF