`
小杨学JAVA
  • 浏览: 901401 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Jforum2.1.8开源论坛的修改(tomcat+oracle)

 
阅读更多

Jforum2.1.8开源论坛的修改(tomcat+oracle)

本文中的配置文件指的是:jforum/WEB-INF/config/ SystemGlobals.properties文件

1、  项目的部署,首先下载开源项目包,解压后放到tomcat下,

数据库表的建立:找到jforum/WEB-INF/config/database/oracle/oracle_db_struct.sql文件

向表中插入数据:jforum/WEB-INF/config/database/oracle/ oracle_data_dump.sql文件

指定论坛使用的数据库:找到配置文件

修改代码如下:

# Database type to use

database.driver.name = oracle

# Time in seconds to healthcheck all database connections

database.ping.delay = 1521

配置oracle用户名密码:找到jforum/WEB-INF/config/database/oracle/ oracle.properties文件

修改代码如下:

database.driver.name=oracle

database.connection.password=orcl

database.connection.dbname=orcl

database.connection.string_local=jdbc/:oracle/:oci/:${database.connection.username}/${database.connection.password}@${database.connection.dbname}

database.support.autokeys=false

database.connection.host=localhost

database.connection.pool.min=5

database.support.subqueries=true

database.connection.pool.timeout=120

database.connection.port=1521

database.connection.username=orcl

通过以上配置jforum就可以运行了,可可以试试,不过现在是英文的,好现在将它设置为中文,

在配置文件40行修改代码如下:

i18n.board.default = zh_CN

ok了,中文的可以了。

现在熟悉一下jforum吧!

可以用admin/admin登录,前提是你已经加入了数据了!

到这里基本的功能就可以了,下面说一下我在和项目集成时遇到的问题及解决办法

(1)              单点登录问题,因为论坛是和项目集成使用的,所以要实现单点登录,下面说一下cookie方式实现的单点登录:

  实现你自己的登陆类(SSO) 
你的类必须实现JF的接口: net.forum.sso.SSO . 
注意:使用你自定义的接口类后,关于用户注册/用户激活等功能将不再使用了

下面是我的实现类,供参考

package net.jforum.sso;

 

import java.io.UnsupportedEncodingException;

import java.net.URLDecoder;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpSession;

import net.jforum.ControllerUtils;

import net.jforum.context.RequestContext;

import net.jforum.entities.UserSession;

import net.jforum.util.preferences.ConfigKeys;

import net.jforum.util.preferences.SystemGlobals;

import org.apache.log4j.Logger;

 

public class MyUserSSO implements SSO {

    static final Logger logger = Logger

           .getLogger(CookieUserSSO.class.getName());

    HttpSession session = null;

    public String authenticateUser(RequestContext request) {

       String username = null;

       try {

           // 读取cookie

           Cookie[] rcookie = request.getCookies();

           if (rcookie != null) {

              for (int i = 0; i < rcookie.length; i++) {

                  Cookie myCookie = rcookie[i];

                  String unameString = SystemGlobals

                         .getValue(ConfigKeys.COOKIE_NAME_USER);

                  if (unameString.equals(myCookie.getName())) {

                     username = myCookie.getValue();

                     username = URLDecoder.decode(username.trim(), "UTF-8");

                  } else {

                  }

              }

           }

           System.out.println(username + "myusersso.java");

       } catch (Exception e) {

           System.out.println(e.getMessage());

       }

 

       // login cookie set by my web LOGIN application

       // Cookie cookieNameUser = ControllerUtils.getCookie(SystemGlobals

       // .getValue(ConfigKeys.COOKIE_NAME_USER));

       //    

       // System.out.println(cookieNameUser+"<<<<<<<<"+SystemGlobals

       // .getValue(ConfigKeys.COOKIE_NAME_USER));

       // if (cookieNameUser != null) {

       // username = cookieNameUser.getValue();

       // }

 

       return username; // return username for jforum

       // jforum will use this name to regist database or set in HttpSession

    }

 

    public boolean isSessionValid(UserSession userSession,

           RequestContext request) {

       Cookie cookieNameUser = null;

       try {

           cookieNameUser = ControllerUtils.getCookie(SystemGlobals

                  .getValue(ConfigKeys.COOKIE_NAME_USER));

       } catch (UnsupportedEncodingException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       } // user cookie

       String remoteUser = null;

 

       if (cookieNameUser != null) {

           remoteUser = cookieNameUser.getValue(); // jforum username

       }

 

       if (remoteUser == null

              && userSession.getUserId() != SystemGlobals

                     .getIntValue(ConfigKeys.ANONYMOUS_USER_ID)) {

           // user has since logged out

           return false;

       } else if (remoteUser != null

              && userSession.getUserId() == SystemGlobals

                     .getIntValue(ConfigKeys.ANONYMOUS_USER_ID)) {

           // anonymous user has logged in

           return false;

       } else if (remoteUser != null

              && !remoteUser.equals(userSession.getUsername())) {

           // not the same user (cookie and session)

           return false;

       }

       return true; // myapp user and forum user the same. valid user.

    }

 

}

实现了自己的类之后,要设置jforum的登录模式,找到配置文件329行

authentication.type = sso

346行:sso.implementation = net.jforum.sso.MyUserSSO

原理介绍:

当一个用户访问JForum时,JForum便会检查是否配置SSO,如果配置了SSO,JForum便会调用authenticateUser()方法。该方法简单地返回username或null。 
- 若返回了一个不为空的username时,JForum将会检查是否匹配JForum数据库的userid。 
- 若没有匹配的userid,JForum将动态加以创建 
- JForum设置该user为登陆状态 
- 若返回了一个null,则设置为“Anonymous” 
- 若一个“Anonymous”用户试图访问权限以外的页面,JForum将根据SSO的设置导航到登陆页面,同时传递给一个登陆成功后应该迁移到的地址参数给login页面。

下面是cookie的代码:

request.setCharacterEncoding("UTF-8");

String username=request.getParameter("username");

Cookie cookiebbs = new Cookie("jforumSSOCookieNameUser", "用户名");

cookiebbs.setMaxAge(-1);  

               response.addCookie(cookiebbs);

                     response.sendRedirect(request.getContextPath()+"/forums/list.page");

这里cookie的名字是在配置文件中配置的,468行

cookie.name.user =jforumSSOCookieNameUser

好了,就写到这里吧,相信大家看到这里像搜索问题、中文用户名问题应该都能解决了。我就不再写了,网上搜一下应该都能解决了。

希望这对像我一样想使用jforum但又不知道怎么下手的有帮助,欢迎大家指正。

 

 

将jforum放进MyEclipse里做项目

很简单,就是按照你的源码那个目录,然后按照目录组织,(webroot部分)将各个文件夹放进webroot里。完全按照jforum里的目录组织就可以了。然后将src文件夹放在工程里覆盖MyEclipse自动生成那种就可以了

 

原文:http://www.cnblogs.com/xingzhen/archive/2011/03/30/2000199.html

分享到:
评论

相关推荐

    jforum2.1.8

    JForum是基于Java的开源论坛系统,其2.1.8版本以其强大的功能、灵活性和社区支持而备受青睐。这个版本包含了完整的源代码,使得开发者能够深入理解其工作原理,并可以根据需求进行定制化开发。本文将详细探讨JForum ...

    JForum 2.1.8 中文乱码问题

    JForum是一款流行的开源Java论坛系统,以其强大的功能和易用性受到了许多用户的喜爱。然而,在使用过程中,尤其是对于中文用户而言,可能会遇到中文乱码的问题,这极大地影响了用户体验。本文将深入探讨JForum 2.1.8...

    jforum-2.1.8-src.zip

    JForum,一个知名的开源论坛系统,以其高效、可扩展性和丰富的功能在互联网上广受欢迎。2.1.8 版本的源码发布,为我们提供了一个深入了解其内部工作原理的机会。本文将主要围绕JForum 2.1.8的源码进行解析,探讨其...

    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.8.zip

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

    jforum-2.1.8-编译代码.zip

    JForum是一个开源的、基于Java的网络论坛系统,提供了一套完整的社区解决方案。在这个"jforum-2.1.8-编译代码.zip"压缩包中,包含了JForum 2.1.8版本的源代码,对于开发者来说,这是一个深入理解JForum工作原理、...

    BBCode模板源码(抽取jforum2.1.8 BBCode 界面及源码)

    JForum是一款开源的、基于Java的讨论论坛软件,它提供了一套完整的社区管理功能,包括用户注册、发帖、回帖、私人消息、搜索等。在JForum中,BBCode被用作一种增强用户帖子格式化能力的工具,使得非技术用户也能轻松...

    JForum3 jforum java 开源论坛 论坛

    JForum3是一款基于Java开发的开源论坛系统,其核心设计目标是提供一个高效、稳定且功能丰富的在线讨论平台。这款论坛软件使用了Java语言编写,遵循开放源代码的原则,允许用户自由地使用、修改和分发。JForum3是...

    JForum Source Analysis JForum开源论坛的源码分析

    JForum是一个强大的开源论坛系统,采用MVC(Model-View-Controller)架构设计。它不仅功能全面且易于管理,适用于任何Servlet容器与EJB服务器环境。对于希望深入了解Java Web应用开发及MVC架构原理的学习者来说,...

    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.1.8版本完整源代码(1)

    jforum-2.1.8版本完整源代码(1),因为完整版本超过15mb,因此分成两部分下载。

    jforum开源论坛

    **JForum开源论坛详解** JForum是一款基于Java技术的开源论坛系统,专为构建互动社区而设计。它提供了丰富的功能,如用户管理、版块创建、主题发布、回帖讨论等,适合各种类型的网站集成,无论是企业级应用还是个人...

    jforum开源论坛 官方源代码(2.1.9)

    《jforum开源论坛官方源代码(2.1.9)详解》 JForum是一款基于Java技术的开源论坛系统,以其高效、稳定和易用性在开源社区中受到广泛关注。本次我们探讨的是JForum的2.1.9版本,这是一个经过众多开发者共同努力优化...

    jforum开源的论坛文档

    ### jforum开源论坛的核心知识点 #### 一、jForum简介 jForum是一款基于Java语言编写的开源论坛系统,它提供了一套完整的社区解决方案,适用于构建各类在线社区与论坛。jForum以其灵活的架构、丰富的功能及优秀的...

    jforum-2.1.8版本完整源代码(2)

    jforum-2.1.8版本完整源代码(2) 请找到(1)部分一起解压。

    java开源论坛jforum

    Java开源论坛JForum是一款基于Java开发的讨论区平台,它为开发者提供了一个高效、功能丰富的社区构建工具。作为MVC(Model-View-Controller)设计模式的实例,JForum展示了如何将应用程序的业务逻辑、数据处理和用户...

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

    【JForum开源论坛2.1.6】是一个基于Java技术和JSP(JavaServer Pages)的开源讨论论坛系统,适用于学生毕业设计和学习实践。这个版本是JForum的2.1.6更新,提供了完整的源码,让学生和开发者能够深入理解论坛软件的...

    [论坛社区]JForum开源论坛 2.1.6_jforum216(毕设 + 课设).zip

    JForum是一款基于Java技术开发的开源论坛系统,适用于构建在线社区和讨论平台。2.1.6是其的一个稳定版本,对于计算机科学的学生而言,它常被用作毕业设计或课程设计项目,以帮助学生实践Web应用开发和理解论坛系统的...

Global site tag (gtag.js) - Google Analytics