springMVC文件上传以及用ajax方式提交

spring mvc上传文件的简单例子,这有几个需要注意的地方
1.form的enctype=”multipart/form-data” 这个是上传文件必须的
2.需要依赖的jar包(网上找)

具体代码:
1.spring的配置文件
1)springmvc.xml


<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"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:task="http://www.springframework.org/schema/task" 
       xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd 
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">

    
    <context:component-scan base-package="com.xieyong.bootstrap.controller">context:component-scan>
     
    <task:annotation-driven />

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsps/"/>
<property name="suffix" value=".jsp"/>
bean>

    <mvc:annotation-driven>mvc:annotation-driven>
    
    
    
    <bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">bean>



    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        
        <property name="maxUploadSize">
            <value>5242880value>
        property>
    bean>
beans>

2).applicationContext.xml


<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"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd ">

<context:annotation-config>context:annotation-config>

<context:property-placeholder location="classpath:dbconfig.properties"/>


<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
       <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        
        <property name="maxActive" value="${jdbc.maxActive}"/>
        <property name="maxIdle" value="${jdbc.maxIdle}"/>
bean>  





<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<property name="dataSource" ref="dataSource">property>
bean>

<tx:advice id="transactionadvice" transaction-manager="transactionManager">
<tx:attributes>

<tx:method name="save*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="delete*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="update*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="insert*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
tx:attributes>
tx:advice>

<aop:config>
<aop:pointcut expression="execution(* com.xieyong.bootstrap.service.*.*(..))" id="mypoint"/>
<aop:advisor advice-ref="transactionadvice" pointcut-ref="mypoint"/>
aop:config>

beans>

3).web.xml


<web-app version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name>bootstrapdisplay-name>
     <display-name>display-name>
    
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    listener>
    
    <context-param>
    <param-name>contextConfigLocationparam-name>
    <param-value>/WEB-INF/classes/spring/applicationContext.xml,/WEB-INF/classes/spring/applicationContext-*.xmlparam-value>
    context-param>
 
 <servlet>
 <servlet-name>springmvcservlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
 <init-param>
 <param-name>contextConfigLocationparam-name>
    <param-value>classpath:spring/springmvc.xmlparam-value>
 init-param>
    
        <init-param>
            <param-name>detectAllHandlerExceptionResolversparam-name>
            <param-value>falseparam-value>
        init-param>
 <load-on-startup>1load-on-startup>
 servlet>
   
  <servlet>
    <servlet-name>jfreechartservlet-name>
    <servlet-class>org.jfree.chart.servlet.DisplayChartservlet-class>
 servlet>

<servlet-mapping>
    <servlet-name>jfreechartservlet-name>
    <url-pattern>/jfreecharturl-pattern>
servlet-mapping>

 
    <filter>
        <filter-name>CharacterEncodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>utf-8param-value>
        init-param>
    filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>

<servlet-mapping>
<servlet-name>springmvcservlet-name>

<url-pattern>*.actionurl-pattern>
servlet-mapping>
web-app>

2.后台java代码

@Controller
@RequestMapping("/upload")
public class UploadFileController
{
    @RequestMapping("/uploadFile")
    @ResponseBody
    public String uploadFile(@RequestParam(value = "uploadFile", required = false) MultipartFile uploadFile,HttpServletRequest request, HttpServletResponse response){
        Map resultMap=new HashMap ();
        String fileName = uploadFile.getOriginalFilename ();//获取文件上传的名称
        String newFileName="";
      try
    {
          //重新命名
          if(null!=fileName){
              newFileName=UUID.randomUUID ()+fileName.substring (fileName.lastIndexOf ("."));
          }
          String uploadPath="D:/upload/";//图片上传的目录
          File files=new File(uploadPath,newFileName);
          if(!files.exists ()){
              files.mkdirs ();
          }
          uploadFile.transferTo (files);
          resultMap.put("fileAdress","/upload/"+newFileName);
          resultMap.put("uploadFlag",true);

    }
    catch (Exception e)
    {
        resultMap.put("uploadFlag",false);
        //记日志
    }
      String json=JSONObject.fromObject (resultMap).toString ();
      writeJson(json,response);
        return null;
    }
    private void writeJson(String json, HttpServletResponse response) {
        response.setContentType("application/json;charset=UTF-8");
        PrintWriter out = null;
        try {
            out = response.getWriter();
            out.print(json);
            out.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (null != out) {
                out.close();
            }
        }
  }
}

文件上传的 目录配置了tomact的虚拟目录,在server.xml中加入:

  <Context docBase="D:\upload" path="/upload" reloadable="true"/>

3.前台js以及html代码


    <div class="modal" id="imageModal" aria-hidden="true" data-backdrop="static">
    <div class="modal-dialog">
    <div class="modal-content"><div class="modal-header">
    <button type="button" class="close" data-dismiss="modal">
    <span aria-hidden="true">×span><span class="sr-only">Closespan>button>
    <h4 class="modal-title">上传图片h4>div>
    <form role="form" id="uploadForm" enctype="multipart/form-data">
    <div class="modal-body">
    <div class="form-group"> 
    <label for="textInput">选择图片label> 
    <input type="file" id="uploadFile" name="uploadFile" class="form-control" placeholder="输入部门简称">
    div>   
     <div class="form-group"> 
    <label for="textInput">图片预览label> 
    <img src="" id="lookImage"/>
    div>  
    div>
    <div class="modal-footer">
    <button type="button" class="btn btn-default" data-dismiss="modal">关闭button><button id="addImage" type="button" class="btn btn-primary">上传button>

js代码(使用FormData对象进行ajax表单文件上传)


       $("#addImage").click(function(){
          var form = new FormData(document.getElementById("uploadForm"));
           $.ajax({  
               type: "POST",  
               url:"upload/uploadFile.action",  
               data:form, 
               // 下面三个参数要指定,如果不指定,会报一个JQuery的错误 
                  cache: false,
                   contentType: false,
                  processData: false,
               async: false,  
               success: function(data) {  
                   if(data.uploadFlag==true){
                       $("#lookImage").attr("src",data.fileAdress);
                   }else{
                       alert("上传出错"); 
                   }
               }  
           }); 
       });

4.效果展示
springMVC文件上传以及用ajax方式提交_第1张图片
springMVC文件上传以及用ajax方式提交_第2张图片

你可能感兴趣的:(springMVC文件上传以及用ajax方式提交)