当前位置: 代码迷 >> JavaScript >> 自各儿做的jsp,AjaxChat在线聊天网站
  详细解决方案

自各儿做的jsp,AjaxChat在线聊天网站

热度:311   发布时间:2012-12-19 14:13:15.0
自己做的jsp,AjaxChat在线聊天网站

?

登录地址:do.jhost.cn/lsc1414/login.jsp

注册的地方是:do.jhost.cn/lsc1414/regUser.jsp

可以自己注册。。反正还有很多bug。。希望大家都提提意见哈。

不想注册的也可以用测试账号登陆哦

用户名:1 密码 :1

用户名:2 密码 :2

用户名:3 密码 :3

用户名:123 密码 :123

用户名:test 密码 :test

登录页面

聊天界面

使用的一直用Ajax刷新的方法。。

网上说的长轮询这些。感觉好复杂,始终弄不好。

没事就来吐吐槽嘛~

使用的空间是JHOST的免费空间

――――――――――――――――――――――――――――――――――――――――――――――――――

更新源代码下载 写的不好 大家可以多多提意见

http://files.cnblogs.com/liushengchuan/AjaxChat.rar

数据库就没传了,一共两个表 。

/* SQLyog 企业版 - MySQL GUI v7.14 MySQL - 5.1.40-community : Database - lscsql ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; CREATE DATABASE /*!32312 IF NOT EXISTS*/`lscsql` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `lscsql`; /*Table structure for table `content` */ DROP TABLE IF EXISTS `content`; CREATE TABLE `content` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userid` int(11) DEFAULT NULL, `content` text, `createtime` datetime DEFAULT NULL, `touserid` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `timeIndex` (`createtime`) ) ENGINE=InnoDB AUTO_INCREMENT=68860 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC; /*Table structure for table `messageinfo` */ DROP TABLE IF EXISTS `messageinfo`; CREATE TABLE `messageinfo` ( `mid` int(11) NOT NULL AUTO_INCREMENT, `messagetext` text, `createdate` datetime DEFAULT NULL, PRIMARY KEY (`mid`) ) ENGINE=MyISAM AUTO_INCREMENT=38 DEFAULT CHARSET=utf8; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

自己在自己配一配MyBatis 的连接字符串,在SqlMapConfig.xml中

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <!-- <property name="url" value="jdbc:mysql://localhost:3306/lsc1414?characterEncoding=UTF-8"/> --> <property name="url" value="jdbc:mysql://localhost:3306/database?useUnicode=true&amp;characterEncoding=UTF-8" /> <!-- <property name="username" value="root"/> --> <property name="username" value="username" /> <property name="password" value="password" /> </dataSource> </environment> </environments> <mappers> <mapper resource="message/ibatis/Message.xml" /> <mapper resource="message/ibatis/User.xml" /> </mappers> </configuration>

?

1 楼 baiyejianxin 2011-04-14  
有段时间没有写过java代码了,近期又因需要,需要拾起java来。正好看到你发的这篇文章,我把你的代码看了下,发现了一点问题。

1.由于servlet容器装载servlet时只执行一遍init()方法,所以有一部分操作放在init方法中,能够提高效率
     比如:DOMConfigurator.configure(getServletContext().getRealPath("/") + "log4j.xml");
     放在init()以后不必每次都设置了

2.Dao.java中配置文件的地址,你的代码中是每个方法写了一遍,这个可以设置一个静态常量来保存,这样就不需要每次调用方法都创建一个引用。

3.去掉了doPost()方法中的try...catch...感觉作用不大。

4.在doPost()方法中application和userlist的创建可以移到if...else...语句中,需要的时候再创建,如果登录失败的时候,实际上是不需要创建的。

5.当userList为空,直接把user对象加入到userlist中去。不为空时在查找是否已经存在。

6.建议将request.getSession().set...语句换成创建一个HttpSession对象,这样就不需要每次都获取HttpSession。

7.在Dao.java的DoLogin()中,有一处错误
      如果userinfo表为空,这是session.selectOne("Login",user)返回的为null。这个时候使用toString()方法会报空指针异常
2 楼 lsc1414 2011-04-14  
baiyejianxin 写道
有段时间没有写过java代码了,近期又因需要,需要拾起java来。正好看到你发的这篇文章,我把你的代码看了下,发现了一点问题。

1.由于servlet容器装载servlet时只执行一遍init()方法,所以有一部分操作放在init方法中,能够提高效率
     比如:DOMConfigurator.configure(getServletContext().getRealPath("/") + "log4j.xml");
     放在init()以后不必每次都设置了

2.Dao.java中配置文件的地址,你的代码中是每个方法写了一遍,这个可以设置一个静态常量来保存,这样就不需要每次调用方法都创建一个引用。

3.去掉了doPost()方法中的try...catch...感觉作用不大。

4.在doPost()方法中application和userlist的创建可以移到if...else...语句中,需要的时候再创建,如果登录失败的时候,实际上是不需要创建的。

5.当userList为空,直接把user对象加入到userlist中去。不为空时在查找是否已经存在。

6.建议将request.getSession().set...语句换成创建一个HttpSession对象,这样就不需要每次都获取HttpSession。

7.在Dao.java的DoLogin()中,有一处错误
      如果userinfo表为空,这是session.selectOne("Login",user)返回的为null。这个时候使用toString()方法会报空指针异常

非常感谢。。。我就是一新手。。。多谢指导啊
  相关解决方案