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() 会创建会话
销毁有两种:
- session.invalidate(); 会立刻销毁session
- 两次请求的时间间隔超过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的激活和钝化
- 当tomcat服务器停止时,会把session中所有变量存储到磁盘上, 称为钝化
- 当tomcat服务器重新启动时,把刚才存入磁盘的信息读取出来,恢复至session作用域, 称为激活
钝化过程调用是java序列化
激活过程调用是java反序列化
向Session中存储的变量要实现序列化接口(Serializable)
都是针对自定义的java类,如:Student, Hero