chaoz的杂货铺

生命有息、学无止境、折腾不止

0%

java-web-Servlet

Servlet的入门

1.Servlet的接口和实现类:

Servlet它是一个接口,在javax.servlet 包下面。

五个方法:

  • destory():执行这个方法,销毁了servlet对象
  • init(ServletConfig config):在web服务器创建servlet对象以后,执行这个初始化方法。
  • service(ServletRequest req,ServletResponse res):服务方法,用来接收客户端发送的请求,并且响应数据到
  • getServletConfig():现在不讲
  • getServletInfo():servlet的信息,比如作者、版本和版权,这个方法在开发中不用。
    Genericservlet,它是一个类,实现了Servlet接口
    Httpservlet,它是一个类,实现了Servlet接口,同时继承了GenerciServlet

    创建servlet三种方式

  • 直接实现Servlet接口。
  • 继承HttpServlet类。
  • 一般在开发中,创建servlet,通常去继承这个HttpServlet.
    比如:class MyServlet extends HttpServlet{重写咱们所需要的方法}

Servlet的生命周期:

生命周期:自然界人从出生到最终走向西方极乐世界,这个周期过程就是生命周期,其实servlet的生命周期和人的一样,从servlet对象被创建,经过使用servlet对象,到最终servlet对象被销毁,整个过程就是servlet的生命周期。

与生命周期相关的三个方法:
  • init(ServletConfig config)初始化方法:首次访问这个Servlet,servlet对象会被创建,执行初始化方法。
  • service(ServletRequest req,ServletResponse res)服务方法:每次访问servlet时,服务方法都会被执行。
  • destroy()销毁方法:在服务器正常关闭时。会执行销毁方法,执行一次。
Servlet应用-HttpServlet
  • 在开发中,通常浏览器访问web服务器端的资源,是带有协议的访问,比如说http协议、https协议等,所以说在创建servlet时。需要使用带有协议的servlet,那么咱们程序员在创建servlet时,通常用继承HttpServlet的方式来实现。
    • 1.查看HttpServlet源码得到的结论:
      在HttpServlet里面重写service方法时,因为在service方法里面,最终调用doGet或者doPost方法,所以说在重写服务方法时,一般情况下不会重写service方法,而是直接重写doGet和doPost方法在客户端发送get请求,在服务器端就用doGet方法接收、在客户端发送Post请求,在服务器端就用doPost方法来接收
  • 在开发中,注意的细节:
    • 1.在使用对象时,使用带有协议的请求和响应对象HttpServletRequset和HttpServletResponse
    • 2.在开发时,继承HttpServlet是,直接重写doGet和doPost方法,而不是重写service方法了

servlet1

实现Servlet的虚拟路径映射
  • 1.Servlet的多重映射:一个Servlet,可以对应多个访问路径。比如:一个servlet对应的访问路径:/testo2或者/testo3

  • 2.Servlet的映射路径可以使用通配符servlet的映射路径有三种方式:、
    完全目录匹配:比如/hello
    目录匹配:比如/abc/或者/
    扩展名匹配:.do,.action 注意/*.do这种写法是错误的。
    优先级:完全目录匹配>目录匹配>扩展名匹配

  • 3.缺省Servlet什么是缺省Servlet:它的映射路径“/”,代表这是一个缺省的servlet.
    缺省的servelt作用:处理请求的资源找不到的问题(404代表请求的资源找不到)
ServletConfig接口

什么是servletConfig:它是servlet的配置对象,作用就是获取与servlet的初始化参数。
它的子类是GenericServlet和HttpServlet.
它被实列化通过web服务器实现的。
得到servletconfig对象:getServletConfig()

ServletConfig常用的方法:
  • 1.获取servlet的初始化参数的值:getInitParameter(String name)
  • 2.获取servlet初始化参数的名称:getInitParameterNames()
  • 3.得到servletContext对象:getServletContext()
  • 4.获取servlet的名称:getservletName()
ServletContext接口

ServletContext对象是在web服务器启动时就创建了,是web服务器创建的servletcontext对象,每一个web项目只有一个ServletContext对象。
ServletContext对象的作用:获取web应用程序的初始化参数,在web应用程序能共享数据,获取web项目下的资源文件。
得到ServletContext对象:

  • 1.通过ServletConfig对象:config.getservletContext()
  • 2.直接得到:getservletContext();
    获取web应用程序的初始化参数(web应用程序就是web项目)
  • 1.获取全局初始化参数的值:getInitParameter(String name):
  • 2.获取全局初始化参数的名称:getInitParameterNames()
  • 3.获取Web下面的资源文件
    • 通过Servletcontext对象能够获取Web项目下面文件的字节输入流,或者文件的绝对路径。
    • 路径问题:
    • 普通java项目:直接使用jdk编译java文件,所以说文件的路径是相对于工作空间。
      javaputong wenjai duqu lujing
    • web项目:运行在tomcat服务器上面的,所有说文件的路径是相对于tomcat服务器。
      服务器端是没有src这个目录,写路径不能写src,必须相对于tomcat服务器端的路经。
      1.获取文件的自己输入流:路径是相对于tomcat服务器的路径
      Inputstream in =getResourceAsStream(String path)
      image.png
      2.获取文件的绝对路径:路径是相对于服务器端的路径
      String realPath=getRealPath(path)
      image.png

image.png

image.png

喜欢这篇文章?打赏一下作者吧!

欢迎关注我的其它发布渠道