1. 功能说明
我们的系统要求用户名不能有重复的,所以用户可以通过单击“验证用户名是否可用”来验证信息。这里也采用异步请求的。如图所示。
2. 构思实现
学习了前面的相关知识之后,我想这个功能就不会很难了。这里一样的,也是通过我们业务层来查询数据库,然后对于不同的查询结果做出不同的信息反馈。
3. 具体实现
1) jQuery的文件中,定义个方法来调用后台的ValidateNameServlet的类。
// 验证用户名是否可用
function validateName()
{
// 获取user文本框的值
var user = $.trim($("#user").val());
if (user == null || user == "")
{
alert("您还没有输入用户名!");
return false;
}
else
{
// 向validateName发送异步、POST请求
$.post("validateName", $('#user').serializeArray()
, null , "script");
}
}
2) ValidateNameServlet中主要就是查询数据库,然后对于不同的结果做出不同的信息反馈。
@WebServlet(urlPatterns="/validateName")
public class ValidateNameServlet extends BaseServlet
{
public void service(HttpServletRequest request
, HttpServletResponse response)throws IOException,ServletException
{
String name = request.getParameter("user");
response.setContentType("text/javascript;charset=gbk");
// 获取输出流
PrintWriter out = response.getWriter();
try
{
if (name != null)
{
if (as.validateName(name))
{
out.println("alert('恭喜您,该用户名还未使用,你可使用该用户名!');");
}
else
{
out.println("alert('对不起,该用户名已被他人占用!');");
out.println("$('#user').val('');");
}
}
else
{
out.println("alert('验证用户名出现异常,请更换用户名重试!');");
}
}
catch (AlbumException ex)
{
out.println("alert('" + ex.getMessage() + "请更换用户名重试!');");
}
}
}