开发电子商城,组长让我写登录注册界面和业务逻辑的实现。功能简单,要做好可花了我这个菜鸟不少功夫。
理顺下思路,用户在注册界面输入用户名(密码),当输入框blur的时候(就是失去焦点的时候)就在jquery中写该输入框的blur事件,这个事件里面要获得输入的用户名,然后用ajax将该用户名当做一个参数传给一个jsp文件判断是否重名,jsp就是用上java代码和数据库打交道,看看输入的用户名是否已经被注册过了,接着返回一个值,告诉ajax里面的success函数具体情况,然后根据具体情况用jquery实现提示消息。
思路大概就是这样,代码也根据思路贴出来,以后忘记了可以查查:
先给出jsp页面代码
<f:view>//因为用的是jsf+ejb+jpa+jboss
<h:form id="registerform">
<span class="label">用户名:</span><h:inputText id="reg_name" required="true" value="#{loginRegisterBean.name }"/>
</h:form>
</f:view>
1、输入用户名blur后,在jquery中处理:
$('#registerform\\:reg_name').blur(
function(event){
if($('#registerform\\:reg_name').val().length>0){//如果有输入
$.ajax({
type:"post",
url:"../login_register/checkName.jsp",//这个jsp文件用来实现检测,,这个文件下面已经贴出,其实不一定要用到jsp来检测,可以用php文件,servlet都可以的啦
data:"name="+$('#registerform\\:reg_name').val(), //其实就是个参数啦
//dataType:"text",
success:function(response){ //下面的代码是根据jsp页面处理后返回的信息来显示提醒消息
if(response==0){
$('#registerform\\:reg_name').addClass('error');
$("#nametip").html('<img src="../img/onError.jpg"/>此用户名已经被注册过');
}
else{
$("#nametip").html('<img src="../img/onCorrect.jpg"/>');
$('#registerform\\:reg_name').removeClass('error');
$('#registerform\\:reg_name').removeClass('focus');
}
}
});
}
else{//没有输入
$('#registerform\\:reg_name').removeClass('error');
$('#registerform\\:reg_name').removeClass('focus');
$('#nametip').html('');
}
}
);
jsp判断(由于用到了jsf,ejb部分所以就有了InformationManager(一个接口),该接口的具体实现方法在ejb工程中,BaseBean主要用来JNDI查找)
<%@ page language="java" import="java.util.*,cn.edu.xmu.myibuy.service.InformationManager,java.io.PrintWriter" pageEncoding="UTF-8"%>
<%@ page import="cn.edu.xmu.myibuy.view.BaseBean" %>
<%
request.setCharacterEncoding("UTF-8");
String name=request.getParameter("name");//获得输入的用户名
System.out.println("name="+name);
String result = "";
BaseBean ct = new BaseBean();
try{
InformationManager mm = ct.getInformationManager();//JNDI查找
result = mm.checkName(name);//InformationManager里面的方法,就是为了检查用户名是否重复的
System.out.println("result="+result);
}catch(Exception e){
e.printStackTrace();
}
//根据查找结果来给success那个函数返回消息
PrintWriter huidiao = response.getWriter();
if(result.equals("failed")){
huidiao.print(0);//failed
}
else{
huidiao.print(1);//ok
}
%>