模拟Servlet

web服务器接收到用户在客户端的请求后,通过web.xml中的请求路–Servlet类映射关系,找到指定的Servlet程序,并执行其中的service()方法,以完成具体的服务

对于javaweb开发者来说,需要编写一个个实现Servlet接口的Servlet程序,根据具体需求重写service()方法;并将Servlet类和请求路径绑定,编写web.xml文件

sun公司制定的Servlet接口中提service()等一系列方法,以便开发者根据实际需求重写

/*
    Servlet接口
    该接口的调用者: web服务器(如:tomcat)
    实现者: sun公司
*/
// 每一个Servlet程序多需要直接或间接继承Servlet类
public interface Servlet {
    // 这是提供服务的方法
    void service();
}

web服务器,以Tomcat为例。web服务器获取来自客户端的用户请求路径,并将其映射到指定的Servlet程序中,并执行指定的服务

/*
	服务器开发商,开发的web服务(web容器/web container)
	web服务器不知道有哪些Servlet,但唯一确定的是知道所有的Servlet都实现(implement)SUN公司的Servlet接口
*/
import java.util.Scanner;
import java.util.*;
import java.io.*;

public class Tomcat //Tomcat服务器是纯java语言实现的,没有使用其他编程语言
{
	public static void main(String[] args) throws Exception{
		
		System.out.println("正在启动Tomcat服务器,请稍后...");
		System.out.println("Tomcat服务器启动成功,开始接收浏览器的访问");
		Scanner s = new Scanner(System.in);
		System.out.print("请输入请求路径:");
		//获取用户的请求路径
		String requestPath = s.next();
		//Tomcat服务器负责解析web.xml文件
		//web.xml文件名、存放位置、配置信息都是Servlet规范,不能修改
		//web.xml文件的编写者:javaweb程序员
		FileReader reader = new FileReader("web.xml");
		Properties pro = new Properties();
		pro.load(reader);
		reader.close();

		// 通过key获取value
		String className = pro.getProperty(requestPath);

		// 通过反射机制创建对象
		Class c = Class.forName(className); // 通过类名获取类
		Servlet servlet = (Servlet)c.newInstance(); // 多态,父类型的引用指向子类对象

		// 面向接口调用即可
		// 编译器,检查servlet接口中是否存在service()方法,通过编译期
		// 运行期,创建子类对象,调用子类中的方法
		servlet.service();
	}
}

web.xml提供请求路径–servlet程序的映射关系

/login=LoginServlet
/logout=LogoutServlet
/delete=DeleteServlet

具体的实现某一需求的Servlet程序

/*
    服务器端的每一个 java程序,都提供一个独立的服务
    LoginServlet.java 系统登录
*/
public class LoginServlet implements Servlet
{
    public void service(){
        System.out.println("正在登录请稍后....");
    }
}


建议阅读:一图理解JavaWeb项目



参考自:动力节点Servlet

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值