zoukankan      html  css  js  c++  java
  • Servlet

    一、Servlet简介

    什么是Servlet

    Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口):

    1. servlet接收响应请求
    2. filter过滤器
    3. listener监听器

    用来处理客户端请求、响应给浏览器的动态资源。

    servlet的实质就是java代码,通过java的API动态的向客户端输出内容。以后写的程序就不在是在本地执行了。而是编译成字节码,放到服务器上来去执行。

    编写程序时, 不需要有main函数了。因为写完后,就把编写的程序编译成字节码,放到服务器上面。当前发送就一个请求的时候,服务器就会按照一定规则调用编写的代码。

    Servlet快速入门

    1. 创建一个web工程
    2. 在src下创建一个包名称为com.myxq.servlet
    3. 在创建的servlet包当中创建一个class文件起名为FirstServlet
    4. 进入该class实现一个Servlet接口,实现它未实现的方法
      1. 重点看service方法
      2. 在该方法当中写入一句话进行输出
    5. 在web.xml当中进行配置
    // Servlet 是sun公司提供一套规范(接口),要想用就必须遵循这套规范(实现接口)
    public class FirstServlet implements Servlet {
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("Hello Servlet");
        }
    
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
    
        }
    
        @Override
        public ServletConfig getServletConfig() {
            return null;
        }
    
        @Override
        public String getServletInfo() {
            return null;
        }
    
        @Override
        public void destroy() {
    
        }
    }
    

    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_3_0.xsd"
             id="WebApp_ID" version="3.0">
        <absolute-ordering/>
        <display-name>servlet</display-name>
    
        <!--配置Servlet-->
        <servlet>
            <servlet-name>myServlet</servlet-name><!--自己起的一个名字-->
            <servlet-class>com.study.servlet.FirstServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>myServlet</servlet-name><!--必须和上面自己起的名字相同-->
            <url-pattern>/firstServlet</url-pattern>
        </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-list>
    </web-app>
    

    生命周期

    Servlet什么时候被创建

    1. 默认情况下第一次访问的时候创建
    2. 可以通过配置文件设置服务器启动的时候就创建

    init

    • servlet对象创建的时候调用
    • 默认第一次访问时创建

    service

    • 每次请求都会执行一次

    destroy

    • servlet对象销毁的时候执行
    • 默认服务器关闭时销毁

    load-on-startup

    • <load-on-startup>标签(在项目web.xml中里添加标签)
    • 对象在服务器启动时就创建
    • 值为数字代表优先级,数据越小,优先级越高,不能为负数。
    // Servlet 是sun公司提供一套规范(接口),要想用就必须遵循这套规范(实现接口)
    public class FirstServlet implements Servlet {
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("Hello Servlet");
            System.out.println("每次请求都会执行一次");
        }
    
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
            System.out.println("servlet对象创建的时候调用,默认第一次访问时创建");
        }
    
        @Override
        public void destroy() {
            System.out.println("servlet对象销毁的时候执行,默认服务器关闭时销毁");
        }
    
        @Override
        public ServletConfig getServletConfig() {
            return null;
        }
    
        @Override
        public String getServletInfo() {
            return null;
        }
    }
    

    二、Servlet配置信息

    标签 init-params

    初始化参数,在项目web.xml中里添加该标签

    <init-name>名称</init-name>
    <init-value>值</init-value>
    

    通过config参数,可以

    • 获得该servlert的配置信息
    • 获得web.xml当中参数
    • 初始化参数
    • 获取servletContext对象

    标签 url-patten

    完全匹配

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

    目录匹配

    <url-pattern>/my/xq/*</url-pattern>
    

    扩展名匹配

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

    缺省Servlet

    访问的资源不存在时,就会找缺省的地址

    <url-patten>/</url-patten>
    

    全局Web.xml

    • 对于部署在服务器上的所有应用都有效
    • 先到自己工程当中找web.xml配置
    • 再到全局web.xml当中去找配置
    • 如果两个当中有相同的配置,自己当中配置的内容会生效

    静态资源加载过程

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

    欢迎页面

    Welcome-file-list 标签

    • 不写任何资源名称的时候,会访问欢迎页面
    • 默认从上往下找
    <welcome-file-list>
    	<welcome-file>index.html</welcome-file>
    	<welcome-file>index.htm</welcome-file>
    	<welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    
  • 相关阅读:
    java复习计划
    超过16位的字符串装16进制
    《将博客搬至CSDN》
    android设置中文字体样式
    布局文件View和ViewGroup
    创建线程的两种方法,继承Thread,继承Runnable
    本地文件的copy复制
    字节流和字符流完成URL下载,并存入本地
    文本过滤器的用法,FileFilter()和FilenameFilter()
    JavaSE笔记
  • 原文地址:https://www.cnblogs.com/xzh0717/p/10633063.html
Copyright © 2011-2022 走看看