springmvc 简单的hello拦截器解析编写


什么是拦截器?

--spring提供的一个特殊的组件,当DispatcherServlet收到请求之后,如果有拦截器,会先调用拦截器,然后调用相应的处理器(Controller).

注: 过滤器属于servlet规范,而拦截器属于spring框架。


如何写一个简单的hello拦截器

step1. 写一个java类,实现HanderlerInterceptor接口。

step2. 实现具体的拦截处理逻辑,比如,session验证。(这里是拦截一个hello.jsp)

public class SomeInterceptor implements HandlerInterceptor{
	
	/**
	 * 最后执行的方法
	 * 注意:只有当preHandle方法返回值为true时,该方法才会执行
	 * ex:是处理器所抛出的异常,可以写一个拦截器,用来处理这些异常
	 */

	public void afterCompletion(HttpServletRequest req,
			HttpServletResponse res,
			Object arg2,
			Exception ex)
			throws Exception {
		// TODO Auto-generated method stub
		
	}
	/**
	 * 处理器(Controller)的方法已经执行完毕,正准备将处理结果(ModelAndView)对象
	 * 返回给DispatcherServlet之前执行postHandle方法。可以在该方法里面,修改处理结果。
	 */

	public void postHandle(HttpServletRequest arg0,
			HttpServletResponse arg1,
			Object arg2, 
			ModelAndView arg3)
			throws Exception {
		System.out.println("postHandle()");
		// TODO Auto-generated method stub
		
	}

	/**
	 * DispatcherServlet收到请求之后,会先调用preHandler方法。如果该方法的
	 * 返回值是true,则继续向后调用;
	 * 如果返回值是false,则不再向后调用了。
	 * arg2:描述处理器方法的一个对象。
	 */
	public boolean preHandle(
			HttpServletRequest arg0,
			HttpServletResponse arg1,
			Object arg2) throws Exception {
		System.out.println("preHandle()");		
		
		return true;
	}
	

}

Controller 里面的内容

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {
	@RequestMapping("/hello.do")
	public String hello() {
		System.out.println("hello");
		return "hello";
	}
	
	@RequestMapping("/demo/hello2.do")
	public String hello2() {
		System.out.println("hello2()");
		return "hello";
	}
	

}

step3.配置拦截器。(spring-mvc.xml中)

		<!-- 配置拦截器
		如果有多个拦截器,会按照配置的先后顺序来执行
		 -->
		<mvc:interceptors>
			<mvc:interceptor>
				<!-- 如果地址 是分层的就用/** -->
				<mvc:mapping path="/**"/>
                                <!--可以加上要排除的访问路例: 排队进登录页面 <mvc:exclude-mapping path="/toLogin.do"/><mvc:exclude-mapping path="/login.do"/> -->
				<bean class="interceptors.SomeInterceptor">
				</bean>
			</mvc:interceptor>
		</mvc:interceptors>


猜你喜欢

转载自blog.csdn.net/qq_40915883/article/details/79519333
今日推荐