springmvc攔截器配置和路徑問題

1.
<mvc:interceptors>
<mvc:interceptor>
<!--默認攔截的連接 -->
<mvc:mapping path=**"/**"** />
<!--不攔截的連接 -->
<mvc:exclude-mapping path="/classroom/login.action" />
<bean class="com.java.classroom.interceptor.UserLoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>


2.過濾器 類


package com.java.classroom.interceptor;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;


import com.java.classroom.bean.User;


public class UserLoginInterceptor implements HandlerInterceptor {


@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
// TODO Auto-generated method stub


}


@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
// TODO Auto-generated method stub


}


@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object obj) throws Exception {
System.out.println("preHandle");
        //return false表示攔截,不向下執行
         //return true表示放行
User user=(User) request.getSession().getAttribute("currentUser");
System.out.println(user);
if(user==null){
response.sendRedirect("/jsp/login.jsp");
return false;
}
return true;
}


}


一開始過濾器不起作用,發現是攔截的url不對<mvc:mapping path=**"/**"** />,應該寫:/**。




然後就是路徑問題,總共兩大類,別再迷糊了。


1.服務器端的相對地址
 是在服務器端解析的,是相對於web應用的地址
    servlet中的相對地址應該是相對於web應用,即相對於http://localhost:8080/webapp/
    有這麼幾種情況,1.寫在servlet中的請求轉發的;2.配置文件中的。
 


2.客戶端的相對地址


交給瀏覽器解析的 
    http:// localhost:8080 / 
    1.form表單中的,js中的,html中的(比如a標籤)


參考自    http://zzqrj.iteye.com/blog/806909
 
 
 
 
 
 


 


 






 
 


 
 
 
 


 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章