06_02_SpringMVC||day02_SpringMVC第二天||(总结篇,原文很详细)

第一章、 响应数据和结果视图

1.1 三层架构和MVC模型

第二章、 SpringMVC实现文件上传

2.1 传统方式实现文件上传
2.2 SpringMVC传统方式实现文件上传

  1. 其中的配置文件解析器SpringMVC已经完成了。只需要手动配置即可。
    • 注:配置bean中的id不能变,只能是MultipartResolver
  2. 具体实现步骤
    1. 导包文件上传的jar包

          <dependency>
              <groupId>commons-fileupload</groupId>
              <artifactId>commons-fileupload</artifactId>
              <version>1.3.1</version>
          </dependency>
          <dependency>
              <groupId>commons-io</groupId>
              <artifactId>commons-io</artifactId>
              <version>2.4</version>
          </dependency>
      
      
    2. 手动配置
      在这里插入图片描述

    3. UserController层,方法的编写
      在这里插入图片描述

2.3 SpringMVC跨服务器方式实现文件上传

  1. 具体实现步骤
    1. 导包开发需要的jar包
          <dependency>
              <groupId>com.sun.jersey</groupId>
              <artifactId>jersey-core</artifactId>
              <version>1.18.1</version>
          </dependency>
          <dependency>
              <groupId>com.sun.jersey</groupId>
              <artifactId>jersey-client</artifactId>
              <version>1.18.1</version>
          </dependency>
      
    2. userController层,方法的编写

第三章、 SpringMVC的异常处理

3.1 异常处理思路

在这里插入图片描述

3.2 异常处理代码编写流程

  • 首先是项目的基本搭建
    1. 选择webapp作为项目
    2. 将pom.xml配置
    3. 将web.jsp配置
    4. 将resources/springmvc.xml配置
    5. 替换原来的index.jsp页面
    6. 编写java/cn.blood.controller/UserController类
    7. 最后加上WEB-INF/gages/success.jsp页面
  1. 步骤一:编写自定义异常类(做提示信息的)
    • 也可加构造方法
  2. 步骤二:编写异常处理器
    在这里插入图片描述


3. 步骤三:配置异常处理器(跳转到提示页面)

4. 步骤四:创建提示页面

第四章、 SpringMVC中的拦截器

4.1 拦截器介绍思路

  • 总结:过滤器什么都拦,拦截器只能拦截Controller方法,并且只能在SpringMVC的框架中去使用。
  • 拦截器能做的事,过滤器都能做。但是过滤器能做的事拦截器不一定能做。
4.2 入门拦截器代码编写流程
  • 首先是项目的基本搭建
    1. 选择webapp作为项目
    2. 将pom.xml配置
    3. 将web.jsp配置
    4. 将resources/springmvc.xml配置
    5. 替换原来的index.jsp页面
    6. 编写java/cn.blood.controller/UserController类
    7. 最后加上WEB-INF/gages/success.jsp页面
  1. 步骤一:编写拦截器类,实现HandlerInterceptor接口
    1. 实现该接口不用写方法。
      • 因为别人定义了方法,并且帮你实现了。
      • 如果想要自己写,呢就重写方法(ctrl + o)
    2. 其中的方法(有三个,下面说):
      1. preHandle:预处理,controller方法执行前
  2. ==步骤二:配置拦截器
4.3 拦截器方法接口演示
  • 重写方法(用ctrl + o来找)
  1. 共有三个
    1. preHandle:主要做逻辑的判断(如:登录了放行,没登录跳转到登录页面)
      • 预处理,controller方法执行前
          /**
           * 自定义拦截器
           */
          public class MyInterceptor1 implements HandlerInterceptor {
          
              /**
               * * 预处理,controller方法执行前
               * * return true:放行,执行下一个拦截器,如果没有就执行controller中的方法
               * * return false:不放行(可以使用request,response去跳转到某个页面来做提示信息)
               * @param request
               * @param response
               * @param handler
               * @return
               * @throws Exception
               */
              public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
                  System.out.println("MyInterceptor1执行了。。。前");
                  //写了下面跳转页面的方法后这句话然后不放行,,就会直接跳过controller
                  //request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request, response);
                  return false;
              }
          
          }
      
    2. postHandle
      • 后处理方法,controller方法执行后,success.jsp执行之前
      • 没有返回值
          /**
           * 自定义拦截器
           */
          public class MyInterceptor1 implements HandlerInterceptor {
          
              /**
               * * 后处理方法,controller方法执行后,success.jsp执行之前
               * * 没有返回值
               * @param request
               * @param response
               * @param handler
               * @param modelAndView
               * @throws Exception
               */
              public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
                  System.out.println("MyInterceptor1执行了。。。后");
                  //写了下面跳转页面的方法后控制台会显示success执行了,但是会跳转到错误页面中
                  //request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request, response);
              }
          
          }
      
    3. afterCompletion:主要做释放资源(关闭流)
      • success.jsp页面执行后,该方法会执行
      • 不能在跳转到别的页面了
          /**
           * 自定义拦截器
           */
          public class MyInterceptor1 implements HandlerInterceptor {
          
              /**
               * * success.jsp页面执行后,该方法会执行
               * * 不能在跳转到别的页面了
               * @param request
               * @param response
               * @param handler
               * @param ex
               * @throws Exception
               */
              public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
                  System.out.println("MyInterceptor1执行了。。。最后");
              }
          }    
      
4.4 多个拦截器演示
  1. 再次创建一个自定义拦截器类
  2. 配置拦截器时候,新建一个mvc:interceptor
        <!-- 配置拦截器 -->
        <mvc:interceptors>
            <!-- 配置特定的拦截器 -->
            <mvc:interceptor>
                <!-- 要拦截的具体方法(与exclude-mapping只配置一个) -->
                <mvc:mapping path="/user/*"/>
                <!-- 不要拦截的方法(与mapping只配置一个)
                <mvc:exclude-mapping path=""/>
                -->
                <!-- 配置拦截器对象-->
                <bean class="cn.blood.interceptor.MyInterceptor1" />
            </mvc:interceptor>
    
            <!-- 配置第二个拦截器 -->
            <mvc:interceptor>
                <!-- 要拦截的具体方法(与exclude-mapping只配置一个) -->
                <!-- 表示拦截controller所有方法-->
                <mvc:mapping path="/**"/>
                <!-- 不要拦截的方法(与mapping只配置一个)
                <mvc:exclude-mapping path=""/>
                -->
                <!-- 配置拦截器对象-->
                <bean class="cn.blood.interceptor.MyInterceptor2" />
            </mvc:interceptor>
        </mvc:interceptors>
    
  • 执行结果:

详细的原文

详页连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂野小白兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值