专题(一):SSM框架-SpringMVC

本文介绍如何在SpringMVC框架中实现文件上传功能,包括依赖导入、配置springmvc.xml、编写Controller处理方法等内容,并讲解了文件显示及拦截器的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

(一)文件上传

导入依赖

<!--文件上传-->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-io</artifactId>
      <version>1.3.2</version>
    </dependency>

    <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
    </dependency>

配置springmvc.xml文件

 

JSP部分的form标签

 

Controller

 

代码

@RequestMapping("/addUser")
    //传来的文件名字不能与类的属性相同
    public void addUser(TUser user,MultipartFile image,HttpServletResponse response,
                        HttpServletRequest request) throws Exception{
        response.setContentType("text/html;charset=utf-8");
        if(image!=null){
            String oldfileName=image.getOriginalFilename();
            System.out.println("旧文件名:"+oldfileName);
            File f = createDir(request.getServletContext());//在服务器创建存储文件的文件夹
            String newfileName = createName(oldfileName);//防止重名,给文件赋予新文件名
            File file = new File(f,newfileName);
            String absolutePath = file.getAbsolutePath();//获取文件的真实路径
            System.out.println("文件的真实路径:"+absolutePath);
            image.transferTo(file);//将ufile存储到file
            //数据库中存入新的文件名
            int index = absolutePath.lastIndexOf("upload");
            String ss = absolutePath.substring(index + 7);
            user.setUfile(ss); //设置文件名
        }
        //新增用户到数据库
        user.setUpass("888666"); //设置默认密码
        int count = us.addUser(user);
        if (count > 0) {
            response.getWriter().write("<script>alert('新增成功');location.href='/User/page/1';</script>");
        } else {
            response.getWriter().write("<script>alert('新增失败');location.href='/User/page/1';</script>");
        }
    }
    // 创建目录---以日期,一天一个文件夹
    private File createDir(ServletContext context) {
        String realPath = context.getRealPath("/upload");
        //使用的时候在upload文件夹放一个文件,因为默认不编译空文件夹
        String date = new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime());
        File file = new File(realPath, date);//以date日期在realPath路径下创建一个名为date的文件夹
        if (!file.exists()) {
            file.mkdir();
        }
        return file;
    }

    // 创建文件名--区分同名文件,在文件名前加上当前的时间
    private String createName(String name) {
        return new SimpleDateFormat("yyyyMMddHHmmssSSS").format(Calendar.getInstance().getTime()) + "_" + name;
    }

(二)文件显示

从session中取出文件名

(三)拦截器

拦截器(interceptor)的作用:

Spring MVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器预处理和后处理。用户可以自己定义一些拦截器拉实现特定的功能。

拦截器(interceptor)和过滤器(Filter)的区别:

过滤器是servlet规范中的一部分,任何java web工程都可使用,拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能用。过滤器在url-pattern中配置了/*之后,可以对所有要访问的资源拦截。拦截器它是只会拦截访问的控制器方法,如果访问的是jsp,html,css,image或者js是不会进行拦截的。它也是AOP思想的具体应用。

我们想要自定义拦截器,必须要实现HandlerInceptor接口。

过滤器实现的是Filter接口,拦截器实现的HandlerInterceptor接口!

 

实现HandlerInceptor接口

拦截器中的方法说明

 

放行的含义是指,如果有下一个拦截器就执行下一个,如果该拦截器处于拦截器链的最后一个,则执行控制器中的方法。

 

在springmvc.xml中配置拦截器

多个拦截器的执行顺序:

拦截器1preHandle 拦截器拦截了.......

拦截器2preHandle 拦截器拦截了.......

系统生成的验证码: EtM7

拦截器2postHandle 拦截器拦截了.......

拦截器1postHandle方法执行了....

拦截器2: afterCompletion 拦截器拦截了.......

拦截器1afterCompletion方法执行了....

多个拦截器是按照配置的顺序决定的。

 

(四)JSON

访问控制器返回Json类型数据

导入对应的JSON包

 

在springmvx.xml中配置转换器

 

配合@ResponseBody返回Json数据类型!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值