Javaweb三大组件详解

目录

      • Servlet(程序)
        • 如何写 Servlet(五种方法)
        • 如何让浏览器访问Servlet
        • Servle 特性:
        • ServletConfig
        • Servlet 相关类之 ServletRequest 和 Servletresponse 对象
        • HttpServlet
      • Filter(过滤器)
      • Listener(监听器)
        • 事件源:三大域
        • 监听器实现类:
      • 小结

JavaWeb三大组件(Servlet、Filter、Listener)

Servlet(程序)

Servlet 是 JavaWeb 的三大组件之一,它属于动态资源。

Servlet 的作用处理请求,服务器会把接收到的请求交给 Servlet 来处理。

在 Servlet 中通常需要:

1.接收请求数据;

2.处理请求;

3.完成响应;

如何写 Servlet(五种方法)

  • 方法一:void destroy( )

    它是生命周期方法,会在 Servlet 被销毁之前调用,且只会调用一次。

  • 方法二:ServletConfig getServletConfig()

    可以用来获取 Servlet 的位置信息。

  • 方法三:String getServletInfo()

    获取 Servlet 的信息。

  • 方法四:void init ()

    生命周期方法,在 Servlet 对象创建之后马上执行,并只执行一次。

  • 方法五:void service()

    生命周期方法,可以被调用多次,且每次处理请求都是在调用这个方法。

生命周期方法的特点: tomcat会自动调用

如何让浏览器访问Servlet

  1. 给 Servlet 设定一个 Servlet 路径(让 Servlet 与一个路径绑定在一起);

  2. 浏览器访问 Servlet 路径

    如何给 Servlet 配置 Servlet 路径:在 web.xml 中对 Servlet 进行配置。


<servlet>
    <servlet-name>LoginServletservlet-name>
    <servlet-class>com.orange.servlet.user.LoginServletservlet-class>
servlet>
<servlet-mapping>
    <servlet-name>LoginServletservlet-name>
    <url-pattern>/login.dourl-pattern>
servlet-mapping>

启动程序,然后在浏览器访问.

Servle 特性:

  1. 单例,一个类只有一个对象,可能存在多个 Servle 类;

  2. 线程不安全的,所以效率很高;

  3. Servle 类由我们来写,但对象由服务器来创建,并且用服务器来调用相应的方法。

ServletConfig

一个ServletConfig对象对应一段web.xml中Servlet的配置信息

img

ServletConfig对象的功能:

  1. String getServletName(),获取的是中的内容;

  2. ServletContext getServletContext():获取Servlet上下文对象;

  3. String getInitParameter(String name):通过名称获取指定初始化参数的值;

  4. Enumeration getInitParameterNames():获取所有初始化参数的名称。

Servlet 相关类之 ServletRequest 和 Servletresponse 对象

ServletRequst:请求

获得请求数据、处理请求,对客户端进行响应。

(如何获取数据):

所有数据都被 Config 分装到 ServletRequst 中,调用它的方法就能获得请求信息。

ServletResponse:响应

调用它的方法才能设置响应头和状态码,甚至可以用它发送 html 代码,这时请求被发送到浏览器,浏览器才能打开。

HttpServlet

HttpServlet是Servlet接口的一个实现类,并且它是一个抽象类

在javax.servlet.http包中定义了采用HTTP通信协议的HttpServlet类。

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
  • 通过 request 得到当前请求的请求方式
  1. GET :获取由请求URL标识的资源

  2. POST :向Web服务器发送无限制长度的数据

  3. PUT :存储一个资源到请求的URL

  4. DELETE :删除由URL标识的资源

  5. HEAD :返回URL标识的头信息

  6. OPTIONS :返回服务器支持的HTTP方法

  7. TRACE :返回TRACE请求附带的头字段

  • 根据请求方式再调用 doGet()或 doPost()方法
    • void doGet(){…} --> 重写
    • void doPost() {…} --> 重写

Filter(过滤器)

过滤器是JavaWeb三大组件之一

过滤器有拦截的能力。(对一组资源进行统一处理)

过滤器如何编写

  1. 写一个类实现Filter接口

  2. 在web.xml中进行配置

Filter接口三个方法(生命周期)

  1. public void init(FilterConfig filterConfig) throws ServletException;

    初始化操作,创建之后马上执行;Filter会在服务器启动时就创建。

  2. public void destroy();

    用来销毁Filter对象,在销毁之前执行,服务期关闭时销毁。

  3. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

    用来完成实际的过滤操作,每次过滤时都会执行。

<filter>
    <filter-name>xxxfilter-name>
    <filter-class>com.orange.filter.CharacterEncodingFilterfilter-class>
filter>
<filter-mapping>
    <filter-name>xxxfilter-name>
    <url-pattern>/*url-pattern>
filter-mapping>

url地址/*,访问任何,过滤器都会过滤

过滤器的四种拦截方式

1、请求(直接请求)DISPATCHER

2、转发FORWARD

3、包含INCLUDE

4、错误ERROR


Listener(监听器)

定义:

  • Listener 它是 JavaEE 的规范,就是接口

  • Listener 监听器是 JavaWeb 的三大组件之一

  • 作用是: 起到监听作用,当java中的其他组件或功能在发生变化时,所作出的提醒或操作。

事件源:三大域

ServletContext

  • 生命周期监听:ServletContextListener

    它有两个方法,一个在出生时调用,一个在死亡时调用;

    void contextInitialized(ServletContextEvent sce)//创建 Servletcontext 时
    
    void contextDestroyed(ServletContextEvent sce)//销毁 Servletcontext 时
    
  • 属性监听:ServletContextAttributeListener

    它有三个方法,一个在添加属性时调用,一个在替换属性时调用,最后一个是在移除属性时调用。

HttpSession

  • 生命周期监听:HttpSessionListener

    它有两个方法,一个在出生时调用,一个在死亡时调用;

    void sessionCreated( HttpSessionEvent se)//创建 session 时
    
    void sessionDestoryed( HttpSessionEvent se)//销毁 session 时
    
  • 属性监听:: HttpSessioniAttributeListener

    它有三个方法,一个在添加属性时调用,一个在替换属性时调用,最后一个是在移除属性时调用;

ServleRequest

  • 生命周期监听:ServletRequestListener

    它有两个方法,一个在出生时调用,一个在死亡时调用;

    void requestlnitialized(ServletRequestEvent sre)//创建 request 时
    
    void requestDestoryed (servletRequestEvent sre)//销毁 request 时
    
  • 属性监听:ServletRequestAttributeListener

    它有三个方法,一个在添加属性时调用,一个在替换属性时调用,最后一个是在移除属性时调用。

监听器实现类:

public class MyServletContextListenerImpl implements ServletContextListener {
 
    @Override public void contextInitialized(ServletContextEvent sce) {       
     System.out.println("ServletContext 对象被创建了");
  }
 
  @Override public void contextDestroyed(ServletContextEvent sce) {
     System.out.println("ServletContext 对象被销毁了");
  }
}

web.xml中配置

<!-配     -->
<listener>
    <listener-class>com.orange.listener.MyServletContextListenerImpllistener-class>
listener>   

小结

这篇blog也是博主在前辈的基础上加上自己的理解学习总结的,保持习惯学习多总结,避免忘记,希望能给到你帮助~

你可能感兴趣的:(Java学习,java,web)