1. 建立項目
- 建立java項目
- 在項目根目錄下新建webapp文件夾;在webapp下新建一個WEB-INF文件夾(瀏覽器不會訪問到該目錄下的資源。tomcat在啟動時,會在此目錄下讀取配置文件)
- 在WEB-INF下建立一個web.xml 文件。tomcat啟動后本身會加載安裝路徑下的大配置文件web.xml, 當(dāng)發(fā)現(xiàn)項目的WEB-INF下也存在web.xml時,會作為分配置文件一并加載。
- WEB-INF建立lib文件,用來存放相關(guān)jar包
2. web.xml 配置
- Load-on-startup: 在web應(yīng)用啟動時,指定servlet被加載的順序;如果值是負(fù)整數(shù),或者沒有指定,那么容器會在該servlet被調(diào)用的時候,加載這個servlet。如果是正整數(shù)或0,容器在配置的時候就加載并初始化這個servlet。值越小就越先被加載。
- 加載順序
ServletContext -> context-param -> listener -> filter -> servlet
<context-param>用于向ServletContext提供鍵值對,這些參數(shù),在listener,filter初始化的時候會用到。 - 基本元素介紹
| 屬性 | 功能 | 備注 |
|---|---|---|
| discription | 描述 | |
| display-name | 定義名稱 | |
| context-param | 環(huán)境參數(shù) | 它包含兩個子元素param-name,param-value;參數(shù)的值,可以使用getServletContext().getInitParameter("para_name")獲取到 |
| filter | 聲明filter | 它包含三個子元素:filter-name,filter-class,init-param |
| filter-mapping | 定義filter所對應(yīng)的URL | 包含:filter-name,url-pattern子元素 |
| listener | 設(shè)定listener接口 | 包含listener-class子元素 |
| servlet | 聲明一個servlet | 子元素:servlet-name,servlet-class, jsp-file, init-param |
| servlet-mapping | 定義servlet對應(yīng)的URL | servlet-name,url-pattern |
- 指定spring配置文件的位置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml, /WEB-INF/action-servlet.xml
</param-value>
</context-param>
- 指定listener
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
ContextLoaderListener 可以指定在web程序啟動時載入IOC容器。請參考ContextLoaderListener的作用
- 添加DispatcherServlet
DispatcherServlet作用請參考DispatcherServlet初始化
<servlet>
<servlet-name>SpringDispatchedServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SpringDispatchedServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3. SpringDispatchedServlet-servlet.xml文件指定Servlet context
在這個文件里,可以指定HandlerMapping,HandlerAdapter, ViewResolver... servlet相關(guān)組件。
<context:component-scan base-package="com.test.controller"/>
由于SpringMVC提供了默認(rèn)的servlet組件,為了方便就不自定義相關(guān)組件。
4. 測試controller
@Controller
public class TestController {
@Autowired
private Demo demo;
@RequestMapping(value = "/test", method = RequestMethod.GET)
@ResponseBody
public String test() {
TDKRequestParam param = new TDKRequestParam();
param.setDomain("domain");
param.setPage("test");
param.setUrl("/243433/854003/");
SResult<Meta> s = demo.getResult(param);
return s.getData().getDescription();
}
}