SpringMVC常见注解mvc interceptors mvc view controller mvc resources mapping的用法

mvc:interceptors mvc:view-controller mvc:resources mapping都是SpringMVC配置文件中常见的标签,今天就根据具体代码来详细介绍一下这两个标签的使用方法:

一、mvc:interceptors用法

1.配置拦截器

  在springMVC.xml配置文件增加:

    <mvc:interceptors>
        
        <mvc:interceptor> 
            <mvc:mapping path="/anon/**/*.int" />
            <bean class="com.by.frame.intfc.IntfaceSecurityInterceptor" />
        mvc:interceptor>
    mvc:interceptors>

  说明:

  1)mvc:mapping 拦截器路径配置
  2)mvc:exclude-mapping 拦截器不需要拦截的路径
  3)bean class表示拦截器代码,详细说明了这个拦截器的用途

代码如下图所示:
public class IntfaceSecurityInterceptor extends HandlerInterceptorAdapter {

    public static final Log logger = LogFactory.getLog(IntfaceSecurityInterceptor.class);

    @Resource
    private IASysClientKeyService aSysClientKeyService;
    @Resource
    private IASysPortLogService aSysPortLogService;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        ………………  
    }

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

这个标签使用的目的就是对于某些特殊的接口需要使用拦截器对其进行处理,例如:使用加密数据请求接口,需要在拦截器中对请求数据进行解密之后才可以进入controller。

二、mvc:view-controller用法

此注解主要用来实现首页的重定向,在springMVC中配置如下:
<mvc:view-controller path="/" view-name="redirect:/frame/protal" />
<mvc:view-controller path="/index" view-name="redirect:/frame/protal" />
<mvc:view-controller path="/frame/index" view-name="redirect:/frame/protal" />

path表示访问的path,view-name表示重定向后的path,上图表示无论访问的路径是”/” “/index” 还是”/frame/index”,都要重定向到 “/frame/protal”。

关于重定向,有两种方式:

1)、重定向

<mvc:view-controller path="/" view-name="redirect:/admin/index"/> 
即如果当前路径是/ 则重定向到/admin/index 

2)、view name

<mvc:view-controller path="/" view-name=/admin/index"/> 

如果当前路径是/ 则交给相应的视图解析器直接解析为视图,然后可以根据viewResolver配置的prefix和suffix找到具体的视图。

另外还有一种常用的重定向的方法,那就是在controller中重定向,

@Controller
@RequestMapping("/frame")
public class LogoutController extends BaseController {

    @RequestMapping(value="/logout", method=RequestMethod.GET)
    public String logout() {
        SecurityUtils.getSubject().logout();
        return "redirect:/frame/login";
    }
}

当访问 “/frame/logout”时,重定向到 “/frame/login”

三、mvc:resources mapping用法
采用spring自带方法。首先找到你定义的那个servlet的xml文件,如本例子中,servlet的名字叫mvc-dispatcher,因此需要找到mvc-dispatcher-servlet.xml文件,并在该文件中插入以下配置:

<mvc:resources mapping="/resources/**/" location="/resources/"/>  

如此就不必另外添加一个mvc来处理静态资源。而mvc知道静态资源所处的位置为resources文件夹。
两种方法都可以将spring mvc配置处理静态资源。

在SpringMVC3.0之后推荐使用一:

 <mvc:resources location="/img/" mapping="/img/**"/>   
 <mvc:resources location="/js/" mapping="/js/**"/>    
 <mvc:resources location="/css/" mapping="/css/**"/> 

说明:

location元素表示webapp目录下的static包下的所有文件;

mapping元素表示以/static开头的所有请求路径,如/static/a 或者/static/a/b;

该配置的作用是:DispatcherServlet不会拦截以/static开头的所有请求路径,并当作静态资源

交由Servlet处理。
  

你可能感兴趣的:(SpringMVC)