• 2021-5-29 周报博客


    个人博客

    1.学到的东西

    SpringMVC的文件上传

    1-SpringMVC的请求-文件上传-客户端表单实现(应用)

    文件上传客户端表单需要满足:

    表单项type=“file”

    表单的提交方式是post

    表单的enctype属性是多部分表单形式,及enctype=“multipart/form-data”

    <form action="${pageContext.request.contextPath}/user/quick22" method="post" enctype="multipart/form-data">
            名称<input type="text" name="username"><br/>
            文件1<input type="file" name="uploadFile"><br/>
            <input type="submit" value="提交">
        </form>
    

    2-SpringMVC的请求-文件上传-文件上传的原理(理解)

    3-SpringMVC的请求-文件上传-单文件上传的代码实现1(应用)

    添加依赖

    <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.3</version>
        </dependency>
    

    配置多媒体解析器

    <!--配置文件上传解析器-->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="defaultEncoding" value="UYF-8"/>
            <property name="maxUploadSize" value="500000"/>
        </bean>
    

    后台程序

    @RequestMapping(value="/quick22")
        @ResponseBody
        public void save22(String username, MultipartFile uploadFile) throws IOException {
            System.out.println(username);
           	System.out.println(uploadFile);
        }
    

    4-SpringMVC的请求-文件上传-单文件上传的代码实现2(应用)

    完成文件上传

    @RequestMapping(value="/quick22")
        @ResponseBody
        public void save22(String username, MultipartFile uploadFile) throws IOException {
            System.out.println(username);
            //获得上传文件的名称
            String originalFilename = uploadFile.getOriginalFilename();
            uploadFile.transferTo(new File("C:\upload\"+originalFilename));
        }
    

    5-SpringMVC的请求-文件上传-多文件上传的代码实现(应用)

    多文件上传,只需要将页面修改为多个文件上传项,将方法参数MultipartFile类型修改为MultipartFile[]即可

    <form action="${pageContext.request.contextPath}/user/quick23" method="post" enctype="multipart/form-data">
            名称<input type="text" name="username"><br/>
            文件1<input type="file" name="uploadFile"><br/>
            文件2<input type="file" name="uploadFile"><br/>
            <input type="submit" value="提交">
        </form>
    
    @RequestMapping(value="/quick23")
        @ResponseBody
        public void save23(String username, MultipartFile[] uploadFile) throws IOException {
            System.out.println(username);
            for (MultipartFile multipartFile : uploadFile) {
                String originalFilename = multipartFile.getOriginalFilename();
                multipartFile.transferTo(new File("C:\upload\"+originalFilename));
            }
        }
    

    6-SpringMVC的请求-知识要点(理解,记忆)

    SpringMVC的拦截器

    01-SpringMVC拦截器-拦截器的作用(理解)

    Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。

    将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(InterceptorChain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。

    02-SpringMVC拦截器-interceptor和filter区别(理解,记忆)

    关于interceptor和filter的区别,如图所示:

    03-SpringMVC拦截器-快速入门(应用)

    自定义拦截器很简单,只有如下三步:

    ①创建拦截器类实现HandlerInterceptor接口

    ②配置拦截器

    ③测试拦截器的拦截效果

    编写拦截器:

    public class MyInterceptor1 implements HandlerInterceptor {
        //在目标方法执行之前 执行
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
            System.out.println("preHandle.....");
    }
        //在目标方法执行之后 视图对象返回之前执行
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
    System.out.println("postHandle...");
        }
        //在流程都执行完毕后 执行
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
            System.out.println("afterCompletion....");
        }
    }
    
    

    配置:在SpringMVC的配置文件中配置

    <!--配置拦截器-->
        <mvc:interceptors>
            <mvc:interceptor>
                <!--对哪些资源执行拦截操作-->
                <mvc:mapping path="/**"/>
                <bean class="com.itheima.interceptor.MyInterceptor1"/>
            </mvc:interceptor>
        </mvc:interceptors>
    
    

    编写测试程序测试:

    编写Controller,发请求到controller,跳转页面

    @Controller
    public class TargetController {
    
        @RequestMapping("/target")
        public ModelAndView show(){
            System.out.println("目标资源执行......");
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.addObject("name","itcast");
            modelAndView.setViewName("index");
            return modelAndView;
        }
    
    }
    

    页面

    <html>
    <body>
    <h2>Hello World! ${name}</h2>
    </body>
    </html>
    

    2.下周计划

    SpringMVC拦截器

    3.遇到的问题

  • 相关阅读:
    范式的理解
    org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
    RStudio Server安装后无法登录问题
    CSAPP =2= 信息的表示和处理
    【通知】博客迁移到知乎和公众号 20200828
    如何破解zip密码,以及了解8图片(8tupian.com)加密图片
    斐讯K2路由器刷华硕固件后指示灯颜色显示修改(脚本修改)
    关于GBK 编码
    KEIL uVision,KEIL MDK,KEIL For ARM,RealView MDK,KEIL C51,KEIL C166,KEIL C251等的区别
    Python串口通信助手
  • 原文地址:https://www.cnblogs.com/gongyunlong-blogs/p/14912155.html
Copyright © 2020-2023  润新知