Web--(5)Servlet

什么是Servlet

  1. Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口)
    1.servlet接收响应请求
    2.filter过滤器
    3.listener监听器
  2. 用来处理客户端请求、响应给浏览器的动态资源
  3. servlet的实质就是java代码,通过java的API动态的向客户端输出内容
  4. 以后写的程序就不在是在本地执行了。而是编译成字节码,放到服务器上来去执行。
  5. 编写程序时, 不需要有main函数了。因为写完后,就把编写的程序编译成字节码,放到服务器上面。当前发送就一个请求的时候,服务器就会按照一定规则调用编写的代码

Servlet 快速入门

  1. 创建一个web工程
  2. JavaResourcesrc下创建一个名称为com.iris.servlet
  3. 在创建的servlet包当中创建一个class文件起名为FirstServlet.class
  4. 进入该class实现一个Servlet接口,实现它未实现的方法
    重点看service方法
    在该方法当中写入一句话进行输出

FirstServlet.class

package com.iris.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;

public class FirstServlet implements Servlet {
	//servlet 什么时候会被创建?
	//默认:第一次访问的时候会被创建
	//通过配置可以设置服务器一启动的时候创建对象
	//创建的对象会被缓存
	
	//每一次请求的时候,都会调用的一个方法,会把请求和响应都会传给您
	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("Hello Servlet");
		HttpServletResponse res = (HttpServletResponse)arg1;
		res.getWriter().write("this is http servlet Response");
	}
	//当servlet销毁的时候调用,即服务器关闭
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("服务器关闭");
	}

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

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}
	//init 当servlet创建的时候调用
	@Override
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("Initing..");
		//arg0参数,如果关联源码自动变成config,
		//表示可以获取一些配置信息 
		//可以获取Servlet名称 web.xml 
		String name = config.getServletName();
		System.out.println("ServletName = " + name);

		//获取web.xml初始化参数
		String value = config.getInitParameter("my_init_name");
		System.out.println("getInitParameter "+value);

		//3.获取 ServletContext
		ServletContext sc = config.getServletContext();
	}
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>MytestProject</display-name>
  <servlet>
	<servlet-name>abc</servlet-name>   <!-- 自己起一个名称 -->
	<servlet-class>com.iris.servlet.FirstServlet</servlet-class>
  </servlet>

  <servlet-mapping>
	<servlet-name>abc</servlet-name>  <!-- 必须和上面起的名一致 -->
	<url-pattern>/first</url-pattern> <!-- path后面跟的名称 servlet/first -->
	<load-on-startup>3</load-on-startup>  <!-- 存在多个servlet时的优先级 -->
	<init-param>					<!-- 初始化参数 -->
		<param-name>my_init_name</param-name>
		<param-value>1234</param-value>
	</init-param>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

</web-app>

Path 路径的重新配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重新启动Tomcat服务器
在这里插入图片描述
访问自己写的JAVA程序
在这里插入图片描述
在这里插入图片描述

生命周期

  1. Servlet什么时候被创建
    1. 默认情况下第一次访问的时候创建
    2. 可以通过配置文件设置服务器启动的时候就创建
      <load-on-startup>对象在服务器启动时就创建
      值为数字代表优先级
      数据越小,优先级越高,不能为负数
  2. init
    servlet对象创建的时候调用
    默认第一次访问时创建
  3. service
    每次请求都会执行一次
  4. destroy
    servlet对象销毁的时候执行
    默认服务器关闭时销毁

servlet配置信息

<url-patten>三种写法

  1. 完全匹配
<url-pattern>/first</url-pattern>
  1. 目录匹配
<url-pattern>/my/test/*</url-pattern>

在这里插入图片描述
在这里插入图片描述
3. 扩展名匹配

<url-pattern>*.myxq</url-pattern>

在这里插入图片描述
4. 缺省匹配
都没有匹配成功任何一个 url-pattern,就会执行缺省对应的 Servlet

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

静态资源加载过程

  1. 在path后面写的静态资源名称index.html或者是其它的.html它都是会找ur-patten当中有没有匹配的内容
  2. 如果有,就加载对应的servlet,如果没有就到自己配置当中找缺省的url-patten
  3. 如果自己配置文件当中没有缺省的,就会找全局配置缺省的url-patten
  4. 在全局配置当中有一个缺省的url-patten 对应的是default的Servlet
  5. defaultServlet内部会到当前访问的工程根目录当中去找对应的名称的静态资源,如果有,就把里面的内容逐行读出。响应给浏览器。
  6. 如果没有,就会报404错误
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值