spring-mvc不攔截靜態資源的配置
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
"mvc:annotation-driven" 的前綴 "mvc"未綁定
辦法:這是我在spring-servlet.xml文件里使用<mvc>開頭的標簽時,忘記引入了命名空間。在xml的beans里面加入如下代碼即可
xmlns:mvc="http://www.springframework.org/schema/mvc"
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
靜態文件訪問,主要是讓DispatcherServlet不攔截以下靜態資源
<mvc:annotation-driven />
<mvc:resources location="/image/" mapping="/image/**"/>
<mvc:resources location="/css/" mapping="/css/**"/>
<mvc:resources location="/js/" mapping="/js/**"/>
<!-- 啟動掃描所有的controller -->
<context:component-scan base-package="com.peidw.web"/>
<mvc:annotation-driven/>
<!-- 對特定路徑攔截-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/user/MyHome"/>
<mvc:mapping path="/um/*"/>
<bean class="com.peidw.web.interceptor.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
在Java代碼里實現攔截
package com.peidw.web.interceptors;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.*;
/**
* Created by peidw on 2015/3/6.
*/
@Component
public class HelloInterceptor implements HandlerInterceptor{
private static Logger logger=Logger.getLogger(HelloInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
logger.info("執行Action前先判斷權限");
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
logger.info("生成視圖前,可以改model和視圖");
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
logger.info("生成視圖前,可以改model和視圖");
}
}
package com.peidw.web;
import com.peidw.web.interceptors.HelloInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
* Created by peidw on 2015/3/6.
*/
@Configuration
@EnableWebMvc
public class WebApplicationConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HelloInterceptor()).addPathPatterns("/hello");;
}
}
<!-- 全局攔截 -->
<mvc:interceptors>
<bean class="com.peidw.web.interceptor.MyInterceptor"></bean>
</mvc:interceptors>
一些常用注解
@Autowired和@Qualifier 自動注入[根據類型注入]
@Autowired 可以對成員變量、方法以及構造函數進行注釋,
@Qualifier 的標注對象是成員變量、方法入參、構造函數入參。
ps:兩者結合使用相當於@Resourcede效果。
@Resource 自動注入[根據名稱注入],可寫參數name=""
@Controller 表示控制器
@Service 表示業務處理層[一般在serviceImpl]
@Repository 表示持久層[一般在daoImpl]
@Component 當你的類不清楚是哪一層的時候使用該注解
@ResponseBody 異步返回數據類型為json
@RequestMapping 路徑,請求類型等設置
@InitBinder 數據綁定
@RequestBody、@ModeleAttributes、@SessionAttributes等