JavaWeb学习笔记 (四)servlet

1.servlet简介

运行在web服务器上java程序,能够接收和响应web客户端的请求。更多用于动态资源。不管静态还是动态都需要servlet,只不过tomcat已经定义了一个DefaultServlet,tomcat只是一个存放servlet的容器

2.编写servlet代码

需要实现servlet的接口,并重写其中的方法。
重写了在这里插入图片描述

3 . 进行servlet的配置

编写好servlet的代码好后,需要在web项目中进行配置,即在web.xml文件中进行配置。在这里插入图片描述

4.servlet的执行过程

访问web站点的url:localhost:8080/helloweb/servlet
(1) 首先根据8080端口确定为web服务器为tomcat
(2) 根据helloweb找到项目helloweb
(3) 查找web.xml文件中的servlet-mapping,看url-pattern是否存在servlet这个名字。
(4) 如果存在则在servlet-mapping继续查找servlet所对应的servlet-name,即上述代码中的HelloServlet。
(5) 然后查找web.xml文件中的servlet,找到与servlet-mapping中对应的servlet-name.
(6) 然后根据web.xml中的servlet-class的路径找到编写的servlet代码,并创建实例。
(7) 继而执行该实例中的service方法。

4.servlet继承体系

                              Servlet(接口)
                                 |
                           GenericServlet(实现servlet接口)
                                 |
                             HttpServlet  (继承GenericServlet,用于处理http请求)

这样的优点是不用重写servlet中的所有方法,由于httpservlet中的service方法对请求方式做了判断,如果是post请求就执行post方法,如果是get请求就执行get方法,故继承HttpServlet后只需要重写get和post方法,而不需要重写service方法。

5.servlet的生命周期

生命周期:从创建到销毁的一段时间
生命周期方法:从创建到销毁,所调用的方法。

            init()  首次创建实例时,执行该方法。一个servlet只能被初始化一次。默认情况下,初次访问servlet时,才会创建实例。
            service() 只要客户端请求,就会执行该方法。一次请求,对应一次service方法的调用。
            destroy()  servlet销毁的时候,调用该方法。(1)项目从tomcat移除;(2)tomcat服务器正常关闭,即使用shutdown.sh关闭。eclipse里的关闭tomcat为非正常方法。

当init()方法中需要初始化的事件较多时,我们可以在web.xml文件中servlet配置,让其在发布至服务器的过程中就可以初始化。 在这里插入图片描述
其中数字代表加载的顺序,越小加载的时间越早。

6. ServletConfig 和ServletContext

在服务器启动的时候,会为每一个托管的项目创建这两个对象。当移除项目或者关闭服务器时,这两个对象销毁。

(1)ServletConfig: 用来读取在web.xml文件中servlet的一些初始化数据,在web.xml的servlet中,可以使用一个或者多个init-param为该servletc初始化一些参数。在该servlet被实例化的时候,会自动将这些参数封装到servletConfig对象中,且该servletconfig只对该servlet有效。

web.xml配置在这里插入图片描述

获取servletconfig以及web.xml的初始化参数在这里插入图片描述
结果在这里插入图片描述

(2) ServletContext:
(作用一)来读取web.xml中的一些初始化参数。
(作用二)获取web应用中的资源
(作用三)在多个servlet之间共享数据
每个web工程只有一个servletcontext对象,因此,不管在这个工程下面的哪个servlet中获取servletcontext,得到的都是同一个servletconfig。利用这个特性可以获取全局参数。

(作用一:获取web.xml文件的全局配置参数)

  • 通过servletcontext.getrealPath()拿到真实路径,然后创建流对象,读取数据。

web.xml配置
注意在web.xml配置的位置,位于根元素下

代码如下在这里插入图片描述
结果如下在这里插入图片描述

(作用二) 获取web应用中的资源
注意:在web项目中,没办法通过和java项目一样用properties来读取配置文件中的值。因为web项目在发布至tomcat服务器上时,其路径已经发生变化了。

  • 通过servletcontext.getrealpath()拿到资源的真是路径,然后通过文件输入流读取数据

在这里插入图片描述

在这里插入图片描述可以看出发布在tomcat上的web项目只有两个文件夹。

想要读取配置文件中的数据,需要利用servletcontext。

  • 配置文件的存放路径
    在这里插入图片描述

需要放在webcontent下面,因为发布到tomcat服务器上后,服务器上只有这个路径。

  • 代码

  • 在这里插入图片描述

  • 通过servletcontext.getresourseasstream()直接的得到流对象,然后读取数据

在这里插入图片描述
(作用三) 用来在多个servlet之间来共享数据
== 比如用来统计网站的登陆次数,登陆页面和统计页面分别对应一个servlet。通过servletcontext来共享网站登陆成功次数。登陆页面对应的servlet用来记录登陆成功次数,统计页面对应的servlet用来取出数据,并显示在页面上。==

登陆页面代码
在这里插入图片描述

统计成功页面servlet代码
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Time__Lc/article/details/85046190
今日推荐