手动编写一个Servlet

Servlet

servlet是基于java语言编写的服务端程序,主要功能是能够在服务器中执行并生成数据。

特点:单进程,多线程

创建一个Servlet案例

1.编写Servlet的java代码文件

package com.test.servlet;

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

public class Hello extends HttpServlet{
		public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException ,IOException{
			PrintWriter pw = response.getWriter();
			
			pw.println("<!DOCTYPE html>");
			pw.println("<html lang='en'>");
			pw.println("<head>");
			pw.println("<meta charset='UTF-8'>");
			pw.println("<meta name='viewport' content='width=device-width, initial-scale=1.0'>");
			pw.println("<title>Document</title>");
			pw.println("</head>");
			pw.println("<body>");
			pw.println("hello,world");
			pw.println("</body>");
			pw.println("</html>");
			pw.flush();
			//关闭资源
			pw.close();
	}
}

2.编译java文件生成class字节码文件

这里由于代码使用到tomcat里面的jar包,因此需要这样编译。

javac -classpath "C:\tomcat\apache-tomcat-9.0.80\lib\servlet-api.jar" Hello.java

3.创建web.xml配置文件

web.xml是web项目的部署描述文件,是javaweb工程的配置文件,通过web.xml文件可以配置servlet,filter等技术,Tomcat启动时会先解析该配置文件获取项目的配置信息。

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_4_0.xsd"
         version="4.0">
    <!-- 其他配置 -->
</web-app>

在web.xml文件配置Servlet

<?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_4_0.xsd"
         version="4.0">
    <!-- 其他配置 -->
    <!--  配置servlet全名-->
    <servlet>
        <!-- 配置servlet别名 -->
        <servlet-name>hello</servlet-name>
        <!-- 配置servlet全名 -->
        <servlet-class>com.test.servlet.Hello</servlet-class>
    </servlet>
    <!-- 配置servlet的url -->
    <servlet-mapping>
        <!-- 指定那个servlet绑定url,使用上面配置的别名 -->
        <servlet-name>hello</servlet-name>
        <!-- 配置servlet的url -->
        <url-pattern>/demo</url-pattern>
    </servlet-mapping>
</web-app>

部署servlet

web项目的目录结构是

webapps ->project ->WEB-IF ->classes(com  -> test ->servlet ->Hello.class),lib,web.xml

目录名不能写错,将class字节文件放到指定文件夹里面

运行tomcat,

访问

http://localhost:8080/servletdemo/demo

Tomcat运行过程

  1. 用户访问http://localhost:8080/servletdemo/demo,请求被发送到Tomcat,被监听8080端口并被处理HTTP/1.1协议的Connector连接器获得。
  2. Connector把该请求交给它所在的Service的Engine(引擎)l来处理,并等待Engine的回应。
  3. Engine获得请求http://localhost:8080/servletdemo/demo,匹配所有虚拟主机Host.
  4. Engine匹配到名为localhost的Host虚拟主机来出路/servletdemo/demo请求,如果没有匹配到会交给默认的虚拟主机Host处理。
  5. 匹配到的Context获得请求/demo。
  6. 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用Hello的doGet()或doPost()方法,执行业务逻辑,数据存储等。
  7. Context把执行完之后的结果通过HttpServletResponse对象返回给Host。
  8. Host把HttpServletResponse返回给Engine。
  9. Engine把HttpServletResponse返回给Connector。
  10. Connector把HttpServletResponse对象返回给客户Browser。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值