web.xml配置文件和监听器

1. web.xml 配置文件

WEB-INF
|- lib 放第三方jar包
|- classes 自己写的servlet等java类
|- web.xml web应用程序的配置文件

写一个servlet 要在类上加一个 @WebServlet(urlPatterns="")
写一个filter 要在类上加一个 @WebFilter(urlPatterns="")
这种基于注解的写法在servlet 3.0 才有的

web.xml是另一种配置方式,跟注解方式配置的地位是一样的

xml (x 可扩展 markup 标记 language 语言) 标签可以进行扩展
html (超文本标记语言) 标签都是规定死的 <a> <h1> <p> ...

例如:

<!-- 配置一个servlet -->
<servlet>
    <!-- servlet名字 -->
    <servlet-name>servlet1</servlet-name>
    <!-- servlet对应的java类 -->
    <servlet-class>controller.Servlet1</servlet-class>
	<!-- 在tomcat启动时就创建servlet的实例,而不是等到第一次请求时
         其中数字表示优先级,数字小的优先级高
    -->
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>servlet1</servlet-name>
    <!-- servlet的路径 -->
    <url-pattern>/s1</url-pattern>
</servlet-mapping>

<!-- 等价于 @WebServlet(urlPatterns = "/s1", loadOnStartup = 1 ) -->

例如:

<filter>
    <!-- 过滤器名字 -->
    <filter-name>f1</filter-name>
    <!-- 过滤器对应的java类 -->
    <filter-class>filter.Filter1</filter-class>
</filter>
<filter-mapping>
    <filter-name>f1</filter-name>
    <!-- 过滤器要过滤的路径 -->
    <url-pattern>/ *</url-pattern>
</filter-mapping>
<!-- 等价于 @WebFilter(urlPatterns="/*") -->

过滤器的过滤顺序可以通过 filter-mapping标签的顺序调整,先进入filter-mapping在前面的过滤器

HttpSession 会话
当第一次调用 request.getSession() 会创建会话
销毁有两种:

  1. session.invalidate(); 会立刻销毁session
  2. 两次请求的时间间隔超过30分钟,session会销毁
    例如:
<session-config>
    <!-- 配置session的超时时间, 单位是分钟 -->
    <session-timeout>10</session-timeout> 
</session-config>

2. 监听器 (Listener)

ServletContextListener 监听应用程序启动和停止事件
ServletRequestListener request对象创建和销毁事件
HttpSessionListener session对象创建和销毁事件

ServletContextAttributeListener application作用域 setAttribute,removeAttribute事件
ServletRequestAttributeListener request作用域 setAttribute,removeAttribute事件
HttpSessionAttributeListener session 作用域 setAttribute,removeAttribute事件

HttpSessionActivationListener session 的激活和钝化
HttpSessionBindingListener session变量绑定事件

session的激活和钝化
1) 当tomcat服务器停止时,会把session中所有变量存储到磁盘上, 称为钝化
2) 当tomcat服务器重新启动时,把刚才存入磁盘的信息读取出来,恢复至session作用域, 称为激活
钝化过程调用是java序列化
激活过程调用是java反序列化

向Session中存储的变量要实现序列化接口(Serializable)
都是针对自定义的java类,如:Student, Hero

猜你喜欢

转载自blog.csdn.net/qq_34862798/article/details/82865444