目录:

springmvc的注解方式

文件上传(上传图片,并显示)

一、注解

在类前面加上@Controller 表示该类是一个控制器
在方法handleRequest 前面加上 @RequestMapping("/index") 表示路径/index会映射到该方法上

将上一篇的博客改为注解方式:

SpringMVC的基础配置及视图定位

1、修改springmvc-servlet.xml

去掉映射相关的配置,因为已经使用注解方式了
增加
<context:component-scan base-package="controller" />
表示从包controller下扫描有@Controller注解的类

2、修改IndexController

  1. @Controller
  2. public class IndexController {
  3. @RequestMapping("/index")
  4. public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
  5. ModelAndView mav = new ModelAndView("index");
  6. mav.addObject("message", "Hello Spring MVC");
  7. return mav;
  8. }
  9. }

也不需要实现Controller接口

二、文件上传

1、配置web.xml使其允许访问jpg文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.4">
  3. <servlet>
  4. <servlet-name>springmvc</servlet-name>
  5. <servlet-class>
  6. org.springframework.web.servlet.DispatcherServlet
  7. </servlet-class>
  8. <load-on-startup>1</load-on-startup>
  9. </servlet>
  10. <servlet-mapping>
  11. <servlet-name>springmvc</servlet-name>
  12. <url-pattern>/</url-pattern>
  13. </servlet-mapping>
  14. <servlet-mapping>
  15. <servlet-name>default</servlet-name>
  16. <url-pattern>*.jpg</url-pattern>
  17. </servlet-mapping>
  18. </web-app>

2、配置springmvc-servlet.xml,开放对上传功能的支持

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  9.  
  10. <context:component-scan base-package="controller" />
  11. <bean id="irViewResolver"
  12. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  13. <property name="prefix" value="/WEB-INF/page/" />
  14. <property name="suffix" value=".jsp" />
  15. </bean>
  16.  
  17. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
  18.  
  19. </beans>

3、upload.jsp文件上传页面

  1. <form action="uploadImage" method="post" enctype="multipart/form-data">
  2. 选择图片:<input type="file" name="image" accept="image/*" /> <br>
  3. <input type="submit" value="上传">
  4. </form>

4、准备UploadedImageFile封装MultipartFile类型的字段 image ,用于接受页面的注入

  1. package pojo;
  2.  
  3. import org.springframework.web.multipart.MultipartFile;
  4.  
  5. public class UploadedImageFile {
  6. MultipartFile image;
  7.  
  8. public MultipartFile getImage() {
  9. return image;
  10. }
  11.  
  12. public void setImage(MultipartFile image) {
  13. this.image = image;
  14. }
  15.  
  16. }

注意:

这里的字段 image必须和上传页面upload.jsp中的image
<input type="file" name="image" accept="image/*" />
保持一致

5、UploadController 上传控制器

  1. package controller;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5.  
  6. import javax.servlet.http.HttpServletRequest;
  7.  
  8. import org.apache.commons.lang.xwork.RandomStringUtils;
  9. import org.springframework.stereotype.Controller;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.servlet.ModelAndView;
  12.  
  13. import pojo.UploadedImageFile;
  14.  
  15. @Controller
  16. public class UploadController {
  17.  
  18. @RequestMapping("/uploadImage")
  19. public ModelAndView upload(HttpServletRequest request, UploadedImageFile file)
  20. throws IllegalStateException, IOException {
  21. //采用随机数来命名图片,防止上传文件名相同的文件会覆盖原文件
  22. String name = RandomStringUtils.randomAlphanumeric(10);
  23. String newFileName = name + ".jpg";
  24. //获取web目录下image目录来存放上传后的文件
  25. File newFile = new File(request.getServletContext().getRealPath("/image"), newFileName);
  26. newFile.getParentFile().mkdirs();
  27. //复制文件
  28. file.getImage().transferTo(newFile);
  29. //把生成的随机文件名传给视图,用来显示
  30. ModelAndView mav = new ModelAndView("showUploadedFile");
  31. mav.addObject("imageName", newFileName);
  32. return mav;
  33. }
  34. }

6、显示图片showUploadedFile.jsp

注意是在page目录下新建jsp文件

  1. <img src="data:image/${imageName}"/>

7、部署,访问http://localhost:8080/springmvc/upload.jsp

SpringMVC注解方式与文件上传的更多相关文章

  1. SSM框架之SpringMVC(5)文件上传

    SpringMVC(5)文件上传 1.实现文件上传的前期准备 1.1.文件上传的必要前提 A form 表单的 enctype 取值必须是: multipart/form-data(默认值是:appl ...

  2. SpringMVC:学习笔记(8)——文件上传

    SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...

  3. SpringMVC 通过commons-fileupload实现文件上传

    目录 配置 web.xml SpringMVC配置文件 applicationContext.xml 文件上传 Controller 上传实现一 上传实现二 测试 依赖 配置 web.xml < ...

  4. SpringMVC札集(08)——文件上传

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  5. SpringMVC 参数映射与文件上传

    handler参数映射: 接下来就是Spring的各个处理细节了,无论框架如何疯转其实我们处理请求的流程是不变的,设计到的操作也是固定的,举个例子,当我们要实现一个登陆功能时: 创建一个用于处理登录请 ...

  6. springmvc学习笔记--支持文件上传和阿里云OSS API简介

    前言: Web开发中图片上传的功能很常见, 本篇博客来讲述下springmvc如何实现图片上传的功能. 主要讲述依赖包引入, 配置项, 本地存储和云存储方案(阿里云的OSS服务). 铺垫: 文件上传是 ...

  7. SpringMVC 使用MultipartFile实现文件上传(转)

    http://blog.csdn.net/kouwoo/article/details/40507565 一.配置文件:SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们 ...

  8. SSM-SpringMVC-32:SpringMVC中灌顶传授文件上传

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 我将用自认为最简单的语言,描述Springmvc的文件上传,来将老夫毕生功力灌顶传授给你 首先文件上传,又简至 ...

  9. SpringMVC基础(二)_文件上传、异常处理、拦截器

    实现文件上传 实现文件上传,需要借助以下两个第三方 jar 包对上传的二进制文件进行解析: commons-fileupload commons-io form表单的 enctype 取值必须为:mu ...

随机推荐

  1. 1067 Bash 游戏v2

    传送门 1067 Bash游戏 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 10   有一堆石子共有N个.A B两个人轮流拿,A先拿.每次只能拿1,3,4颗,拿到最后1颗石子的人 ...

  2. Mycat概述

    Mycat是什么?从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的的Server,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用 ...

  3. 使用二次封装的openStack发行版本网卡至少有2个

  4. 希尔排序(java)

    希尔排序是对直接插入排序的一种优化,基本思想是把待排序的数据元素分成若干个小组,对同一小组内的数据元素用直接插入法排序:小组的个数逐次缩小:当完成了所有数据元素都在一个组内的排序后排序过程结束.希尔排 ...

  5. MySQL 的索引和最左前缀原则

    这两天看<构建高性能Web站点>这本书,感觉写的真是不错,很多实际项目中会碰到的问题都有所提及,今天看到一个最左前缀原则,以前也听说过,不过一直没搞明白,今天查了下. 通过实例理解单列索引 ...

  6. HDU - 5001 Walk(概率dp+记忆化搜索)

    Walk I used to think I could be anything, but now I know that I couldn't do anything. So I started t ...

  7. AutoHotkey常用配置

    ; 开发常用 ^e:: run D:\soft\java\MyEclipse for Spring 2014\myeclipseforspring.exe return ^d:: run D:\sof ...

  8. conntrack-tools使用

    基础用法 系统配置 ### 开启流数据包统计(packets和bytes) # echo "net.netfilter.nf_conntrack_acct=1" >> ...

  9. python读写xlsx

    1使用openpyxl库读写excel xlrd和xlwt处理的是xls文件,单个sheet最大行数是65535,如果有更大需要的,建议使用openpyxl函数,最大行数达到1048576.  如果数 ...

  10. Solr 6.7学习笔记(05)-- highlighter

    搜索结果高亮显示是搜索引擎中的常用功能,在Solr中,我们可以如下配置: <requestHandler name="/select" class="solr.Se ...