SSM:拦截器&model&文件的上传和下载

简介: 本文档介绍了Spring MVC中拦截器的实现、Model对象的使用、文件上传下载的配置及实现,以及项目依赖管理文件pom.xml的配置。拦截器通过继承HandlerInterceptor接口实现请求的预处理、后处理和清理工作。Model对象用于数据传递,支持视图解析器的直接返回。文件上传下载涉及配置multipartResolver及编写控制器方法处理文件操作。pom.xml列出了项目所需的各种依赖库。

前言

在现代 web 开发中,Spring MVC 提供了一系列强大的功能来提升应用的灵活性和可维护性。本文档将深入探讨几个关键领域,包括拦截器的实现、Model 对象的使用、文件上传与下载的配置,以及项目依赖管理文件 pom.xml 的配置。

拦截器

创建 一个 类继承HandlerInterceptor

public class MyInterceptor implements HandlerInterceptor {
    public boolean  preHandle(HttpServletRequest request, HttpServletResponse response, Object   handler) throws Exception{
        System.out.println("===========处理前==========");
        return false; //   当return false 不会执行之后的
    }
    //日志
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object   handler, ModelAndView modelAndView) throws Exception{
        System.out.println("===========处理后==========");
    }
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object   handler, Exception  ex) throws Exception{
        System.out.println("===========清理 ==========");
    }
}
<!--拦截器 的配置 -->
    <mvc:interceptors>
        <mvc:interceptor>
<!--            包括这个 请求 下面 的 所有请求 -->
<!--            /**    文件下所有-->
<!--            /*    文件下一个-->
            <mvc:mapping path="/**"/>
            <bean class="com.youren.interceptor.MyInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

model

当 没有视图 解析器 时

package com.youren.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class ModelTest {
    @RequestMapping("/hello")
    public String test(ModelAndView model) {
        // 业务代码
        String result = "HelloSpringMVC";
        model.addObject("msg", result);
        return "forward:/WEB-INF/jsp/test.jsp";
   //       return  "redirect:index.jsp";
    }
}

有视图解析器则可以直接返回

文件的上传和下载

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
    </dependency>
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.3</version>
    </dependency>
<!--    the file upload configuration-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--   request encoding   default is ISO-8859-1     -->
        <property name="defaultEncoding" value="utf-8" />
<!--      max    10485760=10m   -->
        <property name="maxUploadSize" value="10485760"/>
        <property name="maxInMemorySize" value="40960"/>
    </bean>
@RestController
public class fileController {
    @RequestMapping("/upload")
    public String upload(@RequestParam("file")CommonsMultipartFile file, HttpServletRequest request)  throws IOException {
        // get the filename
        String uploadFileName = file.getOriginalFilename();
//        judge
        if("".equals(uploadFileName)){
            return "redirect:/index.jsp";
        }
        System.out.println("the upload filename  is:"+uploadFileName);
//        save the file path
        String path= request.getServletContext().getRealPath("/upload");
//        if  the path is not existing create it
        File realPath= new File(path);
        if(!realPath.exists()){
            realPath.mkdirs();
        }
        System.out.println("the upload file path is :"+realPath);
        InputStream inputStream = file.getInputStream();    // input stream
        OutputStream outputStream =new FileOutputStream(new File(realPath,uploadFileName));
//        读取写出
        int len = 0;
        byte[] buffer= new byte[1024];
        while ((len=inputStream.read(buffer))!=-1){
            outputStream.write(buffer,0,len);
            outputStream.flush();
        }
        outputStream.close();
        inputStream.close();
        return "redirect:/index.jsp";
    }
}


pom.xml


  <dependency>
            <groupId>org.eclipse.ecf</groupId>
            <artifactId>javax.servlet</artifactId>
            <version>3.1.0.v201410161800</version>
        </dependency>
        <!--jstl依赖-->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>6.0.6</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>6.0.6</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.13</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.14.2</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
        </dependency>
    </dependencies>
相关文章
|
2月前
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
60 1
|
6月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的星空游戏购买下载平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的星空游戏购买下载平台附带文章和源代码部署视频讲解等
36 1
|
6月前
|
Java 数据库连接 Spring
杨校老师课堂之Java EE框架SSM所需jar包下载
杨校老师课堂之Java EE框架SSM所需jar包下载
62 0
|
XML Java Maven
解决SSM项目打包没有mapper.xml文件的问题
IDEA的maven项目中,默认源代码目录下(src/main/java目录)的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉。如果使用的是Eclipse,Eclipse的src目录下的xml等资源文件在编译的时候会自动打包进输出到classes文件夹。
291 1
|
Java 数据库连接 mybatis
java202304java学习笔记第六十五天-ssm-声明式控制-mybatis映射文件
java202304java学习笔记第六十五天-ssm-声明式控制-mybatis映射文件
60 1
|
Java 数据库连接 mybatis
java202304java学习笔记第六十六天-ssm-声明式控制-mybatis映射文件概述
java202304java学习笔记第六十六天-ssm-声明式控制-mybatis映射文件概述
176 0
|
Java Spring
java202304java学习笔记第六十天-ssm-spring配置文件-spring加载properties文件2
java202304java学习笔记第六十天-ssm-spring配置文件-spring加载properties文件2
70 0
|
Java Spring
java202304java学习笔记第六十天-ssm-spring配置文件-spring加载properties文件1
java202304java学习笔记第六十天-ssm-spring配置文件-spring加载properties文件1
56 0
java202304java学习笔记第六十天-ssm-spring配置文件-抽取jdbc.properties文件
java202304java学习笔记第六十天-ssm-spring配置文件-抽取jdbc.properties文件
61 0
|
前端开发
java202304java学习笔记第六十四天-mvc的请求-ssm-拦截器的作用
java202304java学习笔记第六十四天-mvc的请求-ssm-拦截器的作用
59 0