servlet的相关要点

一、什么是Servlet?

servlet是运行在 Web 服务器中的小型 Java 程序(即:服务器端的小应用程序)。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。

二、Servlet的创建方式

  • 实现javax.servlet.Servlet接口
    public class ServletDemo1 implements Servlet {
    
    	public ServletDemo1() {
    		System.out.println("servlet构造方法");
    	}
    	
    	@Override
    	public void init(ServletConfig arg0) throws ServletException {
    		System.out.println("servlet被初始化...");
    	}
    	
    	@Override
    	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
    		System.out.println("service被执行!");
    	}
    	
    	@Override
    	public void destroy() {
    		System.out.println("destory()函数");
    	}
    
    	@Override
    	public ServletConfig getServletConfig() {
    		return null;
    	}
    
    	@Override
    	public String getServletInfo() {
    		return null;
    	}
    
    
    }
    


  • 继承javax.servet.GenericServlet类(适配器模式)
    public class ServletDemo2 extends GenericServlet{
    	private static final long serialVersionUID = 4819565559437692117L;
    
    	@Override
    	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
    		System.out.println("Hello Servlet!");
    	}
    }

  • 继承javax.servlet.http.HttpServlet类(模版设计模式)(最常用)
    public class ServletDemo3 extends HttpServlet {
    	private static final long serialVersionUID = -801956896785489625L;
    
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		System.out.println("**********doGet()********");
    	}
    
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		System.out.println("**********doPost()********");
    	}
    }

    web.xml文件如下:
    <servlet>
        <servlet-name>servletDemo1</servlet-name>
        <servlet-class>com.lzj.serlvet.ServletDemo1</servlet-class>
        <load-on-startup>2</load-on-startup> <!--在启动Tomcat时创建该servlet-->
      </servlet>
      <servlet-mapping>
        <servlet-name>servletDemo1</servlet-name>
        <url-pattern>/demo1</url-pattern>
      </servlet-mapping>
    <servlet>


三、Servlet的执行方式

首先从客户端发送http请求(http://localhost:8080/day08/demo1),该请求到达服务器时,服务器首先根据url中的day08找到在tomcat中运行的day08这个应用,然后再根据demo1在该应用中扫描web.xml,找到<url-pattern>对应的servlet名称,之后由兄弟节点根据servlet的名称找到servlet的类。找到该servlet后,若是servlet有jdbc的操作,会首先载入lib下的类和tomcat/lib中的所有的jar,之后执行构造方法进行实例化,执行init()方法进行初始化,调用service()方法,进行服务,当应用卸载时或关闭服务器时会调用destroy()方法。

还有在调用service方法后,request和response将面临销毁。

下面用一张图来表示上述过程:

四、Servlet的生命周期

实例化-->初始化-->服务-->销毁

出生:(实例化-->初始化)第一次访问Servlet就出生(默认情况下)。

活着:(服务)应用活着,servlet就活着。

死亡:(销毁)应用卸载了servlet就销毁。

五、ServletConfig

获取servlet的配置信息

<servlet>
  	<servlet-name>servletConfigDemo</servlet-name>
  	<servlet-class>com.itheima.serlvetConfig.ServletConfigDemo</servlet-class>
  	<init-param>
  		<param-name>encoding</param-name>
  		<param-value>UTF-8</param-value>
  	</init-param>
  </servlet>

public class ServletConfigDemo extends HttpServlet {
	//第一种获取方式
	//private ServletConfig config;

	/*@Override
	public void init(ServletConfig config) throws ServletException {
		this.config = config;
	}*/

	private static final long serialVersionUID = -3056032161082463104L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		/*String encoding = config.getInitParameter("encoding");//获得配置文件中的信息的
		System.out.println(encoding);*/
		
		//第二种方式
		String encoding2 = this.getServletConfig().getInitParameter("encoding");
		System.out.println(encoding2);
		
		//第三种方式
		System.out.println(this.getInitParameter("encoding"));
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}


六、ServletContext

         ServletContext: 代表的是整个应用。一个应用只有一个ServletContext对象。单实例。

         作用:

1、域对象,使多个servlet共享数据

常用方法:

void setAttribute(String name,object value);//向ServletContext对象的map中添加数据

Object getAttribute(String name);//从ServletContext对象的map中取数据

2、获取全局的配置信息

<context-param>
     <param-name>encoding</param-name>
     <param-value>UTF-8</param-value>
</contexe-param>
 String getInitParameter(String name)  根据配置文件中的key得到value

3、获取资源的路径

              String  getRealPath(String path);//根据资源名称得到资源的绝对路径.

             可以得到当前应用任何位置的任何资源。


关于servlet的内容就写这么多,上述如有不正确的地方,还望各位指出。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值