初识 Servlet

什么是Servlet?

Servlet 运行在服务端的java小程序(把你写的java程序打包成字节码,发送给tomcat,让tomcat去执行),是sun公司提供的一套规范(接口)。Servlet规范里面有3个技术:
1、servlet接收响应请求
2、filter过滤器
3、listener监听器

我们知道资源分为静态资源、动态资源。动态资源——不同的用户访问得到的东西是不一样的,那如何保证其逻辑性???那就是通过java代码(这个java代码要继承servlet,才能被tomcat所识别),依赖于服务器(tomcat)才能运行。

*servlet接口中的方法:

在这里插入图片描述

*java动态项目的目录结构:
– 项目的根目录
– WEB-INF目录:
– web.xml:web项目的核心配置文件
– classes目录:放置字节码文件的目录
– lib目录:放置依赖的jar包

第一个Servlet程序
在这里插入图片描述
Text.java:

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class Text implements Servlet
{

    @Override
    public void destroy()
    {
        // TODO 自动生成的方法存根

    }

    @Override
    public ServletConfig getServletConfig()
    {
        // TODO 自动生成的方法存根
        return null;
    }

    @Override
    public String getServletInfo()
    {
        // TODO 自动生成的方法存根
        return null;
    }

    @Override
    public void init(ServletConfig arg0) throws ServletException
    {
        // TODO 自动生成的方法存根

    }

    @Override
    public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException
    {
        System.out.println("hello, yww");

    }

}

把Text的限定名复制到Servlet-class标签里。
在web.xml中配置

在这里插入图片描述

在这里插入图片描述
运行截图
在这里插入图片描述
在这里插入图片描述

Servlet执行原理:
1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
2. 查找web.xml文件,是否有对应的<url-pattern>标签体内容。
3. 如果有,则在找到对应的<servlet-class>全类名(看到全类名,就要想到反射机制)
4. tomcat会将字节码文件加载进内存,并且创建其对象
5. 调用其方法
Servlet中的生命周期方法:
1. 被创建:执行init方法,只执行一次
		* Servlet什么时候被创建?
			* 默认情况下,第一次被访问时,Servlet被创建
				* 可以配置执行Servlet的创建时机(在<servlet>标签下配置)
					1. 第一次被访问时,创建
	               		* <load-on-startup>的值为负数
			        2. 在服务器启动时,创建
			            * <load-on-startup>的值为0或正整数

			* Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是 单例的
				* 多个用户同时访问时,可能存在线程安全问题。
				* 解决:尽量不要在Servlet中定义成员变量(避免定义全局变量,在方法内部定义变量就ok)。即使定义了成员变量,也不要修改其值

2. 提供服务:执行service方法,执行多次
		* 每次访问Servlet时,Service方法都会被调用一次。
3. 被销毁:执行destroy方法,只执行一次
		* Servlet被销毁时执行。服务器关闭时,Servlet被销毁
		* 只有服务器正常关闭时,才会执行destroy方法。
		* destroy方法在Servlet被销毁之前执行,一般用于释放资源
编辑 虚拟目录

http://localhost:8080/myservlet/Text
双击Tomcat服务器,然后点 模块,然后选中某个项目,点击右边的编辑,就能编辑虚拟目录了
在这里插入图片描述

servlet3.0

支持注解配置。可以不需要web.xml了。

步骤:
	1. 创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
	2. 定义一个类,实现Servlet接口
	3. 复写方法
	4. 在类上使用@WebServlet注解,进行配置
   		@WebServlet("资源路径") 或 @WebServlet(urlPatterns = "资源路径") 
   		urlPatterns可省略
import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;

@WebServlet("/First_servlet")
public class First_servlet implements Servlet{

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		System.out.print("yww3.0 is coming~");
		
	}

}

在这里插入图片描述

Servlet的体系结构

在这里插入图片描述

  • GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象。将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可
  • HttpServlet:对http协议的一种封装,简化操作,只需要复写doGet/doPost方法
    在这里插入图片描述
@WebServlet访问路径
1. 一个Servlet可以定义多个访问路径 : @WebServlet({"/aa","/aaa","/aaaa"})
2. 路径定义规则:
	(1) /xxx:路径匹配
	(2) /xxx/xxx: 多层路径,目录结构
	(3) *.do:扩展名匹配
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值