1. 建立项目
- 建立java项目
- 在项目根目录下新建webapp文件夹;在webapp下新建一个WEB-INF文件夹(浏览器不会访问到该目录下的资源。tomcat在启动时,会在此目录下读取配置文件)
- 在WEB-INF下建立一个web.xml 文件。tomcat启动后本身会加载安装路径下的大配置文件web.xml, 当发现项目的WEB-INF下也存在web.xml时,会作为分配置文件一并加载。
- WEB-INF建立lib文件,用来存放相关jar包
2. web.xml 配置
- Load-on-startup: 在web应用启动时,指定servlet被加载的顺序;如果值是负整数,或者没有指定,那么容器会在该servlet被调用的时候,加载这个servlet。如果是正整数或0,容器在配置的时候就加载并初始化这个servlet。值越小就越先被加载。
- 加载顺序
ServletContext -> context-param -> listener -> filter -> servlet
<context-param>用于向ServletContext提供键值对,这些参数,在listener,filter初始化的时候会用到。 - 基本元素介绍
属性 | 功能 | 备注 |
---|---|---|
discription | 描述 | |
display-name | 定义名称 | |
context-param | 环境参数 | 它包含两个子元素param-name,param-value;参数的值,可以使用getServletContext().getInitParameter("para_name")获取到 |
filter | 声明filter | 它包含三个子元素:filter-name,filter-class,init-param |
filter-mapping | 定义filter所对应的URL | 包含:filter-name,url-pattern子元素 |
listener | 设定listener接口 | 包含listener-class子元素 |
servlet | 声明一个servlet | 子元素:servlet-name,servlet-class, jsp-file, init-param |
servlet-mapping | 定义servlet对应的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相关组件。
<context:component-scan base-package="com.test.controller"/>
由于SpringMVC提供了默认的servlet组件,为了方便就不自定义相关组件。
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();
}
}