Excel 快速填充功能介紹以及注意事項
1.springMVC配置
在web.xml裡面配置:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app > <display-name>Archetype Created Web Application</display-name> <!--部署DispatcherServlet--> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC.xml</param-value> </init-param> <!--表示容器啟動立即載入Servlet--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!--處理亂碼問題--> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>forceRequestEncoding</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>forceResponseEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
2.@Controller註解和@RequestMapping註解
@Controller宣告一個控制器
@Controller
public class UserController {
}
Spring MVC 使用掃描機制找到應用中所有基於註解的控制器類,所以,為了讓控制器類被 Spring MVC 框架掃描到,需要在配置檔案中宣告 spring-context,並使用 <context:component-scan/>
元素指定控制器類的基本包(請確保所有控制器類都在基本包及其子包下)。
在springmvc.xml裡面設定 <context:component-scan base-package="com.sora.controller"/>
說實話一下沒搞明白:
當配置了mvc:annotation-driven/後,Spring就知道了我們啟用註解驅動。然後Spring通過context:component-scan/標籤的配置,會自動為我們將掃描到的@Component,@Controller,@Service,@Repository等註解標記的元件註冊到工廠中,來處理我們的請求。
<!--註解驅動,以使得訪問路徑與方法的匹配可以通過註解配置-->
<mvc:annotation-driven />
優雅REST風格的資源URL不希望帶 .html 或 .do 等字尾.由於早期的Spring MVC不能很好地處理靜態資源,所以在web.xml中配置DispatcherServlet的請求對映,往往使用 *.do 、 *.xhtml等方式。這就決定了請求URL必須是一個帶字尾的URL,而無法採用真正的REST風格的URL。
如果將DispatcherServlet請求對映配置為"/",則Spring MVC將捕獲Web容器所有的請求,包括靜態資源的請求,Spring MVC會將它們當成一個普通請求處理,因此找不到對應處理器將導致錯誤。
如何讓Spring框架能夠捕獲所有URL的請求,同時又將靜態資源的請求轉由Web容器處理,是可將DispatcherServlet的請求對映配置為"/"的前提。由於REST是Spring3.0最重要的功能之一,所以Spring團隊很看重靜態資源處理這項任務,給出了堪稱經典的兩種解決方案。
<mvc:default-servlet-handler/>
在springMVC-servlet.xml中配置<mvc:default-servlet-handler />後,會在Spring MVC上下文中定義一個org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它會像一個檢查員,對進入DispatcherServlet的URL進行篩查,如果發現是靜態資源的請求,就將該請求轉由Web應用伺服器預設的Servlet處理,如果不是靜態資源的請求,才由DispatcherServlet繼續處理。
一般Web應用伺服器預設的Servlet名稱是"default",因此DefaultServletHttpRequestHandler可以找到它。如果你所有的Web應用伺服器的預設Servlet名稱不是"default",則需要通過default-servlet-name屬性顯示指定:
<mvc:default-servlet-handler default-servlet-name="所使用的Web伺服器預設使用的Servlet名稱" />
3.接收請求引數
3.1逐個接收引數
要逐個接收引數請求的引數名必需和控制器形參名一樣。
<!--提交引數-->
<form method="post" action="test">
姓名:<input type="text" name="name">
年齡:<input type="text" name="age">
<input type="submit">
</form>
//控制器,形參名是一致的
@Controller
public class TestController {
@RequestMapping("/test")
public ModelAndView test(String name,int age){
ModelAndView view = new ModelAndView();
view.addObject("name", name);
view.addObject("age", age);
view.setViewName("test.jsp");
return view;
}
}
<!--結果展示-->
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>test</title>
</head>
<body>
<h1>this is a test page</h1>
<p>name:${name}</p>
<p>age:${age}</p>
</body>
</html>
要是請求的引數名和控制器形參名不一致,可以使用@RequestParam註解來解決。在形參名的前面寫上@RequestParam(value="name")
3.2使用物件接收引數
要求:請求的引數名要和物件屬性名一致。類中必需要有無引數構造器,set方法。
超級重要的ssm整合導包
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!--json處理工具包-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>