JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--JAVA技术--Servlet  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
Java Servlet规范2.3中的过滤器访问
作者:     文章来源:
访问次数:503次     加入时间:2006年05月18日
如果你想安装一个带有访问限制的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.tips.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地址给予其客户访问某个数据集的权限时,这种方法尤其有用。


JSP虚拟主机 | JSP空间 | JSP主机 | JSP双线虚拟主机 | JAVA空间 | JAVA虚拟主机 | 虚拟服务器 | JSP 虚拟服务器 | VPS
Virtual Private Server | JAVA虚拟服务器 | VM服务器 | VHOST | 虚拟操作系统 | JSP论坛 | JAVA论坛 | JSP站点论坛
Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号