您的位置:首页 > 编程语言 > Java开发

SpringMVC添加拦截器后静态资源处理

2016-10-25 12:41 513 查看
web.xml配置(感觉不是太好):

<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/assets/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/data/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/images/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/css/*</url-pattern>
</servlet-mapping>


2.mvc配置文件(有时不起作用):

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/static/**" location="/static/" />


3.拦截器过滤

<!-- SpringMVC拦截器 -->
<interceptors>
<!-- 使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求 -->
<beans:bean class="com.wlyouxian.manager.support.MyInterceptor">
<beans:property name="uncheckUrls">
<!-- 此处排除以下地址 -->
<beans:list>
<beans:value>/index</beans:value>
<beans:value>/login</beans:value>
</beans:list>
</beans:property>
</beans:bean>
<interceptor>
<!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的,此处拦截所有请求 -->
<mapping path="/**"/>
<beans:bean class="com.wlyouxian.manager.support.MyWebRequestInterceptor"/>
</interceptor>
</interceptors>


相应的类:

package com.sun4j.manager.support;

import java.util.List;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.wlyouxian.manager.entity.Account;

public class MyInterceptor implements HandlerInterceptor {
private static final Logger logger = LoggerFactory.getLogger(MyInterceptor.class);

/**
* 免登入 免检查地址
*/
private List<String> uncheckUrls;
public void setUncheckUrls(List<String> uncheckUrls) {
this.uncheckUrls = uncheckUrls;
}

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
String requestUrl = request.getRequestURI();
String contextPath = request.getContextPath();
requestUrl = removeStart(requestUrl, contextPath);
if (requestUrl.indexOf(".") != -1) {
return true;
}
if(!uncheckUrls.contains(requestUrl)) {
HttpSession session = request.getSession();
Account account = (Account) session.getAttribute(SessionConstant.USER_SESSION_KEY);
if(account == null) {
response.sendRedirect(contextPath  + "/" + "index");
logger.info("----------------用户未登录--------------");
return false;
}
}
return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {

}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {

}

public static String removeStart(String str, String prefix) throws Exception  {
if (null == str)
return null;
if ("".equals(str.trim()))
return "";
if (null == prefix || "".equals(prefix))
return str;
if(str.startsWith(prefix)) {
return str.substring(prefix.length(), str.length());
}
throw new Exception(str + " 没有按指定字符串" + prefix + "开头");
}

}


MyWebRequestInterceptor

package com.sun4j.manager.support;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ui.ModelMap;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.context.request.WebRequestInterceptor;

public class MyWebRequestInterceptor implements WebRequestInterceptor{
private static Logger logger = LoggerFactory.getLogger(MyWebRequestInterceptor.class);
@Override
public void preHandle(WebRequest request) throws Exception {
logger.info("------------MyWebRequestInterceptor-------------");
}

@Override
public void postHandle(WebRequest request, ModelMap model) throws Exception {

}

@Override
public void afterCompletion(WebRequest request, Exception ex) throws Exception {

}

}


4.过滤器处理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息