zoukankan      html  css  js  c++  java
  • SpringMVC文件上传

    一.配置web.xml

    关键是指定spring-servlet.xml配置文件的位置

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
        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_2_5.xsd">  
      
       <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
         <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-servlet.xml</param-value> 
        </init-param>
        <!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-servlet.xml</param-value>  默认
        </init-param>
        -->
        <load-on-startup>1</load-on-startup>
    </servlet>
     
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    
    </web-app>

    二.spring-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:p="http://www.springframework.org/schema/p"  
        xmlns:context="http://www.springframework.org/schema/context"  
        xmlns:mvc="http://www.springframework.org/schema/mvc"  
       xsi:schemaLocation="  
           http://www.springframework.org/schema/beans   
           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
           http://www.springframework.org/schema/context   
            http://www.springframework.org/schema/context/spring-context-3.2.xsd  
            http://www.springframework.org/schema/mvc      
            http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">  
         <!-- 启用spring mvc 注解 -->
        <context:annotation-config />
     
        <!-- 设置使用注解的类所在的jar包 -->
        <context:component-scan base-package="me.mvc,me.base"></context:component-scan>
     
        <!-- 完成请求和注解POJO的映射 -->
      <!--   <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> -->
     
        <!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/jsp/" p:suffix=".jsp" />
         <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
      <property name="messageConverters">
       <list>
        <bean
         class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
         <property name="supportedMediaTypes">
          <list>
           <!--返回字符串格式json-->
           <value>application/json;charset=UTF-8</value>
          </list>
         </property>
        </bean>
       </list>
      </property>
     </bean>
         <!-- 上传文件的关键配置 -->
     <bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="102400000"></property>
    </bean>
    </beans>  

    三.后台代码(代码中有方法作用的注释)

    package me.mvc;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import me.mvc.service.testmvcDao;
    import net.sf.json.JSONArray;
    
    import org.apache.struts2.ServletActionContext;
    import org.springframework.http.HttpRequest;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.multipart.MultipartHttpServletRequest;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    @RequestMapping("/mvc/*")
    public class testmvc {
    
        @RequestMapping(value="/uploadindex.do",method=RequestMethod.GET)//上传文件的首页
        public String uploadindex() throws Exception{
            
            
             return "testupload";
        }
        
        @RequestMapping(value="/upload.do",method=RequestMethod.POST)//上传文件的关键代码
        public String upload(HttpServletRequest req) throws Exception{
            MultipartHttpServletRequest mreq = (MultipartHttpServletRequest)req;
            MultipartFile file = mreq.getFile("file");
            String fileName = file.getOriginalFilename();
            
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");  
           String s= req.getSession().getServletContext().getRealPath("upload");
           //&&&&&&&&&&&&&&&:D:apache-tomcat-7.0.27webappsSpringMvcWebRootupload/
           System.out.println("&&&&&&&&&&&&&&&:"+s);
           File targetFile = new File(s, sdf.format(new Date())+fileName.substring(fileName.lastIndexOf('.')));  
           if(!targetFile.exists()){  
               targetFile.mkdirs();  
           }  
     
           //保存  
           try {  
               file.transferTo(targetFile);  
           } catch (Exception e) {  
               e.printStackTrace();  
           }  
           //model.addAttribute("fileUrl", request.getContextPath()+"/upload/"+fileName); 
           // FileOutputStream fos = new FileOutputStream(req.getSession().getServletContext().getRealPath("upload")+
                //    sdf.format(new Date())+fileName.substring(fileName.lastIndexOf('.')));
            //FileOutputStream out = new FileOutputStream(path+"\"+fileName+type);
        
            //fos.write(file.getBytes());
          // fos.flush();
            //fos.close();
           req.setAttribute("messagex", "上传成功");
            return "upload";
        }
    /*    @RequestMapping(method=RequestMethod.GET,value="/hello2")
          public ModelAndView hello2() {   
              ModelAndView view = new ModelAndView("hello2");          
                return view;
    }*/
    }

    四.前端页面

    页面有两个部分组成

    upload.jsp是上传文件的页面,由于上传文件的页面是跟主页面是配套使用的,所以就有了testupload.jsp这个主页面

    1.testupload.jsp的代码,通过ifame嵌套upload.jsp页面

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'gdgl.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
    
      </head>
      
      <body>
      <table>
          <tr>
                        <td>工单管理:</td>
                        <td >
                    <!--     <input id="bk_img" type="hidden" class="easyui-textbox" name="bk_img"  /> -->
                        <%--   嵌套upload.jsp页面 --%>
                        <iframe id="tt" name="tt1" src="<%=path%>/jsp/upload.jsp"  frameBorder="0" frameSpacing="0" height="25" width="600" marginHeight="0" marginWidth="0" scrolling="no" ></iframe>
                        </td>
                    </tr>
                    </table>
      </body>
    </html>

    2.upload.jsp代码

     <%=request.getAttribute("messagex")==null?"":request.getAttribute("messagex").toString()%>,返回上传成功后的信息


    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    response.setHeader("P3P" , "CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"" );
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>文件上传</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <link rel="stylesheet" href="<%=path%>/resource/themes/icon.css"
        type="text/css" />
    <link rel="stylesheet"
        href="<%=path%>/resource/themes/default/easyui.css" type="text/css" />
    <script type="text/javascript" src="<%=path%>/resource/js/jquery.min.js"></script>
    <script type="text/javascript"
        src="<%=path%>/resource/js/jquery.easyui.min.js"></script>
    </head>
    
    <body>
        <!-- ${pageContext.request.contextPath}/upload/execute_upload.do -->
        <!-- ${pageContext.request.contextPath}/upload2/upload2.do -->
        <table>
        <td>
        <form action="<%=path%>/mvc/upload.do" onsubmit="return check()" enctype="multipart/form-data"
            method="post">
              <input type="file" id="curr_sel_image"  name="file" style="float: left;  170px;" > <input type="submit" style="float: left;padding-left: 0px;" value="上传" />
              
        </form>
        </td>

    <td> <%=request.getAttribute("messagex")==null?"":request.getAttribute("messagex").toString()%> </td> </table> <!-- <br /> <s:fielderror /> --> </body> <script type="text/javascript"> function check(){ var str=document.getElementById("curr_sel_image").value; if(str.length==0) { alert("请选择上传的文件!"); return false; } return true; } </script> </html>

    五.页面效果

    1.上传前

    2.上传后

  • 相关阅读:
    MvvmTest
    win8 app 相关的几个网站
    autp
    分析WPF代码工具
    mdsn
    线程和委托
    C#guanli
    学习Boost小结(一)
    Boost.test库的配置
    自己真是太没正事了.
  • 原文地址:https://www.cnblogs.com/cl1255674805/p/5488652.html
Copyright © 2011-2022 走看看