欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringMVC注解方式与文件上传

程序员文章站 2024-01-11 18:43:10
目录: springmvc的注解方式 文件上传(上传图片,并显示) 一、注解 在类前面加上@Controller 表示该类是一个控制器在方法handleRequest 前面加上 @RequestMapping("/index") 表示路径/index会映射到该方法上 将上一篇的博客改为注解方式: S ......

目录:

springmvc的注解方式

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

一、注解

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

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

springmvc的基础配置及视图定位

1、修改springmvc-servlet.xml

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

2、修改indexcontroller

@controller
public class indexcontroller {
    @requestmapping("/index")
    public modelandview handlerequest(httpservletrequest request, httpservletresponse response) throws exception {
        modelandview mav = new modelandview("index");
        mav.addobject("message", "hello spring mvc");
        return mav;
    }
}

也不需要实现controller接口

 二、文件上传

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

<?xml version="1.0" encoding="utf-8"?>
<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">
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>
            org.springframework.web.servlet.dispatcherservlet
        </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
  </servlet-mapping>
</web-app>

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

<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemalocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context         
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    
    <context:component-scan base-package="controller" />
    <bean id="irviewresolver"
        class="org.springframework.web.servlet.view.internalresourceviewresolver">
        <property name="prefix" value="/web-inf/page/" />
        <property name="suffix" value=".jsp" />
    </bean>
    
    
    <bean id="multipartresolver" class="org.springframework.web.multipart.commons.commonsmultipartresolver"/>

</beans>

3、upload.jsp文件上传页面

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

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

package pojo;

import org.springframework.web.multipart.multipartfile;

public class uploadedimagefile {
    multipartfile image;
 
    public multipartfile getimage() {
        return image;
    }
 
    public void setimage(multipartfile image) {
        this.image = image;
    }
 
}

注意:

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

5、uploadcontroller 上传控制器

package controller;

import java.io.file;
import java.io.ioexception;
 
import javax.servlet.http.httpservletrequest;
 
import org.apache.commons.lang.xwork.randomstringutils;
import org.springframework.stereotype.controller;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.servlet.modelandview;
 
import pojo.uploadedimagefile;
 
@controller
public class uploadcontroller {
 
    @requestmapping("/uploadimage")
    public modelandview upload(httpservletrequest request, uploadedimagefile file)
            throws illegalstateexception, ioexception {
        //采用随机数来命名图片,防止上传文件名相同的文件会覆盖原文件
        string name = randomstringutils.randomalphanumeric(10);
        string newfilename = name + ".jpg";
        //获取web目录下image目录来存放上传后的文件
        file newfile = new file(request.getservletcontext().getrealpath("/image"), newfilename);
        newfile.getparentfile().mkdirs();
        //复制文件
        file.getimage().transferto(newfile);
        //把生成的随机文件名传给视图,用来显示
        modelandview mav = new modelandview("showuploadedfile");
        mav.addobject("imagename", newfilename);
        return mav;
    }
}

6、显示图片showuploadedfile.jsp

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

<img src="image/${imagename}"/>