springMVC 註解方式實現全程+檔案上傳

來源:互聯網
上載者:User

這幾天有點忙,總結都沒有寫。

今天搭建架構基本有了點成效。現在還剩下兩個問題:第一、springmvc 上傳檔案;第二、mongodb上傳檔案。這兩個部分是本次系統的核心部分,而這兩個部分卻還是零工作狀態,心裡還是有點小著急。不知道這個項目能不能按期完成,因為時間只剩下十天了(包括周末)。

還是總結一下springmvc的註解架構的實現吧:

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"><!-- 配置控制器 -->  <servlet>  <servlet-name>dispatcher</servlet-name>  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  </servlet>  <!-- 配置spring 設定檔    -->  <context-param>  <param-name>contextConfigLocation</param-name><param-value>classpath:config/applicationContext-base.xml,classpath:config/applicationContext*.xml</param-value>  </context-param>     <!-- 配置控制器映射 -->  <servlet-mapping>  <servlet-name>dispatcher</servlet-name>  <url-pattern>*.do</url-pattern>  </servlet-mapping>    <listener>  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener></web-app>

dispatcher-servlet.xml(注意:這個xml檔案是springmvc的核心設定檔,實際上是一個applicationContext.xml檔案,預設為WEB-INF路徑下,若有另外的配置,需要在web.xml檔案中配置:另外,該xml檔案命名規範為web.xml檔案中<servlet-name>dispatcher</servlet-name>配置的名字加上”-servlet.xml”,本例中為dispatcher-servlet.xml)

<servlet>  <servlet-name>dispatcher</servlet-name>  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param>              <param-name>contextConfigLocation</param-name>                         <!--                  指定XML檔案位置                 <param-value>/WEB-INF/classes/springmvc.xml                            <param-value>classpath*:springmvc.xml                -->               <!-- 在classpath路徑下去尋找springmvc.xml檔案 -->                          <param-value>classpath:springmvc.xml               </param-value>          </init-param>    </servlet>

dispatcher-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.0.xsd          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"        default-autowire="byName">       <!-- SpringMVC相關Bean配置 --><bean id="localeResolver" class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver"></bean><!-- 配置視圖 --><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"p:prefix="/WEB-INF/view/" p:suffix=".jsp"><property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property></bean><context:annotation-config />          <!-- 把標記了@Controller註解的類轉換為bean -->           <context:component-scan base-package="test.controller" /> <!-- 啟動Spring MVC的註解功能,完成請求和註解POJO的映射 -->           <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />             <bean id="multipartResolver"               class="org.springframework.web.multipart.commons.CommonsMultipartResolver"               p:defaultEncoding="utf-8" />     </beans>

定義一個jsp頁面:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body>    <form action="login.do" method="post">        <input type="hidden" name="method" value="pageQuery"/><input type="hidden" name="pageNo" value="1"/>        userName:<input type="text" name="userName"/><br>        password:<input type="password" name="password"/><br>        <input type="submit" value="submit"/>    </form>    <hr>    <h1>test file upload</h1>    <form action="login.do" method="post" enctype="multipart/form-data">        <input type="hidden" name="method" value="upload"/>        <input type="file" name="file"/>        <input type="submit" value="upload"/>    </form>    </body></html>

Form表單映射類:Login:

package test.entity;public class Login {private String userName; //從頁面擷取的值private String password; //從頁面擷取的值public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

編寫Controller:

package test.controller;import java.io.File;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest;import test.entity.Login;import com.zhjy.core.util.Page;@Controller@RequestMapping("/login.do")public class CopyOfTestController {@RequestMappingpublic String login(HttpServletRequest request, HttpServletResponse response, Login login) {System.out.println(request.getParameter("userName"));System.out.println(login.getUserName());return "success";}/** * 參數注入測試 @RequestParam("pageNo") int pageNo * 頁面請求需要帶參數pageNo * @param pageNo * @param request * @param model * @return * @throws Exception */@RequestMapping(params = "method=pageQuery")public String pageQuery(@RequestParam("pageNo") int pageNo,HttpServletRequest request,ModelMap model) throws Exception{System.out.println(pageNo);String putModel="test put model string";model.put("model", putModel);return "/test/success";//頁面跳轉到WEB-INF/view/test/success.jsp頁面//注釋:WEB-INF/view是設定檔中的首碼,.jsp 是設定檔中的尾碼//<bean id="viewResolver" //class="org.springframework.web.servlet.view.InternalResourceViewResolver"//p:prefix="/WEB-INF/view/" p:suffix=".jsp">}/** * 不同請求方式POST GET * @param login * @param request * @param response * @param model * @return */@RequestMapping(method=RequestMethod.POST, params = "method=save")public String login(Login login, HttpServletRequest request, HttpServletResponse response, ModelMap model) {System.out.println(request.getParameter("userName"));System.out.println(login.getUserName());model.addAttribute("user", "user");this.getOracleService().test();return "/test/success";}/** * 上傳檔案測試 * @param request * @param model * @return */@RequestMapping(method=RequestMethod.POST, params = "method=upload")public String upload(HttpServletRequest request,ModelMap model) {MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;           SimpleDateFormat dateformat = new SimpleDateFormat("yyyy/MM/dd/HH");           /**構建圖片儲存的目錄**/          String logoPathDir = "/files"+ dateformat.format(new Date());           /**得到圖片儲存目錄的真實路徑**/          String logoRealPathDir = request.getSession().getServletContext().getRealPath(logoPathDir);           /**根據真實路徑建立目錄**/          File logoSaveFile = new File(logoRealPathDir);           if(!logoSaveFile.exists())               logoSaveFile.mkdirs();                 /**頁面控制項的檔案流**/          MultipartFile multipartFile = multipartRequest.getFile("file");            /**擷取檔案的尾碼**/          String suffix = multipartFile.getOriginalFilename().substring        (multipartFile.getOriginalFilename().lastIndexOf("."));   //        /**使用UUID組建檔案名稱**/  //        String logImageName = UUID.randomUUID().toString()+ suffix;//構建檔案名稱           String logImageName = multipartFile.getOriginalFilename();        /**拼成完整的檔案儲存路徑加檔案**/          String fileName = logoRealPathDir + File.separator   + logImageName;                      File file = new File(fileName);                      try {               multipartFile.transferTo(file);           } catch (IllegalStateException e) {               e.printStackTrace();           } catch (IOException e) {                      e.printStackTrace();           }           model.put("fileName", fileName);        return "/test/success";        }}

在WEB-INF/view/test下建立success.jsp頁面:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"    pageEncoding="ISO-8859-1"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>login success</title></head><body><hr><h1>view/test/success.jsp</h1><h1>login success</h1>success<br/>userName:${userName }<br/>success<br/>login.userName :${login.userName }<br/>success<br/>user:${user }<br/><hr><h1>test file upload</h1>fileName:${fileName } </body></html>

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.