路径名是否要加项目名?
- 如果是在客户端和服务器之间输送路径
- 一定要加项目名
- 如果是在项目之间进行路径的传送
- 一定不能加项目名
- 获取动态项目名(一般不会对项目名静态化)
- request.getcontextpath()
- this.getcontext().getcontextpath()
重定向和转发的区别
- 重定向
- 再进行一次请求
- 转发
- 还是原有请求的基础上跳到别的页面上
servlet注解
- 意义
- 简化开发的过程,减少配置的时间
- 以servlet程序配置为例子
-
在Servlet类上使用:@WebServlet,WebServlet注解中有哪些属性呢?
- name属性:用来指定Servlet的名字。等同于:
- urlPatterns属性:用来指定Servlet的映射路径。可以指定多个字符串。
- loadOnStartUp属性:用来指定在服务器启动阶段是否加载该Servlet。等同于:
- value属性:当注解的属性名是value的时候,使用注解的时候,value属性名是可以省略的。
- 注意:不是必须将所有属性都写上,只需要提供需要的。(需要什么用什么。)
- 注意:属性是一个数组,如果数组中只有一个元素,使用该注解的时候,属性值的大括号可以省略。
-
Filter过滤器
- Filter过滤器的作用
- Filter是过滤器。
- Filter可以在Servlet这个目标程序执行之前添加代码。也可以在目标Servlet执行之后添加代码。之前之后都可以添加过滤规则。
- 一般情况下,都是在过滤器当中编写公共代码。
- Filter代码的生命周期
- 随着服务器的启动而产生(单实例)
- 程序是否能执行
- 是否程序的路径有filter
- 如果没有,则正常运行
- 如果有,观察是否有chain.doFilter(request, response); 代码
- 如果有chain.doFilter(request, response);则进入下一个filter
- 如果已经是 最后一个filter了则进行servlet程序
- 是否程序的路径有filter
- Filter代码的编写
- 第一步:编写一个Java类实现一个接口:jarkata.servlet.Filter。并且实现这个接口当中所有的方法。
- init方法:在Filter对象第一次被创建之后调用,并且只调用一次。
- doFilter方法:只要用户发送一次请求,则执行一次。发送N次请求,则执行N次。在这个方法中编写过滤规则。
- destroy方法:在Filter对象被释放/销毁之前调用,并且只调用一次。
- 第二步:在web.xml文件中对Filter进行配置。这个配置和Servlet很像。或者使用注解:@WebFilter({“*.do”})
- 第一步:编写一个Java类实现一个接口:jarkata.servlet.Filter。并且实现这个接口当中所有的方法。
<filter>
<filter-name>filter2</filter-name>
<filter-class>com.bjpowernode.javaweb.servlet.Filter2</filter-class>
</filter>
<filter-mapping>
<filter-name>filter2</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
Listener监听器
-
什么是监听器?
- 监听器是Servlet规范中的一员。就像Filter一样。Filter也是Servlet规范中的一员。
- 在Servlet中,所有的监听器接口都是以“Listener”结尾。
- 完成这个接口的程序会在某个特定的时间完成其中的程序
-
监听器类
- HttpSessionAttributeListener
- 该监听器需要使用@WebListener注解进行标注。
- 该监听器监听的是什么?是session域中数据的变化。只要数据变化,则执行相应的方法。主要监测点在session域对象上。
- HttpSessionBindingListener
- 该监听器不需要使用@WebListener进行标注。
- 假设User类实现了该监听器,那么User对象在被放入session的时候触发bind事件,User对象从session中删除的时候,触发unbind事件。
- 假设Customer类没有实现该监听器,那么Customer对象放入session或者从session删除的时候,不会触发bind和unbind事件。
- HttpSessionIdListener
- session的id发生改变的时候,监听器中的唯一一个方法就会被调用。
- HttpSessionActivationListener
- 监听session对象的钝化和活化的。
- 钝化:session对象从内存存储到硬盘文件。
- 活化:从硬盘文件把session恢复到内存。
- HttpSessionAttributeListener