Servlet学习笔记

xiaoxiao2021-07-04  321

Servlet

Servlet概念Tomcat服务器访问Servlet步骤Servlet容器与Servlet区别Servlet生命周期过滤器事件监听器

Servlet概念

Servlet是Java语言编写的程序,一个Java类。运行在WEB服务器。用于处理用户的请求对用户请求作出对应的响应,然后将处理的结果封装到HTML代码中返回给客户端

Tomcat服务器访问Servlet步骤

客户端发出请求查找该链接对应的servlet-name到servlet标签中查找servlet-name,与2中servlet-name匹配的项查找对应的serlvet-class利用反射机制访问对应的servlet类

Servlet容器与Servlet区别

Tomcat是一个WEB容器,因为Tomcat是J2EE标准的产品,因此需要Tomcat支持Servlet。因此可以认为tomcat是一个Servlet容器。 区别:

Servlet是一个Java类,初始化时调用init方法,销毁时调用destroy方法,实例化和销毁是由Servlet容器完成。Servlet在Servlet容器中运行,Servlet容器负责调度Servlet的生命周期

Servlet生命周期

init方法 在服务器启动时,不会调用该方法。 当访问Servlet时,将调用该Servlet中的init方法。 但是注意,该方法在服务器运行期间仅仅运行一次。 一般用于初始化工作。destroy方法 用于销毁处理,在服务器关闭时将调用,因此一般用于清理工作。 仅仅运行一次。doGet和doPost方法 当客户端发出的数据已get方式进行提交,那么将会执行doGet方法。 当客户端发出的数据已post方式进行提交,那么将会执行doPost方法。生命周期 Servlet生命周期由Servlet容器控制,分为初始化阶段、运行阶段、销毁阶段。 ① 初始化阶段,Servlet容器开始加载Servlet类,把其Class文件中的数据读取到内存中,然后Servlet容器会读取ServletConfig对象,然后Servlet容器创建Servlet。 ② 运行阶段 Servlet接收到一个请求,Servlet容器会针对这个请求创建ServletRequest和ServletResponse对象,然后调用service方法,此时service将会判断发出的请求方式,从而决定调用哪个方法(doGet或者doPost方法)。 ③ 销毁阶段 Web应用终止时,Servlet容器会调用Servlet的destroy方法,然后销毁Servlet对象。同时会销毁ServletConfig。因此可以在销毁时关闭数据库连接以及Servlet占用的资源。在整个Web生命周期中只运行一次。

过滤器

Servlet过滤器是Java中非常有用的一种技术,其有用之处在于减少代码量。过滤器是用户请求和处理程序之间的一层处理程序。可以对用户请求和响应的结果进行处理,利用该特征可以实现字符编码处理、权限控制、访问控制等。

写过滤器 implements Filter public class CharacterFilter implements Filter{ public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { } public void init(FilterConfig config) throws ServletException { } }

Init方法会在服务器启动的时候调用。 Destroy方法会在服务器关闭的时候调用 doFilter会在访问对应的页面的页面时调用。和url-pattern相关

配置配置文件 web.xml <filter> <filter-name>CharacterFilter</filter-name> <filter-class>com.xxx.CharacterFilter</filter-class> </filter> <filter-mapping> <filter-name>CharacterFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

事件监听器

事件监听器用于监听一些重要事情的发生,监听器对象可以在事件发生前和事件发生后做出相应的处理。

Servlet上下文监听,表现为Servlet容器创建和销毁触发事件。

public class MyServletContextListener implements ServletContextListener { public void contextDestroyed(ServletContextEvent arg0) { System.out.println("--------destroy-------------"); } public void contextInitialized(ServletContextEvent arg0) { System.out.println("--------init-------------"); } }
转载请注明原文地址: https://www.6miu.com/read-4821288.html

最新回复(0)