jsp标签的使用以及过滤器和监听器
1 <jsp:JavaBean>的使用
<!--[if !supportLists]-->1. <!--[endif]-->可以直接使用,<%@ page import=”xxx.xx.xx”%导入相应的包。然后再页面上写上<%%>包围java代码进行使用。
<!--[if !supportLists]-->2. <!--[endif]-->直接使用<jsp:javaBean>标签即可。
2 <jsp:JavaBean>的4种保存范围


3 <jsp:javaBean>的删除
例子
4 <jsp:setPorperty>标签
比较完之后,还是第一种比较好,自动进行相应的设置。
5 <jsp:getPorperty>标签
反射机制是jsp标签的操作基础。切记!
6 MVC设计模式
模式1,jsp+javabean
模式2,jsp+servlet+javabean
7 过滤器
Servlet分为三种:简单servlet(最常用的)、过滤器(过滤servlet)、监听servlet(监听器)。Jsp可以完成的功能,servlet可以完成。反之则不行。
过滤器的详细过程,可以形成过滤链
一般过滤器都会执行两次,开始前一次,执行完dofileter之后在执行一次。
如果有N个过滤器,一般会这样执行的顺序。
过滤器1执行开始
过滤器2执行开始
过滤器2执行结束
过滤器1执行结束
跟栈有点类似,先执行的最后才结束,形成过滤连很好用!
看个例子:
FileterDemo1 :
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import sun.awt.windows.ThemeReader;
public class FileterDemo1 implements Filter{
public void destroy() {
// TODO Auto-generated method stub
System.out.println("过滤器1开始销毁...");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
System.out.println("过滤器1执行开始");
request.setAttribute("a", "1");
chain.doFilter(request, response);
if("1".equals(request.getAttribute("a")))
System.out.println("过滤器1执行结束");
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
System.out.println("过滤器1初始化...");
}
}
FileterDemo2:
import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import sun.awt.windows.ThemeReader; public class FileterDemo2 implements Filter{ public void destroy() { // TODO Auto-generated method stub System.out.println("过滤器2开始销毁..."); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub System.out.println("过滤器2执行开始"); if("1".equals(request.getAttribute("a"))){ chain.doFilter(request, response); } System.out.println("过滤器2执行结束"); request.setAttribute("a", "2"); } public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub System.out.println("过滤器2初始化..."); } }
<filter> <filter-name>f1</filter-name> <filter-class>FileterDemo1</filter-class> </filter> <filter-mapping> <filter-name>f1</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>f2</filter-name> <filter-class>FileterDemo2</filter-class> </filter> <filter-mapping> <filter-name>f2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
8 监听器
在web.xml里面先配置 过滤器,其次是监听器,再次是简单servlet的配置
<!--[if !supportLists]-->8.1 <!--[endif]-->对于application的监听:
8.1.1 对application上下文的监听
配置web.xml文件:
8.1.2 对application属性的监听
<!--[if !supportLists]-->8.2 <!--[endif]-->对于session的监听
前两个接口都和application监听类似的。但是第三个HttpsessionBindingListener这个有点特殊。看截图:
Jsp页面直接触发监听:
增加属性监听:
移除属性监听:
<!--[if !supportLists]-->8.3 <!--[endif]-->对于request的监听