zoukankan      html  css  js  c++  java
  • JavaWeb核心之Servlet

    JavaWeb核心之Servlet

    Servlet快速入门
    实现步骤:
    1创建类实现Servlet接口
    2覆盖尚未实现的方法---重点实现service方法
    3在web.xml进行servlet的配置

    web.xml例子

    Servlet接口中的方法
    init(ServletConfig config)何时执行:servlet对象创建的时候执行
    ServletConfig : 代表的是该servlet对象的配置信息

    public void init(ServletConfig arg0) throws ServletException {
    		// TODO Auto-generated method stub
    //		ServletConfig里面封装的是该servlet在web.xml的配置信息
    //		获取servlet对象
    		System.out.println(arg0.getServletName());
    //		获取ServletContext对象
    		System.out.println(arg0.getServletContext());
    		System.out.println("init正在执行");
    	}
    

      

    service(ServletRequest request,ServletResponse response)何时执行:每次请求都会执行
    ServletRequest :代表请求 认为ServletRequest 内部封装的是http请求的信息
    ServletResponse :代表响应 认为要封装的是响应的信息

    public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		
    		System.out.println("service正在执行");
    		arg1.getWriter().write("service方法正在执行");
    	}
    

      

    destroy()何时执行:servlet销毁的时候执行

    public void destroy() {
    		// TODO Auto-generated method stub
    		System.out.println("destroy正在执行");
    	}
    

      

     

    Servlet的生命周期

    1)Servlet何时创建
    默认(服务器启动时)第一次访问servlet时创建该对象
    2)Servlet何时销毁
    服务器关闭servlet就销毁了
    3)每次访问必然执行的方法
    service(ServletRequest req, ServletResponse res)方法

    Servlet的配置

    servlet(JavaWeb核心)、HttpServlet

    1、servlet(JavaWeb核心)
    (1)创建类实现Servlet接口implement Servlet import javax.servlet.Servlet;
    (2)覆盖尚未实现的方法
    (3)在web.xml进行servlet的配置
    举个例子:
    [<servlet-mapping></servlet-mapping>里面的]的ServletQuick和
    <servlet-name>ServletQuick</servlet-name>[ <servlet></servlet>里面的]的ServletQuick
    名字必须一致;

    复制代码
    <servlet>
    <servlet-name>ServletQuick</servlet-name>
    <servlet-class>com.oracle.web.ServletQuick</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>ServletQuick</servlet-name>
    <url-pattern>/ServletQuick</url-pattern>
    </servlet-mapping>
    复制代码

    (4)Servlet接口中的方法
    init(ServletConfig config)何时执行:servlet对象创建的时候执行
    ServletConfig : 代表的是该servlet对象的配置信息
    service(ServletRequest request,ServletResponse response)何时执行:每次请求都会执行
    ServletRequest :代表请求 认为ServletRequest 内部封装的是http请求的信息
    ServletResponse :代表响应 认为要封装的是响应的信息
    destroy()何时执行:servlet销毁的时候执行

    复制代码
    package com.oracle.web;
    
    import java.io.IOException;
    
    import javax.servlet.Servlet;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class ServletQuick implements  Servlet{
    
        @Override
        public void destroy() {
            // TODO Auto-generated method stub
            System.out.println("destroy方法正在执行");
        }
    
        @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
            //ServletConfig里面封装的是该Servlet在web.xml里面的配置信息
            System.out.println("init方法正在执行");
            ServletContext servletContext = arg0.getServletContext();
        }
    
        @Override
        public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
            // TODO Auto-generated method stub
            System.out.println("service方法正在执行");
            arg1.getWriter().write("service方法正在执行");
        }
                
    }
    复制代码

    当再次执行时:

    当直接点击红色方块时:

    当点击stop时:

    (5)Tomcat引擎
    解析请求的资源地址;
    举个例子:localhost:8080/WEB02/ServletQuick 
    先找到WEB02文件的web.xml 
    然后找到 <url-pattern>/ServletQuick</url-pattern>里面的ServletQuick
    进而找到<servlet-name>ServletQuick</servlet-name>[<servlet-mapping></servlet-mapping>里面的]的ServletQuick
    再找到<servlet-name>ServletQuick</servlet-name>[ <servlet></servlet>里面的]的ServletQuick
    最后找到<servlet-class>com.oracle.web.ServletQuick</servlet-class>的com.oracle.web.ServletQuick

     

    创建Servlet对象;
    创建代表请求的request对象和代表响应的response对象;
    response响应对象注意是否为空;
    每次访问service方法都会创建一对新的request和response对象;


    (6)基本配置:
    完全匹配:/aaa
    目录匹配:/aaa/bbb/ccc/*
    扩展名匹配:*.abcd
    (7)何时创建:默认第一次访问时创建
    当在servlet的配置时 加上一个配置 <load-on-startup>3</load-on-startup>[中间的“3”代表优先级] servlet对象在服务器启动时就创建

    (8)缺省Servlet:
    url-pattern配置一个/,/代表该servlet是缺省的servlet
    当你访问资源地址所有的servlet都不匹配时,缺省的servlet负责处理(在Tomcat服务器里)

    <servlet-mapping>
         <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
  • 相关阅读:
    java要注意的问题1
    广义表(线性表的推广)
    java基本类型和包装器类
    面试题10:斐波那契数列
    面试题9:用两个栈实现队列
    面试题8:二叉树的下一个结点
    10 分组数据
    9 汇总数据
    8 使用数据处理函数
    7 创建计算字段
  • 原文地址:https://www.cnblogs.com/cgj1994/p/9849802.html
Copyright © 2011-2022 走看看