在初级Servlet基础上进一步深化了Servlet的知识。
主要从以下几个方面来加深理解Servlet:
一,路径匹配规则
二,Web程序启动时就创建Servlet实例
一般用于在Web程序部署时,进行初始化工作,比如在init()方法中操作数据库中的表。
<servlet>
<servlet-name>xxx</servlet-name>
<servlet-class>com.jackie.web.servlet.xxx</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
三,重定向和请求分派
a,重定向:
b,请求分派:
注意:
对于客户端(HTML)来说,路径前面的“/”是相对web容器地址的路径;
对于服务器端程序来说,路径前面的“/”是相对于web应用程序根路径的路径。
请求分派中的一个重点知识:
请求域
四,ServletConfig对象和ServletContext对象
package com.jackie.web.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class TestServlet
*/
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(this.getServletConfig().getInitParameter("paramName"));
System.out.println(this.getServletContext().getInitParameter("contextParam"));
}
}
web.xml文件:
...
<servlet>
<servlet-name>TestServlet</servlet-name>
<init-param>
<param-name>paramName</param-name>
<param-value>参数值!</param-value>
</init-param>
<servlet-class>com.jackie.web.servlet.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextParam</param-name>
<param-value>上下文值!</param-value>
</context-param>
...