Spring MVC[03-02]图片上传显示

Spring MVC[03-02]图片上传显示


IDEA创建maven-archetype-webapp项目

pom.xml

properties标签中添加spring.version标签

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <spring.version>4.3.7.RELEASE</spring.version>
  </properties>

dependencies标签中添加相关依赖配置

	<dependencies>
        <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <version>2.0.4.RELEASE</version>
        </dependency>
        
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <!-- Spring相关包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!--web 项目 需要配置  jsp  servlet api  -->
        <!-- JSP标准标签库 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
            <scope>provided</scope>
        </dependency>

        <!--servlet api  -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>

        <!--com.mchange.v2.c3p0.ComboPooledDataSource-->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>

        <!--test-->
        <dependency>
            <groupId>com.dfbz.test</groupId>
            <artifactId>SpringMVC_03_02</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.18</version>
            <optional>true</optional>
            <scope>provided</scope>
        </dependency>

        <!--Log4j日志输出功能-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.2</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.2</version>
        </dependency>

        <!--文件上传-->
        <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>

        <!-- AOP相关包 -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.0</version>
        </dependency>

        <!-- MyBatis相关包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.3.0</version>
        </dependency>

        <!-- MySQL相关包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency>

        <!-- 数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.20</version>
        </dependency>

        <!-- Spring集成MyBatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>
    

build标签中添加

		<!--设置资源过滤器   静态资源导出-->
        <resources>
            
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            
            <!--指定xml文件位置-->
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <!--这里写成true会造成编译注释错误-->
                <filtering>false</filtering>
            </resource>
            
        </resources>

a.jsp

在webapp/WEB-INF目录下创建a.jsp

<!--body内容-->
<form action="upImage" method="post" enctype="multipart/form-data">
    图片上传:<input type="file" name="imgfile"><br>
    <input type="submit" value="上传图片">
</form>

MyController.java

在java目录下创建controller层,创建MyController.java

@Controller
public class MyController{
	@RequestMapping("upImage")
    public String upShow(@RequestParam MultipartFile imgfile,HttpServletRequest request) throws IOException {
        String realPath = request.getSession().getServletContext().getRealPath("img");
        File f1=new File(realPath+"/"+imgfile.getOriginalFilename());
        imgfile.transferTo(f1);
        request.setAttribute("img",imgfile.getOriginalFilename());
        return "show";
    }
}

形参MultipartFile imgfile前需要加注解@RequestParam
imgfile与a.jsp中input标签name一致
realPath得到的是项目中img目录的路径(字符串)
新建文件对象,路径为img目录/加原文件名拼接
并将文件的完整路径key设为img,转到show页面

show.jsp

在webapp/WEB-INF目录下创建show.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<img src="img/${img}">
</body>
</html>

设置解析EL表达式,添加img标签显示上传的图片

spring-controller.xml

在main目录下创建resources文件夹,创建spring-controller.xml
右键resources(new→XML Configuration File→Spring Config)

    <!--注解映射器-->
    <context:component-scan base-package="com.dfbz.controller"/>
    
    <!-- 视图解析器-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

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

视图解析器中设置前缀为/WEB-INF/设置后缀为.jsp
则MyController.java中aPage方法返回a的效果就是访问/WEB-INF/a.jsp

文件上传id为multipartResolver,类是CommonsMultipartResolver
property中设置name为maxUploadSize意为最大上传大小,value的值1就代表1B(10240意为10KB)

web.xml

在web-app标签中添加

	<!--设置编码格式为UTF-8-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <!--配置DispatcherServlet加载spring容器-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:spring-controller.xml</param-value>
        </init-param>
    </servlet>
    <!--设置接管所有链接-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

web.xml(tomcat)

在tomcat安装目录编辑conf下的web.xml文件,例如D:\apache-tomcat-7.0.90\conf\web.xml
大约在390行左右位置添加

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>

server.xml(Tomcat)

在tomcat安装目录编辑conf下的web.xml文件,例如D:\apache-tomcat-7.0.90\conf\server.xml
大约在70行左右位置添加URIEncoding="UTF-8"

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
			   URIEncoding="UTF-8"
			   />

解决文件名含有中文程序执行乱码的问题(未出现乱码此步忽略

部署Tomcat并运行项目

部署Tomcat并运行项目,地址栏输入a,回车进入a.jsp页面
点击选择文件按钮,选择图片后点击上传图片按钮,页面跳转至show.jsp页面,同时页面中显示上传的图片
注意
若target目录未生成img目录,需要手动创建或者停止项目将target目录删除
重新运行项目


以上就是本期总结的全部内容,愿大家相互学习,共同进步!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值