過濾器實現步驟:
1.新建一般java類 繼承接口Filter 並實現接口中所有的方法,在方法doFilter()中 寫入代碼
2 在web.xml 中註冊過濾器(將需要過濾的頁面用一個文件夾裝起來,配置時 過濾這個文件夾,從而避免過濾了不需要過濾的頁面)
代碼示例:
1. import java.io.IOException; import javax.servlet.Filter; public class FirstFilter implements Filter { public void destroy() { public void doFilter(ServletRequest req, ServletResponse resp, public void init(FilterConfig arg0) throws ServletException { } 2.配置過濾器 <!-- 事件監聽的步驟: 1. 編寫Java類,實現指定的監聽接口,重寫接口中的方法。 application (ServletContextListener , ServletContextAttributeListener ) session (HttpSessionListener ,HttpSessionAttributeListener ) 代碼示例: 1. application import javax.servlet.ServletContextAttributeEvent; public void contextDestroyed(ServletContextEvent e) { public void contextInitialized(ServletContextEvent e) { public void attributeAdded(ServletContextAttributeEvent e) { public void attributeRemoved(ServletContextAttributeEvent arg0) { public void attributeReplaced(ServletContextAttributeEvent e) { session : public class TestSessionListener implements HttpSessionListener{ public void sessionCreated(HttpSessionEvent e) { public void sessionDestroyed(HttpSessionEvent arg0) { } <!-- 註冊監聽器 -->
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
}
FilterChain chain) throws IOException, ServletException {
System.out.println("First 執行了過濾器!!!!");
//請求繼續執行 否則將過濾的頁面都不能執行
ain.doFilter(req, resp);
}
}
<filter>
<filter-name>first_filter</filter-name>
<filter-class>com.zuxia.filter.過濾器類名</filter-class>
</filter>
<filter>
<filter-name>second_filter</filter-name>
<filter-class>com.zuxia.filter.SecondFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>second_filter</filter-name>
<url-pattern>/*</url-pattern>必須以“/”開頭 (/表示項目的根目錄(WebRoot)* 代表過濾該目錄下的所有文件)
</filter-mapping>
<filter-mapping>
<filter-name>first_filter</filter-name>
<url-pattern>/*</url-pattern>必須以“/”開頭 (/表示項目的根目錄(WebRoot))
</filter-mapping>
-->
2. 在web.xml文件中配置監聽器(註冊監聽器)
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
lic class TestApplicationListener implements ServletContextListener,ServletContextAttributeListener{
// //將訪問的次數,寫入到文件中
}
File f = new File(TestApplicationListener.class.getClassLoader().getResource("count.txt").getPath().substring(1));//得到根目錄的路徑的方法(web服務器中)
try {
FileReader fr = new FileReader(f);
BufferedReader bf = new BufferedReader(fr);
String count = bf.readLine();
if(count!=null && !count.equals("")){
e.getServletContext().setAttribute("sumcount", count);
}
bf.close();
fr.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
System.out.println("你添加了屬性。。。。。。。");
System.out.println(e.getName()+":"+e.getValue());
}
// TODO Auto-generated method stub
}
// TODO Auto-generated method stub
File f = new File(TestApplicationListener.class.getClassLoader().getResource("count.txt").getPath().substring(1));
try {
FileWriter fw = new FileWriter(f);
fw.write(e.getServletContext().getAttribute("sumcount")+"");
fw.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
ServletContext application = e.getSession().getServletContext();
Object obj = application.getAttribute("sumcount");
int count = obj==null ? 1 : Integer.parseInt(obj+"")+1;
application.setAttribute("sumcount",count);
}
// TODO Auto-generated method stub
}
<listener>
<listener-class>com.zuxia.listener.TestApplicationListener</listener-class>
</listener>
<listener>
<listener-class>com.zuxia.listener.TestSessionListener</listener-class>
</listener>