1. 程式人生 > 其它 >Excel 快速填充功能介紹以及注意事項

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>