WEB13:Servlet学习01

作为Servlet的入门。先贴第一个Servlet代码

你写的类必须实现Servlet接口或者你写的类的父类及其以上必须实现Servlet接口

/**
 * 
 */
package com.yl.servlet;

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.http.HttpServletResponse;

/**
 * @author YL
 * @date 2019年3月2日
 * @version  
 * @message 
 */
public class MyServlet implements Servlet {
   //    每次访问都会调用
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		// TODO Auto-generated method stub
		HttpServletResponse hrs = (HttpServletResponse)arg1;
		hrs.getWriter().write("this is my frist Servlet!");
	}
//       Servlet创建时调用
        public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub

	}
//服务器关闭时调用
	public void destroy() {
		// TODO Auto-generated method stub

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

Servlet生命周期

何时创建?

默认第一次调用Servlet时调用,通过在配置文件中的<servlet>下添加<load-on-startup>可以更改到服务器启动就创建,另外,<load-on-startup>里的参数是创建的优先级,一般不要写成1。

何时销毁?

服务器关闭时,销毁

init方法

参数:   ServletConfig:内部封装着servlet配置文件的信息

service方法

参数:ServletRequest:请求,内部封装着Http请求信息。

参数:   ServletResponse:响应,要封装的响应信息。

Servlet执行过程

Servlet配置

<url-pattern>下的各种匹配

 <servlet-mapping>
  	<servlet-name>MyServlet</servlet-name>
  	<!-- 完全匹配 -->
  	<url-pattern>/aaa</url-pattern>
  	<!-- 目录匹配 -->
  	<url-pattern>/bbb/aaa/*</url-pattern>
  	<!-- 扩展名匹配 -->
  	<url-pattern>*.html</url-pattern>
  	<!-- 缺省Servlet或者默认Servlet -->
  	<url-pattern>/</url-pattern>
  </servlet-mapping>

1.完全匹配:,最后是aaa.主要使用的匹配方法

2.目录匹配:,只要开始是bbb/aaa后边随便写可以。

3.扩展名匹配:,只要后缀是.html

缺省的Servlet或者默认的Servlet(扩展)

<url-pattern>/</url-pattern> 

其实,不只是我们自己写的web.xml(Servlet配置文件)中有<url-pattern>/</url-pattern> ,在Tomcat的全局web.xml里也有

打开,搜索<url-pattern>/</url-pattern>

然后搜索上边的类名可以找到一个类

总之,Servlet的运行,首先是找到这个全局文件的web.xml里的缺省servlet,然后找到类,通过DefaultServlet类才去找其他的例如html文件等静态文件,如果没找到,就执行默认的DefaultServer类中的service()方法,而只要输入的是正确的我们都可以找到html这类的静态资源。

而如果我们在自己的web.xml里使用了缺省的Servlet会怎么样呢?我们使用那个缺省的Servlet呢?全局还是局部?

当然就近原则,自己的了。而我们的servlet-class有没有去找这些静态资源的动作呢?没有。

于是我想访问http://localhost:8080/WEB05/form.html这个地址,但是我配置的Servlet类没有查找静态资源的动作,所以就默认没有该静态资源,而执行了Servlet类的service方法

从下图的项目结构可以看出,我是有form这个静态资源的

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值