因为我自己习惯研究一个应用从web.xml做为起点,我相信这是个不错的起点。
因此我将从jforum的第一个filter开始研究jforum,要是有更好的建议欢迎告诉我哟。万分感谢提出各种意见。
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。通过判断它的值可以知道访问者是人还是蜘蛛,还可以知道访问者的浏览器类型。
分享到:
相关推荐
在提供的压缩包`JForum-2.1.6-src`中,我们可以看到源代码的完整结构,包括但不限于以下关键部分: - **src**: 包含了所有源代码,按照MVC结构组织,如`model`、`view`和`controller`目录。 - **webapp**: 存放Web...
源码开放意味着你可以深入研究其内部结构,学习优秀的编程实践,或者根据自己的需求进行二次开发。在部署方面,JForum 可以运行在任何支持Java的Web服务器上,如Tomcat、Jetty等,与数据库如MySQL、PostgreSQL等配合...
同时,源码的学习也能提升我们的Java Web开发技能,尤其是对于MVC(Model-View-Controller)设计模式、Servlet、JSP、JDBC等技术的理解。总的来说,JForum 2.1.8的源码不仅是一份开源软件的实例,也是广大开发者学习...
文件列表中的“JForum-2.1.4”目录包含了项目的全部源码和配置文件,其中“WEB-INF”目录下存放了Web应用的相关资源,如web.xml配置文件,定义了应用的初始化参数和Servlet映射。"src"目录则是Java源码的存放地,...
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.5.0安装包+安装方式.rar”包含了JForum 2.5.0版本的安装文件和相关的安装指南,主要文件为“jforum-2.5.0.war”,这是一个Web应用的归档文件,可以直接部署在支持Servlet和JSP的Web服务器上。...
**JForum-2.1.4.rar_JForum-2.1.4_jforum_jsp_jsp_struts_struts** 这个压缩包文件包含了一个基于JSP和Struts框架的论坛系统——JForum的2.1.4版本。JForum是一款开源的、基于Java技术的讨论论坛软件,它提供了强大...
JForum是一个功能强大的、基于Java的开源讨论论坛系统,它提供了丰富的社区管理工具和用户交互功能,深受开发者和社区管理员的喜爱。本篇文章将深入探讨JForum 2.1.8版本,特别是其Web工程版的特点和在Eclipse环境下...
Java论坛,测试人员进入性能,自动化测试练习很好的项目。 搭建环境:Tomcat,JDK,Mysql 版本:jforum-2.7.0.war,需要搭建的环境版本比较高,我的是Tomcat,JDK,Mysql 都是8.0以上的版本
在这个"jforum-2.1.8-编译代码.zip"压缩包中,包含了JForum 2.1.8版本的源代码,对于开发者来说,这是一个深入理解JForum工作原理、进行二次开发或定制化改造的宝贵资源。 首先,让我们了解JForum的基本架构。...
从网上下了很多jforum-2.1.9都是无法进入主题,此资源是从GitHub获取的源码重新编译打包,实测可用
2. **Web服务器**:JForum通常与流行的Java Web服务器(如Tomcat、Jetty)一起部署。你需要设置并配置一个这样的服务器,以便JForum能够处理HTTP请求。 3. **Servlet容器**:由于JForum是一个Web应用程序,它依赖于...
7. **Jforum核心jar**:最后,jforum-*.jar是jForum自身的核心库,包含了论坛系统的业务逻辑和具体实现。这些jar包是jForum3.0的核心组成部分,确保了论坛的各项功能得以实现。 在部署jForum3.0时,确保所有必要的...
全栈性能测试>Jmeter实战书中了解到jforum。开始搭建环境的时候入了很多坑,希望能帮助到要学习的你们 1、不管是zip,还是war包(上一个资料)都可解压到tomcat文件的webapps下面; 2、安装好jdk,tomcat,mysql; 3、...
总的来说,通过研究JForum 2.1.6的源码,不仅可以学习到基础的Java和JSP知识,还能深入了解Web应用开发的各个方面,对于提升个人技能和完成毕业设计都是非常有价值的。同时,参与开源项目也可以让你接触到实际的开发...
**正文** JForum是一款基于Java...通过对JForum源码的深度学习,开发者不仅可以掌握FreeMarker的使用,还能了解一个完整的Web应用是如何设计和实现的,对于提升Java Web开发技能和理解大型项目结构有着极大的帮助。
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
开源测试论坛,用于JMeter性能测试,稳定性测试,配置测试,负载测试等。Java开发,需要win7操作系统
【标题】: "基于Java的开发源码-论坛系统 JForum" JForum是一款用Java语言开发的开源论坛软件,它提供了全面的社区管理功能,包括用户注册、发帖、回帖、私信、用户组管理、权限控制以及丰富的插件支持。这个压缩包...