`
ericxu131
  • 浏览: 188420 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JForum源码学习研究2-ClickstreamFilter.java

阅读更多

因为我自己习惯研究一个应用从web.xml做为起点,我相信这是个不错的起点。

因此我将从jforum的第一个filter开始研究jforumbiggrin,要是有更好的建议欢迎告诉我哟。万分感谢提出各种意见。

 

net.jforum.util.legacy.clickstream.ClickstreamFilter.java

这是jforum这个论坛在web.xml里面配置的唯一的一个filter,他的作用是用来判断前来访问的请求是否是一个机器人,比如说各种搜索引擎的bot,具体的判断是用BotChecker.java这个类的isBot方法来判断的

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
			ServletException
	{
		// Ensure that filter is only applied once per request.
		if (request.getAttribute(FILTER_APPLIED) == null) {
			request.setAttribute(FILTER_APPLIED, Boolean.TRUE);
			
			String bot = BotChecker.isBot((HttpServletRequest)request);
			
			if (bot != null && log.isDebugEnabled()) {
				log.debug("Found a bot: " + bot);
			}
			
			request.setAttribute(ConfigKeys.IS_BOT, Boolean.valueOf(bot != null));
		}
		
		// Pass the request on
		chain.doFilter(request, response);
	}

 

 

net.jforum.util.legacy.clickstream.BotChecker.java

这是ClickstreamFilter中所使用到的一个工具类,它会获取clickstream-jforum.xml中所有配置的bot名称,通过与request.getHeader("User-Agent"),请求头中的User-Agent的名称进行比较返回出具体的bot类型。

 

net.jforum.util.legacy.clickstream.config.ConfigLoader.java

这是一个用来获取xml中内容的类,BotChecker.java中使用到的clickstream-jforum.xml就是通过它来解析的。ConfigLoader.java的解析方式是通过SAX的方式解析的

private ClickstreamConfig config;

SAXParser parser = SAXParserFactory.newInstance().newSAXParser();

parser.parse(fileInput, new ConfigHandler());

	private class ConfigHandler extends DefaultHandler
	{
		public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
		{
			if (qName.equals("bot-host")) {
				config.addBotHost(attributes.getValue("name"));
			}
			else if (qName.equals("bot-agent")) {
				config.addBotAgent(attributes.getValue("name"));
			}
		}
	}

(以上的代码经过我修改,并不是源码,只是为了方便看,方便理解)

 

net.jforum.util.legacy.clickstream.config.ClickstreamConfig.java

这只是个值对象,其中用了两个List用来保存clickstream-jforum.xml中的bot的Host和Agent

 

 

 

在学习了这个Filter后学习到了用SAX的方式在java中解析xml的简单方法。

在每个请求都会在头信息当中都会标注User-Agent,通过IE提交的请求会有IE的User-Agent,FF会有FF的User-Agent,google的机器人在抓取网页信息时提交的请求也会包含它的User-Agent。通过判断它的值可以知道访问者是人还是蜘蛛,还可以知道访问者的浏览器类型。

分享到:
评论
1 楼 gznofeng 2008-08-12  
不错。解释的还不错。

相关推荐

    JForum-2.1.6-src.zip_JForum-2.1.4_JForum-2.1.6-src_ejb_jforum_jf

    在提供的压缩包`JForum-2.1.6-src`中,我们可以看到源代码的完整结构,包括但不限于以下关键部分: - **src**: 包含了所有源代码,按照MVC结构组织,如`model`、`view`和`controller`目录。 - **webapp**: 存放Web...

    JForum-2.1.4.rar_JForum-2.1.4_java 论坛源码_jforum_论坛源码_论坛网站源码

    源码开放意味着你可以深入研究其内部结构,学习优秀的编程实践,或者根据自己的需求进行二次开发。在部署方面,JForum 可以运行在任何支持Java的Web服务器上,如Tomcat、Jetty等,与数据库如MySQL、PostgreSQL等配合...

    jforum-2.1.8-src.zip

    同时,源码的学习也能提升我们的Java Web开发技能,尤其是对于MVC(Model-View-Controller)设计模式、Servlet、JSP、JDBC等技术的理解。总的来说,JForum 2.1.8的源码不仅是一份开源软件的实例,也是广大开发者学习...

    jforum-2.1.4-src.zip

    文件列表中的“JForum-2.1.4”目录包含了项目的全部源码和配置文件,其中“WEB-INF”目录下存放了Web应用的相关资源,如web.xml配置文件,定义了应用的初始化参数和Servlet映射。"src"目录则是Java源码的存放地,...

    jforum-2.1.8-src.zip_JForum-2.1.8_The Watch_jforum_jforum 2.1.8-

    Personally think is the best forum for the Java source code, open source, you can watch the official website of the latest developments http://www.jforum.net/

    JForum-2.1.4.rar_JForum-2.1.4_jforum_jsp_jsp struts_struts

    **JForum-2.1.4.rar_JForum-2.1.4_jforum_jsp_jsp_struts_struts** 这个压缩包文件包含了一个基于JSP和Struts框架的论坛系统——JForum的2.1.4版本。JForum是一款开源的、基于Java技术的讨论论坛软件,它提供了强大...

    jforum-2.1.8.zip

    JForum是一个功能强大的、基于Java的开源讨论论坛系统,它提供了丰富的社区管理工具和用户交互功能,深受开发者和社区管理员的喜爱。本篇文章将深入探讨JForum 2.1.8版本,特别是其Web工程版的特点和在Eclipse环境下...

    jforum-2.7.0.war

    Java论坛,测试人员进入性能,自动化测试练习很好的项目。 搭建环境:Tomcat,JDK,Mysql 版本:jforum-2.7.0.war,需要搭建的环境版本比较高,我的是Tomcat,JDK,Mysql 都是8.0以上的版本

    jforum-2.5.0安装包+安装方式.rar

    这个压缩包“jforum-2.5.0安装包+安装方式.rar”包含了JForum 2.5.0版本的安装文件和相关的安装指南,主要文件为“jforum-2.5.0.war”,这是一个Web应用的归档文件,可以直接部署在支持Servlet和JSP的Web服务器上。...

    jforum-2.1.8-编译代码.zip

    在这个"jforum-2.1.8-编译代码.zip"压缩包中,包含了JForum 2.1.8版本的源代码,对于开发者来说,这是一个深入理解JForum工作原理、进行二次开发或定制化改造的宝贵资源。 首先,让我们了解JForum的基本架构。...

    jforum-2.1.9.war

    从网上下了很多jforum-2.1.9都是无法进入主题,此资源是从GitHub获取的源码重新编译打包,实测可用

    jforum3.0项目需要的jar包

    2. **Web服务器**:JForum通常与流行的Java Web服务器(如Tomcat、Jetty)一起部署。你需要设置并配置一个这样的服务器,以便JForum能够处理HTTP请求。 3. **Servlet容器**:由于JForum是一个Web应用程序,它依赖于...

    jforum3.0所需要的jar包

    7. **Jforum核心jar**:最后,jforum-*.jar是jForum自身的核心库,包含了论坛系统的业务逻辑和具体实现。这些jar包是jForum3.0的核心组成部分,确保了论坛的各项功能得以实现。 在部署jForum3.0时,确保所有必要的...

    jforum-2.1.9.zip

    全栈性能测试>Jmeter实战书中了解到jforum。开始搭建环境的时候入了很多坑,希望能帮助到要学习的你们 1、不管是zip,还是war包(上一个资料)都可解压到tomcat文件的webapps下面; 2、安装好jdk,tomcat,mysql; 3、...

    [论坛社区]JForum开源论坛 2.1.6_jforum216.zip

    总的来说,通过研究JForum 2.1.6的源码,不仅可以学习到基础的Java和JSP知识,还能深入了解Web应用开发的各个方面,对于提升个人技能和完成毕业设计都是非常有价值的。同时,参与开源项目也可以让你接触到实际的开发...

    jforum 源码

    **正文** JForum是一款基于Java...通过对JForum源码的深度学习,开发者不仅可以掌握FreeMarker的使用,还能了解一个完整的Web应用是如何设计和实现的,对于提升Java Web开发技能和理解大型项目结构有着极大的帮助。

    jforum-2.1.8 jar包.zip

    jforum-2.1.8 jar包.zipjforum-2.1.8 jar包.zipjforum-2.1.8 jar包.zipjforum-2.1.8 jar包.zipjforum-2.1.8 jar包.zipjforum-2.1.8 jar包.zip

    jforum-2.2.0.war

    开源测试论坛,用于JMeter性能测试,稳定性测试,配置测试,负载测试等。Java开发,需要win7操作系统

    基于java的开发源码-论坛系统 JForum.zip

    【标题】: "基于Java的开发源码-论坛系统 JForum" JForum是一款用Java语言开发的开源论坛软件,它提供了全面的社区管理功能,包括用户注册、发帖、回帖、私信、用户组管理、权限控制以及丰富的插件支持。这个压缩包...

Global site tag (gtag.js) - Google Analytics