web開發中常常會遇到瀏覽網頁時,須要用戶登錄以後才能訪問一些重要的頁面,當你訪問一些「非法」頁面時,也就是若是檢查你尚未登陸進該系統,則須要先登陸,只要你成功登陸就能夠訪問信管內容,實現該功能須要javascript
繼承攔截器HandlerInterceptorAdapter,這個類中有三個重要的方法,灰色老哥方法能夠先不關注,主要代碼實現是綠色那一部分,代碼以下:
html
/**java
* @author tonyweb
* @date 2014-12-17spring
*/mvc
/**app
* 登陸攔截器,只有登陸以後才能訪問ide
*/post
public class LoginInterceptor extends HandlerInterceptorAdapter{ui
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
super.afterCompletion(request, response, handler, ex);
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
super.postHandle(request, response, handler, modelAndView);
}
// 應許經過的URL
private static final String[] IGNORE_URI = {"/login.from","/toLogin.from"};
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
String url = request.getRequestURI().toString();
System.out.println(url);
boolean flag = false;
for (String s : IGNORE_URI) {
if (url.contains(s)) { // 若是是登錄頁面的請求 則放過
flag = true;
break;
}}
if(!flag){
User user = (User)request.getSession().getAttribute("user");
System.out.println(user);
if(user == null){ // 檢查是否登錄,不然跳回登錄頁面
PrintWriter out = response.getWriter();
StringBuilder builder = new StringBuilder();
builder.append("<script type=\"text/javascript\" charset=\"UTF-8\">");
builder.append("alert(\"您還未登陸,請先登陸.\");");
builder.append("window.top.location.href=\"");
builder.append("/StudentSystem/login/toLogin.from\";</script>");
out.print(builder.toString());
out.close();
return false;
}}
return true;
}}
固然實現了登陸檢查以後,須要將自定義這個攔截器在主配置文件中註冊
spring_mvc.xml註冊攔截器代碼以下:
<!-- 配置登錄攔截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!--path="/**"//**表示全部文件夾及子文件夾 -->
<mvc:mapping path="/**"/>
<bean id="loginInterceptor" class="edu.nwsuaf.xc.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
這個是在springMVC下實現的。