转载文章:
http://www.codeif.com/topic/480
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方
1.form的enctype=”multipart/form-data” 这个是上传文件必须的
2.applicationContext.xml中 <bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”/> 关于文件上传的配置不能少
大家可以看具体代码如下:
web.xml
<?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/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>webtest</display-name>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/applicationContext.xml
/WEB-INF/config/codeifAction.xml
</param-value>
</context-param>
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/codeifAction.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 拦截所有以do结尾的请求 -->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.do</welcome-file>
</welcome-file-list>
</web-app>
applicationContext.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:p="http://www.springframework.org/schema/p"
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"
default-lazy-init="true">
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" lazy-init="false" />
<!-- 另外最好还要加入DefaultAnnotationHandlerMapping,不然会被 XML或其它的映射覆盖! -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
<!-- 支持上传文件 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
</beans>
codeifAction.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"
default-lazy-init="true">
<bean id="uploadAction" class="com.codeif.action.UploadAction" />
</beans>
UploadAction.java
package com.codeif.action;
import java.io.File;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@Controller
public class UploadAction {
@RequestMapping(value = "/upload.do")
public String upload(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request, ModelMap model) {
System.out.println("开始");
String path = request.getSession().getServletContext().getRealPath("upload");
String fileName = file.getOriginalFilename();
// String fileName = new Date().getTime()+".jpg";
System.out.println(path);
File targetFile = new File(path, fileName);
if(!targetFile.exists()){
targetFile.mkdirs();
}
//保存
try {
file.transferTo(targetFile);
} catch (Exception e) {
e.printStackTrace();
}
model.addAttribute("fileUrl", request.getContextPath()+"/upload/"+fileName);
return "result";
}
}
index.jsp
<%@ page pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>上传图片</title>
</head>
<body>
<form action="upload.do" method="post" enctype="multipart/form-data">
<input type="file" name="file" /> <input type="submit" value="Submit" /></form>
</body>
</html>
WEB-INF/jsp/下的result.jsp
<%@ page pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>上传结果</title>
</head>
<body>
<img alt="" src="${fileUrl }" />
</body>
</html>
分享到:
相关推荐
在这个“最全的Spring MVC注解例子”中,我们将深入探讨Spring MVC的核心注解,以及如何实现异步请求处理和错误管理。 1. **Spring MVC核心注解** - `@Controller`:标记一个类为处理HTTP请求的控制器。这是Spring...
Spring MVC 是一个强大的Java Web开发框架,用于...在提供的链接文章"spring mvc 注解实现"中,你应该能发现更多关于如何实际应用这些注解的例子和详细解释。学习和理解这些注解对于提升Spring MVC的开发效率至关重要。
首先,Spring MVC注解允许开发者以声明式的方式配置控制器,避免了传统的XML配置文件。这极大地简化了代码,提高了可读性和维护性。例如,`@RequestMapping`注解就是其中的关键,它可以在类级别或方法级别使用,用于...
用户只需下载并解压文件,然后在本地环境中运行,即可查看Spring MVC注解项目的工作情况。 7. **学习资源**: 这个实例对于初学者来说是一个很好的起点,它展示了一个完整的Spring MVC应用的基本构造,并且使用了...
在提供的压缩包文件`springMVC`中,你可以找到一个实际的Spring MVC项目,其中包含了上述注解的使用。通过阅读源代码,你可以更深入地理解这些注解如何协同工作,以构建一个完整的Web应用程序。学习和实践这个例子将...
在本教程中,我们将深入探讨Spring MVC的核心概念,特别是关于注解的使用以及简单的控制器实现。 首先,Spring MVC的核心组件包括DispatcherServlet、Controller、ModelAndView、ViewResolver等。DispatcherServlet...
在这个实例中,我们将重点讨论如何使用Spring MVC的注解进行数据的增删改操作,并结合Hibernate作为ORM(对象关系映射)工具。 首先,`@Controller`注解标记了一个类作为Spring MVC的控制器,负责处理HTTP请求。在...
总的来说,这个"spring mvc+jdbctemplate非注解例子"涵盖了Web开发中的多个核心概念,包括Spring MVC的MVC设计模式、JdbcTemplate对数据库操作的抽象、AOP的切面编程以及连接池的高效资源管理。每个部分都需要对...
以上就是关于Spring MVC注解的基本介绍以及web.xml配置的解析。这些注解的应用极大地简化了Spring MVC的开发流程,使得开发者能够更专注于业务逻辑的实现而非繁琐的配置。希望这些知识点对你有所帮助!
**Spring MVC注解方式** 1. **Controller注解**:`@Controller`是Spring MVC中的核心注解,用于标记一个类作为处理HTTP请求的控制器。在类上添加此注解后,Spring会将该类实例化,并将其纳入到Spring容器中管理。 ...
Spring MVC 是一个强大的Java web...通过这个简单的例子,初学者可以全面地了解Spring MVC的工作原理和流程,为更深入的Web开发打下基础。实践中遇到的问题和解决方法也会加深对Spring MVC的理解,有助于提升开发技能。
本教程将通过一个简单的例子,讲解如何利用Spring MVC创建REST服务。 首先,我们需要在项目中引入Spring MVC的相关依赖。通常,这涉及到在Maven或Gradle的配置文件中添加Spring Web和Spring MVC的依赖。例如,如果...
2. **配置Spring MVC**:在`web.xml`中配置`DispatcherServlet`,并添加Spring MVC的配置文件,如`spring-mvc.xml`,在这里定义视图解析器、拦截器、bean等。 3. **编写Controller**:创建一个控制器类,使用`@...
本文将深入探讨如何在Spring MVC中通过注解的方式整合JdbcTemplate。 首先,要使用JdbcTemplate,我们需要在Spring配置文件中声明一个JdbcTemplate bean。以下是一个简单的配置示例: ```xml ...
通过以上步骤,我们就成功地使用Spring 3.0 MVC注解方式实现了“Hello, World!”的示例。这只是一个基础入门,Spring MVC的强大之处在于其灵活的配置、丰富的注解以及对其他Spring模块的无缝集成,可以满足复杂Web...
### Spring MVC 注解详解 #### 一、Spring MVC 注解简介 Spring MVC 是 Spring 框架的一个模块,专门用于构建 Web 应用程序。它实现了 MVC(Model-View-Controller)设计模式,并且提供了丰富的注解支持,使得...
首先,我们需要创建Spring MVC的配置文件,比如`spring-mvc.xml`,其中包含视图解析器、模型-视图对象、以及Spring MVC的其他相关配置。 - **引入MyBatis** 在Spring配置文件中引入MyBatis的配置,例如`mybatis-...
在本示例中,我们将深入探讨如何利用注解来增强Spring MVC的功能,提高开发效率。 1. **Spring MVC基本结构** Spring MVC的核心组件包括DispatcherServlet、Controller、Model、View和ViewResolver。...
在“spring MVC myeclipse例子”中,我们通常会经历以下几个关键步骤来创建一个简单的Spring MVC项目: 1. **项目初始化**:首先,我们需要在MyEclipse中创建一个新的Dynamic Web Project,然后通过Spring工具集或...
这个例子通常会涵盖基本的Spring MVC项目结构,包括`web.xml`配置文件、`DispatcherServlet`的设置以及Spring MVC的配置文件(`servlet-context.xml`)。在`web.xml`中,你需要配置`DispatcherServlet`作为请求的前端...