局域网聊天的程序原理:
1、在同一个网络。
2、有临时或者永久数据库,进行数据传输与访问。
3、有单独服务器或者用户服务器。
至于具体的学习,我给你个建议吧。
一步一步,照着代码写,你边写,你就会报错,通过解决错误,你就会很快学会了。
祝楼主学习愉快~
呵呵,楼主您好!要用Java做聊天室说简单也不简单,但是说难呢也不难.说简单点,就是会话跟踪技术(我个人这样理解).要做聊天室,您需要
使用到的工具: tomcat 服务器(因为是免费的,其他也可以哦,呵呵).
Myeclipse(sun公司提供的编写Java程序的工具,别说你不知道哈,
哪样的话我就晕倒了哦,呵呵)
页面框架的设计:index.jsp(聊天室主页面)index_top.jsp(聊天室的顶部页面)
usersonline.jsp(在线人数的统计及显示页面) sendMessage.jsp(发送信息的页面)
showMessage.jsp(显示聊天信息的页面)register.jsp(用户注册的页面)
login.jsp(用户登录页面)
当然,这是最简单的设计方式咯.您也可以设计得更好点.
页面介绍与功能:
index.jsp 主要是聊天室的主页面.由上中下3个框架组成,中间部分在分为
左右2个框架.实际上index.jsp就是一个由于5个框架组成的页面
顶部框架:放index_top.jsp页面.可以设计自己聊天室的特色(比如说:logo)
中间部分的左边框架:showMessage.jsp 显示聊天的信息
中间部分的右边框架:usersonline.jsp(在线人数的统计及显示页面)
底部框架:sendMessage.jsp 这个发送信息的jsp页面.不多说吧
聊天室的框架的设计大楷就是这样子咯
实现聊天:
1.编写一个servlet,用户处理的信息(包括验证用户是否登录和聊天信息)。
2.用户发送信息之后,将发送的信息存放到Application中(群聊)(放在session中就是私聊)
3.显示信息的页面每个XX秒中获取session或者Application中的数据显示出来就OK了
更多的东西还是需要您学习Ajax之后再做,会有不一样的效果哦。祝您成功哟.呵呵
//以下引入包import javax.swing.*
import java.awt.*
import java.awt.event.*
import java.io.*
import java.net.*
import java.applet.*
public class regit extends JApplet implements ActionListener,ItemListener//接口
{
String s=null
//对象的声明
JLabel labelname,labelpass,labelsxe,labeladdress,labelmail,labelphone//标签
JTextField textname,textaddress,textmail,textphone//文本框
JRadioButton r1,r2//单选按纽
ButtonGroup bg//组
JPasswordField textpass//密码域
JButton buttonregit,buttonreset//注册按纽 重写按纽
JPanel p//面板
String sex//定义性别字符串
URL url//统一资源定位
BufferedWriter out1,out2//流
BufferedReader in
//布局方式
GridBagLayout gbl
GridBagConstraints gc
AppletContext co//接口
//初始化
public void init()
{
//new 对象
labelname=new JLabel("用 户 名:")
labelpass=new JLabel("用户密码:")
labelsxe=new JLabel("性别:")
labeladdress=new JLabel("地址:")
labelmail=new JLabel("电子邮件:")
labelphone=new JLabel("联系电话:")
textname=new JTextField(15)textname.setForeground(Color.red)
textname.setToolTipText("请在这输入你的用户名")
textaddress=new JTextField(15)textaddress.setForeground(Color.red)
textaddress.setToolTipText("请在这输入你的地址")
textmail=new JTextField(15)textmail.setForeground(Color.red)
textmail.setToolTipText("请在这里输入你的E-mail地址")
textphone=new JTextField(15)textphone.setForeground(Color.red)
textphone.setToolTipText("请在这输入你的电话号码")
r1=new JRadioButton("男")r1.setBackground(new Color(47,177,210))//设置颜色
r2=new JRadioButton("女")r2.setBackground(new Color(47,177,210))//设置颜色
bg=new ButtonGroup()
bg.add(r1)bg.add(r2)//加入组,实现单选
textpass=new JPasswordField(15)
textpass.setToolTipText("在这里输入密码")
textpass.setForeground(Color.red)
buttonregit=new JButton("注册")buttonregit.setBackground(new Color(47,177,210))//设置颜色
buttonregit.setToolTipText("点击按纽完成注册")
buttonreset=new JButton("填写")buttonreset.setBackground(new Color(47,177,210))//设置颜色
buttonreset.setToolTipText("点击按纽刷新重写")
gbl=new GridBagLayout()///////////////////////////////////////
gc=new GridBagConstraints()//////采用GridBagLayout布局方式////////
p=new JPanel()
p.setLayout(gbl)
p.setBackground(new Color(47,177,210))
this.getContentPane().add(p)//加入面板
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=2
gc.gridy=2
gbl.setConstraints(labelname,gc)
p.add(labelname)
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=4
gc.gridy=2
gbl.setConstraints(textname,gc)
p.add(textname)
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=2
gc.gridy=4
gbl.setConstraints(labelpass,gc)
p.add(labelpass)
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=4
gc.gridy=4
gbl.setConstraints(textpass,gc)
p.add(textpass)
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=2
gc.gridy=6
gbl.setConstraints(labelsxe,gc)
p.add(labelsxe)
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=4
gc.gridy=6
gbl.setConstraints(r1,gc)
p.add(r1)
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=5
gc.gridy=6
gbl.setConstraints(r2,gc)
p.add(r2)
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=2
gc.gridy=8
gbl.setConstraints(labeladdress,gc)
p.add(labeladdress)
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=4
gc.gridy=8
gbl.setConstraints(textaddress,gc)
p.add(textaddress)
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=2
gc.gridy=10
gbl.setConstraints(labelmail,gc)
p.add(labelmail)
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=4
gc.gridy=10
gbl.setConstraints(textmail,gc)
p.add(textmail)
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=2
gc.gridy=12
gbl.setConstraints(labelphone,gc)
p.add(labelphone)
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=4
gc.gridy=12
gbl.setConstraints(textphone,gc)
p.add(textphone)
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=2
gc.gridy=16
gbl.setConstraints(buttonregit,gc)
p.add(buttonregit)
gc.anchor=GridBagConstraints.NORTHWEST
gc.gridx=4
gc.gridy=16
gbl.setConstraints(buttonreset,gc)
p.add(buttonreset)
/////////////////////////////////////////////
co=this.getAppletContext()
/////////////////////////////////////////////
buttonregit.addActionListener(this)//按纽事件的监听
buttonreset.addActionListener(this)//按纽事件的监听
r1.addItemListener(this)//选择事件的监听
r2.addItemListener(this)//选择事件的监听
textphone.addActionListener(this)
}
public void actionPerformed(ActionEvent e)
{
//注册按纽事件
if(e.getSource()==buttonregit)
{
String s1=textname.getText()////////////////////
String s2=new String(textpass.getPassword())////////////////////
String s3=textaddress.getText()// 定义字符串 //
String s4=textmail.getText()////////////////////
String s5=textphone.getText()////////////////////
//判断注册资料 信息 是否为空
if(s1.length()==0 || s2.length()==0 ||s3.length()==0 ||s4.length()==0 ||s5.length()==0)
{
int error=JOptionPane.INFORMATION_MESSAGE
JOptionPane.showMessageDialog(null,"资料不能为空,请重新注册!","【温馨提示】",error)
return//弹出对话框并返回
}
try//写入到txt文件
{
in=new BufferedReader(new FileReader("d:\\迷离视线聊天室\\password.txt"))
}
catch(Exception ee){}
String ss=s1
try
{
while((s=in.readLine())!=null)
{
if(s.startsWith(ss))
{
JOptionPane.showMessageDialog(null,"用户名已经存在,请更换名字!")
textname.setText("")//设置为空,重新输入
textpass.setText("")
textaddress.setText("")
textmail.setText("")
textphone.setText("")
return
}
}
}
catch(Exception ee){}
///////////////////////////以上代码判断是否有同名
{
try
{
out1=new BufferedWriter(new FileWriter("d:\\迷离视线聊天室\\password.txt",true))
out2=new BufferedWriter(new FileWriter("d:\\迷离视线聊天室\\message.txt",true))
}//创建文件
catch(Exception ee)
{}
try
{
out1.write(s1+"#"+s2)//写
out1.newLine()
out2.write("用户名:"+s1)
out2.newLine()
out2.write("密码:"+s2)
out2.newLine()
out2.write("性别:"+sex)
out2.newLine()
out2.write("地址:"+s3)
out2.newLine()
out2.write("电子邮件:"+s4)
out2.newLine()
out2.write("电话:"+s5)
out2.newLine()
out1.flush()
out2.flush()//清理缓冲
out1.close()
out2.close()
}
catch(Exception ee)
{}
JOptionPane.showMessageDialog(null,"注册成功!")
try
{
String qss="http://localhost/chatroom/chatjiemian.htm"
url=new url(/qss)//连接上网址
co.showDocument(url)
}
catch(Exception exx)
{}
}
}
//////////////////////以下为回车事件
if(e.getSource()==textphone)
{
String s1=textname.getText()////////////////////
String s2=new String(textpass.getPassword())////////////////////
String s3=textaddress.getText()// 定义字符串 //
String s4=textmail.getText()////////////////////
String s5=textphone.getText()////////////////////
//判断注册资料 信息 是否为空
if(s1.length()==0 || s2.length()==0 ||s3.length()==0 ||s4.length()==0 ||s5.length()==0)
{
int error=JOptionPane.INFORMATION_MESSAGE
JOptionPane.showMessageDialog(null,"资料不能为空,请重新注册!","【温馨提示】",error)
return//弹出对话框并返回
}
try//写入到txt文件
{
in=new BufferedReader(new FileReader("d:\\迷离视线聊天室\\password.txt"))
}
catch(Exception ee){}
String ss=s1
try
{
while((s=in.readLine())!=null)
{
if(s.startsWith(ss))
{
JOptionPane.showMessageDialog(null,"用户名已经存在,请更换名字!")
textname.setText("")//设置为空,重新输入
textpass.setText("")
textaddress.setText("")
textmail.setText("")
textphone.setText("")
return
}
}
}
catch(Exception ee){}
///////////////////////////以上代码判断是否有同名
{
try
{
out1=new BufferedWriter(new FileWriter("d:\\迷离视线聊天室\\password.txt",true))
out2=new BufferedWriter(new FileWriter("d:\\迷离视线聊天室\\message.txt",true))
}//创建文件
catch(Exception ee)
{}
try
{
out1.write(s1+"#"+s2)//写
out1.newLine()
out2.write("用户名:"+s1+"密码:"+s2+"性别:"+sex+"地址:"+s3+"电子邮件:"+s4+"电话:"+s5)//写
out2.newLine()
out1.flush()
out2.flush()//清理缓冲
out1.close()
out2.close()
}
catch(Exception ee)
{}
JOptionPane.showMessageDialog(null,"注册成功!")
try
{
String qss="http://localhost/chatroom/chatjiemian.htm"
url=new url(/qss)//连接上网址
co.showDocument(url)
}
catch(Exception exx)
{}
}
}
if(e.getSource()==buttonreset)//刷新重写事件
{
textname.setText("")
textpass.setText("")
textaddress.setText("")
textmail.setText("")
textphone.setText("")
}
}
//////////////////////////////////////////
//
public void itemStateChanged(ItemEvent ex)
{
if(ex.getSource()==r1)
{
sex=new String("男")
}
else if(ex.getSource()==r2)
{
sex=new String("女")
}
}
}
参考资料:试试看,刚在网上找的