14.
15.
16.
用户从登陆页面进入聊天室时,如果登录失败则显示出错原因。
图6-2用户名或密码为空
从界面获取数据,将数据封装在UserVo中,将UserVo作为一个整体的对象传递给Dao层,在其Dao层,根据传递过来的数据从数据库中进行查找,如果数据库中存在,刚登录成功,否则提示登录错误。
实现登录界面验证的相关代码为:
(user.action)
1.publicvoidlogin(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
2.UserVouser=newUserVo();
3.Stringuser_name=newString(request.getParameter("loginname").getBytes("ISO-8859-1"),"utf-8");
4.user.setUser_name(user_name );
5.user.setUser_pwd(request.getParameter("loginpwd"));
6.try{
7.intusertype=service.queryUser(user);
8.if(usertype>0){
9.java.util.Datenowdate=newjava.util.Date();
10.Stringchattime=nowdate.toLocaleString();
11.InOnLineUserVovo=newInOnLineUserVo();
12.vo.setUsername(user_name);
13.vo.setChatroom("1");
14.vo.setLogintime(chattime);
15.request.getSession().setAttribute("username",user.getUser_name());
16.request.getSession().setAttribute("usertype",usertype);
17.response.sendRedirect("frame.jsp");
18.intflag=service.add_onlineuser(vo);
19.return; }else{//ʧ��ת��Login.jsp
20.response.getWriter().println("");
1.}
ii.}catch(Exceptione){
1.e.printStackTrace();
UserDao对应的代码为:
publicintqueryUser(UserVouser){
//TODOAuto-generatedmethodstubConnectionconn=ConnTools.conn;;intcount=0;
try{
PreparedStatementstmt=conn.prepareStatement(Constants.QUERY_USER );
stmt.setString(1,user.getUser_name());stmt.setString(2,user.getUser_pwd());
ResultSetrs=stmt.executeQuery();
if(rs.next()){
count=1;
}
}catch(SQLExceptione){
//TODOAuto-generatedcatchblocke.printStackTrace();
}/*finally{
ConnTools.close(conn);
}*/
returncount;
}
验证成功后进入到的主界面
图6-3聊天室主界面
系统的主界面是一个框架页面frame.jsp,定义如下:
1.
2.
4.
5.
6.
7.
8.
9. > 10. 11. 12.
13.
谢谢你的支持!
14.
15.
16.
此框架页面由四部分组成:
l左边的框架,用来显示各种功能,打开的网页文件为:
left.jsp
l上面的框架,用来显示欢迎聊天者进来聊天,打开的网页文件为:
head.jsp。
l中间框架:
其本身是一个frame框架,为发送、接收信息。
打开的网页文件为send.jsp;receive.jsp
l右边的框架:
用来显示所有在线聊天用户的信息,打开的网页文件为:
right.jsp。
6.2用户注册模块设计
该模块的主要作用是实现用户注册。
当用户输入注册信息内容时,系统会根据用户输入的内容通过ajax进行验证,验证成功后,提示用户注册 成功,否刚提示注册失败,返回到登录界面。
用户注册页面:
实现用户注册的及ajax验证的相关代码为:
//创建XHR
functioncreateXHR(){varXHR;
if(window.XMLHttpRequest){
XHR=newXMLHttpRequest();//非IE
}elseif(window.ActiveXObject){try{
XHR=newActiveXObject("Msxml2.XMLHTTP");//新
的IE
}catch(e){
);//旧的IE
XHR=newActiveXObject("Microsoft.XMLHTTP"
}
}
returnXHR;
}
//通过编码查询
functiongetValue(loginname){
varloginname=document.f.loginname.value;
//获取XHR对像
varXHR=createXHR();
//alert(XHR);
varurl="user.do?
method=validate_User&users_name="+loginname+"&flag="+Math.random();
XHR.open("get",url,true);
varspan=document.getElementById("span");
//通过回调函数监听与服务端通信的状态onreadystatechangeXHR.onreadystatechange=function(){
if(XHR.readyState==4&&XHR.status==200){varflag=XHR.responseText;
if(flag>0){
span.innerHTML="
存在!
";
用!
";
}else{
span.innerHTML="
}
span.style.display="block";
}
};
XHR.send(null); }
functionvalidate_Pwd(){
varpassword=document.f.loginpwd.value;varpassword_1=document.f.loginpwd1.value;
varspan_pwd=document.getElementById("span_pwd");
";
if(password!
=password_1){
span_pwd.innerHTML="
";
}else{
span_pwd.innerHTML="
}
span_pwd.style.display="block";
}
functionvalidate_email(mail){
var_reg=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2