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负责处理[D:\javaEE\tomcat-7.0.52(x86)\conf\web.xml]

<servlet-mapping>
     <servlet-name>default</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

注:静态资源举例比如HTML、CSS等;
2、HttpServlet
(1)继承 GenericServlet 实现 Servlet, ServletConfig,java.io.Serializable

(2)重写service()方法:
在该方法中先将ServletRequest和ServletResponse强转为了HttpServletRequest和HttpServletResponse;
然后调用重载的service()方法,并将刚刚强转得到对象传递到重载的方法中;

猜你喜欢

转载自www.cnblogs.com/scw123/p/9822186.html