1、转发和重定向以及参数
@RequestMapping(value = "/sayNo")
public ModelAndView sayNo(){
ModelAndView mv=new ModelAndView();
mv.addObject("msg","第一次11测试");
mv.setViewName("redirect:/no.jsp");
return mv;
以上的方式是将mv以“重定向”的方式来传递。
参数将以这种方式来传递。通过mv.addObject来完成。
转发
/**
* 转发到25
* @return
*/
@RequestMapping(value = "show2")
public String test2(){
// /宝石的是到应用名称结束====https://localhost:8080/day/
return "forward:/show3.do";
}
@RequestMapping(value = "show3")
public String test3(){
System.out.println("这是show3");
return "welcome";
}
2、springmvc拦截器
HandlerExecutionChain
HandlerExecutionChain是一个执行链,从HandlerMapping返回给DispatherServlet,其中包含了Handler对象和Interceptor(拦截器)对象(数组),SpringMVC的拦截器接口定义了三种方法:
(1)preHandler调用handler之前执行
(2)postHandler调用handler之后执行
(3)afterCompletion视图渲染完之后执行
拦截器代码
package intercepter;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyHandlerIntercepter implements HandlerInterceptor {
/**
* 前置方法,在执行完handler之前执行。返回值true:继续向下执行。false:终止执行
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
System.out.println("=======================================前置方法");
return true;
}
/**
* 后置方法,在执行完handler之后执行,从后向前执行。前置方法执行返回false,后置方法以及整个拦截器中的所有后置方法不再执行
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
System.out.println("======================================后置方法");
}
/**
* 完成方法,视图渲染完成之后执行,从后向前执行。视图渲染完成之后执行
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @param e
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
System.out.println("完成方法");
}
}
如果要让拦截器生效,需要在springmvc-servlet.xml文件中配置
<!--对拦截器进行配置--> <mvc:interceptors> <mvc:interceptor> <!--拦截的路径,配置和servlet不同。/**表示拦截所有--> <mvc:mapping path="/**"/> <bean class="intercepter.MyHandlerIntercepter"></bean> </mvc:interceptor> </mvc:interceptors>