zoukankan      html  css  js  c++  java
  • 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);
        }
    
    }
  • 相关阅读:
    软件工程实践2019第一次作业
    SDN第三次作业
    SDN第二次作业
    SDN第一次作业
    软工第二次结对
    #软件工程第三次作业
    2019软件工程第一次作业
    php-长文章分页函数
    Sqlilab靶机配置
    目录遍历(复现及修复)
  • 原文地址:https://www.cnblogs.com/zengcongcong/p/10426674.html
Copyright © 2011-2022 走看看