這幾天有點忙,總結都沒有寫。
今天搭建架構基本有了點成效。現在還剩下兩個問題:第一、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>