zoukankan      html  css  js  c++  java
  • 简述servlet

    什么是Servlet?

    Servlet是一种动态的web开发技术,本质就是一个运行在服务端的Java小程序,负责处理业务逻辑,生成动态web内容。

    编写一个servlet步骤:
     1.编写一个类
      继承HttpServlet
      重写doGet或者doPost方法

    (截图里实现了Servlet接口,其实可以不用实现的)


     2.编写配置文件(web-inf/web.xml)
      注册servlet
      绑定路径


     3.访问
      http://主机:端口号/项目名/路径

     例:http://localhost:8080/Servlet/ss    (Servlet包下的ss)

    接受参数:  格式:key=value
     String value=request.getParameter("key")
     例如: http://localhost/day09/hello?username=tom
     request.getParameter("username")就可以获取tom值
    回写内容:
     response
     response.getWriter().print("success");
     处理响应数据中文乱码:
     resp.setContentType("text/html;charset=utf-8"); //建议大家放在方法中的第一行

    Servlet的体系结构

      Servlet(接口)

        ↓

      GenericServlet(抽象类)

        ↓

      HttpServlet(抽象类)

        ↓

      自定义Servlet

    servlet常用方法: 

        void init(ServletConfig config):初始化
          void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑
               void destroy():销毁
      
               ServletConfig getServletConfig() :获取当前servlet的配置对象


      GenericServlet常用方法: 
      除了service方法没有实现,其他都实现了
      空参的init();方法,是专门留给开发者重写的方法。在init(ServletConfig config)中会调用init();但是,开发者千万不要重写带有参数的这个init方法。
     
     HttpServlet常用方法:
      对service方法进行了实现,把Service的参数做了强转,并调用了重载的Service();方法,重载的service方法根据请求方式的不同调用相应doXxx()方法(doGet和doPost方法)
      

    Servlet的生命周期

    Servlet是单实例,多线程的。默认第一次访问的时候,服务器创建Servlet,并调用init方法实现初始化操作(init只会执行一次,所以是单实例),并调用一次service方法。

    每当请求来的时候,服务器创建一个线程,调用service方法执行自己的业务逻辑。

    当servlet被移除的时候,或者服务器正常关闭的时候,服务器调用servlet的destory方法进行销毁操作。

    正常关闭:

    右键:

    非正常关闭:

    url-pattern的配置:
     方式1:完全匹配  必须以"/"开始 例如: /hello /a/b/c
     方式2:目录匹配  必须"/"开始  以"*"结束   例如: /a/*  /*
     方式3:后缀名匹配 以"*"开始 以字符结尾 例如: *.jsp  *.do  *.action
     
     优先级:
      完全匹配>目录匹配>后缀名匹配

    总而言之:就是优先加载url-pattern比较详细的路径。

    在Servlet标签中有一个子标签,Load-on-start-up,作用:用来修改servlet的初始化时机,取值:正整数  值越大优先级越低。

    当我们的配置文件里面没有指定配置的话,会查找tomcat的web.xml,
     若请求我们自己的项目处理不了,tomcat的默认的servlet会帮我们处理信息(defaultServlet),处理404之类的。

    ServletContext上下文(全局管理者)

    是一个项目的引用,代表了当前项目。

    当项目启动的时候,服务器为每一个web项目创建一个ServletContext对象。

    当项目被移除或者服务器关闭的时候,销毁ServletContext对象。

     ServletContext的作用:
      1.获取全局的初始化参数
      2.共享资源(xxxAttribute)
      3.获取文件资源
      4.其他操作
    获取servletcontext:
      方式1: getServletConfig().getServletContext()
      方式2: getServletContext();

    常用方法:
       1.  String  getInitParameter(String key):通过名称获取指定的参数值
         Enumeration getInitParameterNames() :获取所有的参数名称 
        在根标签下有一个 context-param子标签 用来存放初始化参数

    <context-param>
         <param-name>encoding</param-name>
         <param-value>utf-8</param-value>
        </context-param>


    2.  setAttribute(String key,Object value);//设置值
         Object getAttribute(String key);//获取值
         removeAttribute(String key)://移除值

    3.
       String getRealPath(String path):获取文件部署到tomcat上的真实路径(带tomcat路径)

      运行结果:  
         InputStream getResourceAsStream(String path):以流的形式返回一个文件

    4.
      获取文件的mime类型  大类型/小类型   String getMimeType(String 文件名称)

    ServletContext是java四大域对象之一。

    java四大域对象总结 后面会介绍。

    获取文件的路径: 在没有ServletContext的情况下,通过类加载器也能获取文件的路径:

    注意:这里的文件必须放在src目录下,不然获取不到。

    运行结果:


       


       
     

  • 相关阅读:
    using 关键字有两个主要用途:
    Pl/SQL 从零开始
    SQL从零开始
    wcf 从零开始
    设置主键
    dbf导入sqlserver
    SHBrowseForFolder
    oracle 导入导出数据库
    sql改列名
    Delphi 为Edit或是Memo添加一个气球提示
  • 原文地址:https://www.cnblogs.com/tonbby/p/9067172.html
Copyright © 2011-2022 走看看