1.servlet配置
<servlet>
<servlet-name>随意</servlet-name>
<servlet-class>包名+类名</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>与上同名</servlet-name>
<url-pattern>/想访问的地址</url-pattern>
</servlet-mapping>
可以有多个mapping。
2. javax.servlet.http
class HttpServlet:
void |
Tomcat调用这个方法把客户端请求分发到受保护的service方法。从接口Servlet中来的,HttpServlet实现了该接口。 |
protected void |
|
从上述可以看出,我们可以重写受保护的service方法来处理请求,但是一般不这样做,一般还是重写doGet()或者doPost()方法。
另外:
/:在html中,代表域名的访问路径;而在web.xml中,代表webapp。这点要注意。
3.servlet生命周期
从始至终,servlet只有一个对象。具体如下:
加载(classLoader)--->实例化(new)--->初始化(init())---->处理请求(公共的service()方法---受保护的service()方法---doGet()/doPost())--->退退出服务(destroy())。
new:客户端第一次访问时;
init():只调用一次;
处理请求:基于线程池。
destroy():webapp退出、加载、类文件变化等。
3.GenericServlet类中有两个init()方法
ServletConfig:代表的是servlet的配置信息。该对象是Tomcat从配置文件中读取包装成一对象得到的。
void | init(ServletConfig config) Called by the servlet container to indicate to a servlet that the servlet is being placed into service. |
|
|
原因:若程序员要重写带参数的init()方法,但是忘记调用super.int(config)方法,则this.getServletConfig()将为null,所以为了解决这个问题,该类提供了一个不带参数的init()方法,即重写该方法即可。
<servlet>
<servlet-name>TestLife</servlet-name>
<servlet-class>包名.类名</servlet-class>
<init-param>
<param-name>参数名</param-name>
<param-value>参数值</param-value>
</init-param>
<init-param>
<param-name>参数名</param-name>
<param-value>参数值</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>TestLife</servlet-name>
<url-pattern>/TestLife</url-pattern>
</servlet-mapping>
servlet中读取初始化参数:
读取所有的:
Enumeration em=this.getInitParameterNames(); 获取所有参数名 while(em.hasMoreElements()){ //取出参数名字 String name=(String)em.nextElement(); //取出参数名称对应的参数值 String value=this.getServletConfig().getInitParameter(name); //打印出结果 System.out.println(value); }
4.从页面取参数
request.getParameter(参数名) :一个参数名对应一个参数值;
request.getParameterValues(参数名):一个参数名对应多个值;
request.getParameterNames():获取页面所有的参数名字。