• SpringMVC学习-----二


    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>
    坚持就是胜利
  • 相关阅读:
    python 星号*使用方法
    python print 使用分隔符 或行尾符
    python 打印输出至文件中, 'wt'读写文件方式,会把原文件内容清空
    python 换行符的识别问题,Unix 和Windows 中是不一样的
    python 读不同编码的文本,传递一个可选的encoding 参数给open() 函数
    django学习笔记(4)
    dos下edit编辑器的快捷命令一览
    django学习笔记(3)
    django学习笔记(2)
    django学习笔记(1)
  • 原文地址:https://www.cnblogs.com/xiaotieblog/p/8378232.html
Copyright © 2020-2023  润新知