Servlet学习笔记(一)

1.什么是Servlet?

        Servlet是运行在web服务器上的一个java类。通过HTTP协议接收客户端的请求,同时向客户端一个响应。

2.Servlet的执行流程

        2.1首先我们要配置一个Servlet

        我在这里用的服务器的Tomcat服务器,配置文件是写在/WEB-INF/wen.xml中的。

<servlet>
    <description></description>
    <servlet-name>ServletDemo1</servlet-name><!--servlet的名字-->
    <servlet-class>com.servlet.ServletDemo1</servlet-class><!--servlet文件的全包路径-->
  </servlet>
  <servlet-mapping><!--配置servlet的映射路径-->
    <servlet-name>ServletDemo1</servlet-name><!--浏览器只需要根据name就可以找到对应的servlet文件位置-->
    <url-pattern>/ServletDemo1</url-pattern><!--浏览器的访问路径,路径必须以/开头-->
  </servlet-mapping>

        首先在浏览器中输入“http://Ip地址:端口号/项目名称/servlet路径名”,浏览器这个时候相当于提交一个请求,服务器就会根据servlet路径寻找到对应的servlet的名字,在根据名字访问到servlet的class文件。如图:


        这个时候就会执行service()方法。

3.Servlet的实现关系。

        我们知道Servlet是一个接口,它有两个实现类分别是HttpServlet和GenericServlet,其中GenericServlet与协议无关,而HttpServlet是专门处理HTTP请求的一个类,所以通常我们在编写一个Servlet时都是继承HttpServlet而不是实现Servlet,然后重写services方法。

        然而通过对service方法体的查看我们会发现service方法就是根据请求的方式(request.getMethod())调用不同的doXXX()(例如是post方式就调用doPost()方法,是get就调用doget()方法)方法,所以我们就不用重写service()方法了,而只需要重写doPost()和doGet()方法,同时,由于doPost()和doGet()方法都是执行同样的操作,所有只需要在doGet()方法中调用doPost()方法就可以简化编程。

public class ServletDemo1 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("ServletDemo1执行....");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

4.Servlet的生命周期

        Servlet的生命周期涉及到三个方法,分别是:

void init(ServletConfig config) //第一次访问servlet时,servlet在销毁之前会一直常驻在内存中,这个时候就会调用init()方法对servlet进行初始化,只会执行一次。
void service(ServletRequest req,ServletResponse res)//开启一个线程,只要服务器提交一次请求,就会执行一次service方法。
void destroy();//当tomcat正常关闭时执行,会调用destroy方法销毁servlet。

        当Servlet启动时间比较长的时候,那么第一个访问的用户就会需要等待init方法执行完成,这个时候我们就需要在服务器启动的时候就完成Servlet的初始化。我们可以通过对web.xml文件配置达到这一目的。

  <servlet>
    <servlet-name>ServletDemo2</servlet-name>
    <servlet-class>com.servlet.demo1.ServletDemo2</servlet-class>
    <load-on-startup>2</load-on-startup>//2表示服务器启动时servlet加载的优先级,数字越小优先级越高,因为Tomcat中默认启动的Servlet优先级是1,所以我们设置2
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletDemo2</servlet-name>
    <url-pattern>/ServletDemo2</url-pattern>
  </servlet-mapping>

 5.Servlet的访问路径(<url-pattern>的配置)

        全路径:以/开头;例如:/ServletLife、/abc/ServletLife

        目录匹配:以/开头,*结尾;例如:/*、/aaa/*(*代表任意字符)

        扩展名匹配:以*开头,.XXX结尾;例如*.do、*.abc

        精确度:全路径>目录>扩展名

        
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值