Servlet原理及其运用

本文详细介绍了Servlet的原理,包括其体系结构,从Servlet到抽象类的继承关系。接着阐述了Servlet的生命周期,包括init、service和destroy方法的调用过程。此外,还讲解了Servlet的配置方式,如在web.xml中的传统配置,使用@WebServlet注解的便捷配置,以及Servlet路径的多种配置规则。通过这些内容,读者能够全面了解Servlet的使用和管理。
摘要由CSDN通过智能技术生成

Servlet的原理及其使用

1 servlet的体系结构
image-20191118164903211

Servlet—>generservlet-- >httpservlet 接口 -> 抽象类 -> 抽象类

现在所学习的都是httpservlet;Httpservlet:对http协议的一种封装,简化了操作,不用我们自己判断前台传输的方式(post/get),它自己判断。然后自动的调用对用的方法来执行。

2 servlet的生命周期

​ servlet的执行流程:init初始化->运行service服务处理客户端的请求->调用destroy方法进行销毁->GC垃圾回收进行回收。

初始化init()方法只会被调用一次,在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用了。

Service()方法是执行任务的主要方法。Servlet容器(web服务器)调用service方法来处理客户端请求,并且处理完请求,把结果返回给客户端。

每次服务器接收到servlet请求时,服务器会产生一个线程,并调用service()服务方法。而在service方法中,会自动的检查客户端的http请求类型(post/get),并且在恰当的时机调用方法。

destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。

在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。

3 servlet的使用

​ 创建servlet用来继承httpservlet,并且重写其中的方法。如4.2中的实例。并在对应的方法里面写上需要的代码即可。

4 Servlet配置
4.1 在web.xml中配置
	<servlet>
		<servlet-name>servlet name</servlet-name>
		<servlet-class>具体对应的servlet的名称,全类名</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>servlet name</servlet-name>
		<url-pattern>访问路径的url</url-pattern>
	</servlet-mapping>
4.2 使用@webServlet配置

在类前添加@WebServlet(“url路径”)即可

@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public TestServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			String username=request.getParameter("username");
			String password=request.getParameter("password");
			System.out.println("这是账号与密码:"+username+"  "+password);
			if (username.equals("123")&&password.equals("123")) {
				HttpSession session=request.getSession();
				User user=new User(username,password);
				session.setAttribute("user", user);
				request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
			}else {
				request.setAttribute("logerr", "账号密码错误");
				request.getRequestDispatcher("Login.html").forward(request, response);
			}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}
4.3 servlet路径的配置

一个servlet可以配置多个请求路径,路径的配置也是有规则的。

  1. /xxx 表示接受请求路径为/xxx的请求,对他进行处理
  2. /xxx/xxx 表示为2层路径,同理:接受请求路径为/xxx/xxx的请求,对他进行处理
  3. *.do 表示以接受以 do 结尾的,任何路径开头的请求。如login.do或者regester.do等等。星号★ 表示匹配所有的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值