SpringMVC注解方式与文件上传
程序员文章站
2024-01-11 18:43:10
目录: springmvc的注解方式 文件上传(上传图片,并显示) 一、注解 在类前面加上@Controller 表示该类是一个控制器在方法handleRequest 前面加上 @RequestMapping("/index") 表示路径/index会映射到该方法上 将上一篇的博客改为注解方式: S ......
目录:
springmvc的注解方式
文件上传(上传图片,并显示)
一、注解
在类前面加上@controller 表示该类是一个控制器
在方法handlerequest 前面加上 @requestmapping("/index") 表示路径/index会映射到该方法上
将上一篇的博客改为注解方式:
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}"/>
上一篇: Unity_新手必懂知识点