Servlet监听器过滤器

来源:互联网 发布:索菲亚衣柜 知乎 编辑:程序博客网 时间:2024/06/05 09:40

Servlet监听器,过滤器演示代码:

package com.wfc.ipfilter;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 javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class IPFilter implements Filter {private String allIP="";@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {HttpServletRequest request=(HttpServletRequest)arg0;HttpServletResponse     response=(HttpServletResponse)arg1;//response.setCharacterEncoding("utf-8");request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");// TODO Auto-generated method stub               System.out.println(allIP);             //indexOf()的用法:没有就返回-1               System.out.println(arg0.getRemoteAddr()+"-------------2222222----------------");                              if(allIP.indexOf(arg0.getRemoteAddr())==-1){                                 //   arg1.getWriter().print("yyyyyyyy");                             //response.getWriter().print("我的顶我的");                              arg2.doFilter(arg0, arg1);               //response.sendRedirect("http://baidu.com/");               }else{               arg1.getWriter().print("nnnnnnnnnnnnnnnnnnnnn");               }}@Overridepublic void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stuballIP=arg0.getInitParameter("ipKey");}}



<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">    <filter>        <filter-name>ip</filter-name>        <filter-class>com.wfc.ipfilter.IPFilter</filter-class>        <init-param>            <param-name>ipKey</param-name>                                         <!--    <param-value>192.168.30.27,127.0.0.1</param-value>    -->             <param-value>192.168.30.27,192.168.30.26</param-value>                    </init-param>    </filter>    <filter-mapping>        <filter-name>ip</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>A</servlet-name>    <servlet-class>com.wfc.ipfilter.A</servlet-class>  </servlet>  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>B</servlet-name>    <servlet-class>com.wfc.ipfilter.B</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>A</servlet-name>    <url-pattern>/A</url-pattern>  </servlet-mapping>  <servlet-mapping>    <servlet-name>B</servlet-name>    <url-pattern>/B</url-pattern>  </servlet-mapping> </web-app>

对于过滤器:上面的例子就可以来完成:配置web.xml         过滤掉指定的IP地址



下面继续写了两个Servlet,上下文ServletContext的演示:

package com.wfc.ipfilter;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class B extends HttpServlet {/** * Destruction of the servlet. <br> *  */String str="womendoasuddsfjweqtewweohe";public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here} public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);  } public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();} public void init() throws ServletException {// Put your code hereSystem.out.println("------------------------------初始化方法--------------------");this.getServletContext().setAttribute("ggg", str);System.out.println("B要得到值:-------------"+this.getServletContext().getAttribute("ggg")); }}



package com.wfc.ipfilter;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class A extends HttpServlet { public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here} public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//System.out.println("我要得到值1:"+this.getServletContext().getAttribute("ggg"));response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();out.print("传递的值:"+this.getServletContext().getAttribute("ggg"));//System.out.println("我要得到值2:"+this.getServletContext().getAttribute("ggg")); } public void init() throws ServletException {// Put your code here}}



0 0