servlet温习

servlet是Javaweb的核心,它实质上就是运行在服务器端的Java代码

1.简介

servlet是运行在服务器端的小程序,是sun公司提供的一套规范(接口),用来处理用户的请求,响应给浏览器的动态资源。servlet的本质是Java代码,通过Java的API动态的向客户端输出内容

servlet规范包含三个技术点:servlet,filter,listener

2.servlet快速入门

  Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet、HttpServlet。我们在实际开发中通常不去实现servlet的接口,因为那样需要实现的方法太多。因此我们只需要继承HttpServlet,覆写doGet(),doPost()方法即可

3.掌握servlet的xml配置

servlet的基本配置

  <!-- servlet类的配置 -->
  <servlet>
    <description></description>
    <display-name>FirstServlet</display-name>
    <servlet-name>FirstServlet</servlet-name>
    <servlet-class>servlet温习.FirstServlet</servlet-class>
  </servlet>
  <!-- servlet虚拟路径的配置 -->
  <servlet-mapping>
    <servlet-name>FirstServlet</servlet-name>
    <url-pattern>/firstServlet</url-pattern>
  </servlet-mapping>

<url-pattern>的配置

用的最多的就是如上图所示的完全匹配。

目录匹配 /虚拟的目录/*  

扩展名匹配 *.abc(扩展名)

缺省servlet的配置:将url-pattern配置一个/

当你访问资源地址与所有的servlet都不匹配时,缺省的servlet就会处理

其实,web应用中所有的资源的响应都是servlet负责,包括静态资源

配置实例化servlet的时间

servlet默认的是第一次访问的时候执行init()方法,可以配置一个<load-on-startup>使服务器启动后就实例化

  <!-- servlet类的配置 -->
  <servlet>
    <display-name>FirstServlet</display-name>
    <servlet-name>FirstServlet</servlet-name>
    <servlet-class>servlet温习.FirstServlet</servlet-class>
    
    <!-- 运行起来3秒后,执行相应的init方法 -->
    <load-on-startup>3</load-on-startup>
    
  </servlet>

 欢迎页面的配置

  <welcome-file-list>
  <welcome-file>1.html</welcome-file>
    <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>

4.掌握servlet的生命周期(API),理解servlet的执行过程

https://www.cnblogs.com/lgk8023/p/6427977.html

总的来说就是用servlet接口中的那三个api来表示init() service(),destroy(),分为四个阶段:加载和实例化,初始化,请求处理,服务终止

问题:对XXXServlet进行了10次访问,init(),destory(),service(),doGet(),doPost() 一共执行力多少次?request对象创建几个?response创建几个?

Servlet接口中的方法

init(ServletConfig config)

service(ServletRequest request,ServletResponse response

destroy()

HttpServlet类的方法

1)init()

2)doGet(HttpServletRequest request,HttpServletResponse response)

3)doPost(HttpServletRequest request,HttpServletResponse response)

4)destroy()

Servlet获取请求的过程

在解析请求的资源地址时干的事

 5.掌握ServletContext对象

ServletContext对象是一个全局域对象,代表着web应用环境的上下文,其代表着web应用。servlet对象可以有很多个但是servletContext对象只能有一个因为其对应的web项目只有一个

ServletContext的生命周期:

创建:在web应用创建后,它就创建了

销毁:在web应用销毁后,它也就销毁了

重点掌握几个api的应用:

获取servletContext对象

1)ServletContext servletContext = config.getServletContext();

2)ServletContext servletContext = this.getServletContext();

servletContext对象的作用

web.xml中配置初始化参数

通过context对象获得参数

获取资源的绝对路径

方法:

String path = context.getRealPath(相对于该web应用的相对地址);

ServletContext是一个域对象

ServletContext域对象的作用范围:整个web应用(所有的web资源都可以随意向 servletcontext域中存取数据,数据可以共享)

域对象的通用的方法:

setAtrribute(String name,Object obj);

getAttribute(String name);

removeAttribute(String name);

package servlet温习.demo2;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServerContext1 extends HttpServlet {
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取ServerContext对象
        ServletContext context = this.getServletContext();
        //1.获取初始化的参数
        String parameter = context.getInitParameter("driver");
        System.out.println(parameter);
        //2.获取a.txt
        String path1 = context.getRealPath("WEB-INF/a.txt");
        System.out.println(path1);
        //3.获取c.txt
        String path2 = context.getRealPath("WEB-INF/classes/c.txt");
        System.out.println(path2);
        //4.获取d.txt
        String path3 = context.getRealPath("d.txt");
        System.out.println(path3);
        
        //设置值
        context.setAttribute("name", "zhangsan");
    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

 

posted @ 2019-02-24 16:37  曾聪聪  阅读(199)  评论(0编辑  收藏  举报