手写Servlet

Servlet作为JAVAEE支持的标准之一,有着广泛应用。在此手写一个Servlet加深理解。在tomcat的webapps文件夹中新建一个文件夹myServlet,在此文件下新建下新建WEB-INF文件夹,再在此文件夹下新建classes文件夹存放FirstServlet.java,同时在WEB-INF文件夹下新建web.xml文件。

FirstServlet.java文件如下:

package com.bankcomm.servlet;

import java.io.*;
import javax.servlet.*;

public class FirstServlet extends GenericServlet{
	
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
	{
	    OutputStream out = res.getOutputStream();
		out.write("hello servlet!".getBytes());

	}
}

web.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1">
  
      <servlet>
        <servlet-name>FirstServlet</servlet-name>
        <servlet-class>com.bankcomm.servlet.FirstServlet</servlet-class>
    </servlet>
	
	
	 <servlet-mapping>
        <servlet-name>FirstServlet</servlet-name>
        <url-pattern>/FirstServlet</url-pattern>
    </servlet-mapping>
	</web-app>

在编译java文件前要将tomcat中的servlet-api.jar文件加入classpath中,再执行javac -d . FirstServlet.java编译java文件。启动tomcat服务器,在浏览器栏中输入http://127.0.0.1:8080/myServlet/FirstServlet即可得到正确响应。

整个Servlet调用过程如下:

     1)客户机连上Web服务器

     2)发送http请求给服务器

     3)服务器解析出客户机想访问的主机名

     4)服务器解析出客户机想访问的web应用

     5)服务器解析出客户机想访问的web资源

     6)web服务器第一次调用FirstServlet.java类创建servlet实例对象(客户第一次访问创建,驻留在内存中,响应后续请求)

     7)调用servlet的init方法完成实例对象的初始化

     8)创建代表请求的request和代表响应的response对象,然后调用servlet的service方法

     9)service方法执行,向代表客户端响应的response对象写入了向客户端输出的数据。

   10)service方法返回

   11)服务器从response中取出数据,构建一个http响应,会写给客户机

   12)客户机解析http响应并显示。

从servlet角度来看,当web服务器收到客户端的Servlet访问请求后,其整个生命周期如下:

     1)Web服务器首先检查是否已经装载并创建了该Servlet的实例对象,如果是,则直接跳到第4)步,否则执行第20步。

     2)装载并创建该Servlet的一个实例对象。

     3)调用Servlet实例对象的init()方法。

     4)web服务器创建一个用于封装http请求消息的HttpServletRequest对象和一个封装http响应消息的HttpServletResponse对象。然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。

     5)web应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destory()方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值