码迷,mamicode.com
首页 > 其他好文 > 详细

第三篇-->Servlet从细节开始(一)

时间:2015-07-24 17:51:58      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

package cn.lee;
 
import java.io.IOException;
 
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
 
public class  HelloServlet implements Servlet{
 
    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        System.out.println("destroy Servlet");
    }
 
    @Override
    public ServletConfig getServletConfig() {
        // TODO Auto-generated method stub
        System.out.println("getServletConfig");
        return null;
    }
 
    @Override
    public String getServletInfo() {
        // TODO Auto-generated method stub
        System.out.println("getServletInfo");
        return null;
    }
 
    @Override
    public void init(ServletConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
        System.out.println("init");
    }
 
    @Override
    public void service(ServletRequest arg0, ServletResponse arg1)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("service");
    }
    public HelloServlet(){
        
        System.out.println("HelloServlet‘Construct");
    }
}
 
以上是一个完整的Servlet
对于Servlet的生命周期应该有一个深刻的认识
1.构造器: 只有第一次请求Servlet时,创建Servlet的实例调用构造器,
   这说明Servlet是一个单例。这就可以探讨其中的单例问题。
2.init方法:对象只被调用一次,在创建好实例后立即被调用,用于初始化当前Servlet
3.service:每次访问Servlet都会调用service方法
4.destroy:只被调用一次,在当前Servlet所在的Web应用被卸载前调用,用于释放当前Servlet所占用的资源。如数据库连接。
这些方法都由Servlet容器调用。
 
在web.xml中配置
5.load-on-startup参数
1)配置在Servlet节点中
   <servlet>
          <servlet-name>helloServlet</servlet-name>
           <servlet-class>cn.lee.HelloServlet</servlet-class>
           <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
          <servlet-name>helloServlet</servlet-name>
           <url-pattern>/hello</url-pattern>
    </servlet-mapping>  
 
 <load-on-startup>0</load-on-startup>指定Servlet被创建的时机,若为负数,则表示第一次请求时被创建。若大于等于0,则在Servlet容器加载中就被创建,并且值越小越早被创建。
-------
6.url-pattern  可以是/*, *.do  前者优先匹配
-------
7.ServletConfig 封装了Servlet的配置信息,
1).配置Servlet的初始化参数
   <!--  init-param must be put before loadonstartup-->
  <servlet>
            <init-param>
               <param-name>user</param-name>
               <param-value>root</param-value>
           </init-param>
           <init-param>
               <param-name>password</param-name>
               <param-value>123</param-value>
           </init-param> 
 <load-on-startup>0</load-on-startup>  
    </servlet>
初始化参数必须放在load-on-startup前面
2).获取初始化参数:
   getInitParameter(String name):获取指定参数名的初始化参数
   getInitParameterNames():获取参数名组成的Enumeration对象
 
public void init(ServletConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
        System.out.println("init");
        String user=arg0.getInitParameter("user");
        System.out.println(user);
        Enumeration <String> names=arg0.getInitParameterNames();
        while(names.hasMoreElements()){
            
            String name=names.nextElement();
            String value=arg0.getInitParameter(name);
            System.out.println(name+":"+value);
        }
        String servletName=arg0.getServletName();
        System.out.println(servletName);
    }
这也是Request的原型
------------------------
 
 
 

第三篇-->Servlet从细节开始(一)

标签:

原文地址:http://www.cnblogs.com/sailing-egg/p/4673697.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!