Java Servlet规范2.3中的过滤器访问-JSP教程-第二电脑网

  第二电脑网导读:果用户已经登陆进入系统,那么MenuLabelFilter使用用户的配置取代了i18n的系统标签,书写格式为${propertyfile.menu.label},如果用户是guest,则使用浏览器缺省配置。一个servlet过滤器可以分为两个部分:Java类自身以及在web.xml文件中的XML。要作为servlet过虑器的Java类必须实现javax.servlet.Filter接口。该接口由一对自描述的生命周期的方法init(FilterConfig)、destroy()和一个行为...
  正文:

如果你想一个带有访问限制的servlet,但同时为了保证其又不想改变其源,那么你应该使用一个servlet过滤器。 Servlet过滤器包含在Java Servlet规范2.3版本中。它能够让你在servlet运作前截取请求,也能让你在servlet运作后修改请求。例如,如果用户已经登陆进入,那么MenuLabelFilter使用用户的配置取代了i18n的标签,书写格式为${propertyfile.menu.label},如果用户是guest,则使用缺省配置。一个servlet过滤器可以分为两个部分:Java类自身以及在web.xml文件中的XML。要作为servlet过虑器的Java类必须实现javax.servlet.Filter接口。该接口由一对自描述的生命周期的方法init(FilterConfig)、destroy()和一个行为方法doFilter(ServletRequest,ServletResonse,FilterChain)。后者的设计看上去类似于doGet或者doPost。下面是一个IP管理的servlet过滤器例子: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;public class IPMonitorFilter implements Filter {private FilterConfig config = null;public void init(FilterConfig config) throws ServletException {this.config = config;}public void destroy( ) {this.config = null;}public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException, ServletException{if(config == null) {return;}String legalIP = this.config.getInitParameter("LegalIP");String thisIP = request.getRemoteAddr( );if(legalIP.equals(thisIP)) {chain.doFilter(request, response);} else {response.setContentType("text/html");PrintWriter out = response.getWriter( );out.write("You are not allowed to connect " +"to this URL at the moment. ");}}} 将IPMonitorFilter放在servlet上的web.xml条目称为SecretServlet,可以写为如下:<web-app><br> <filter><br> <filter-name>IPMonitorFilter</filter-name><br> <filter-class>com.generationjava.ti.IPMonitorFilter</filter-class><br> <init-param><br> <param-name>LegalIP</param-name><br> <param-value>192.168.13.15</param-value><br> </init-param><br> </filter><br> <filter-mapping><br> <filter-name>IPMonitorFilter</filter-name><br> <url-pattern>/secret</url-pattern><br> </filter-mapping><br> <servlet><br> <servlet-name>SecretServlet</servlet-name><br> <servlet-class>com.generationjava.tips.SecretServlet</servlet-class><br> </servlet><br> <servlet-mapping><br> <servlet-name>SecretServlet</servlet-name><br> <url-pattern>/secret</url-pattern><br> </servlet-mapping><br></web-app>在上面的例子中,处理过滤的XML看上去与处理servlet的XML非常类似。当设置完成后,SecretServlet将只能被192.168.13.15的当地地址访问。当只允许一个内部用户访问这个页面或者对一个不同的ip地址给予其客户访问某个数据集的权限时,这种方法尤其有用。


来源:

郑重声明:资讯 【Java Servlet规范2.3中的过滤器访问-JSP教程-第二电脑网】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——