网上搜索了很多案例,但都和自己的需求不一样。
最终实现了下面的例子实现了对注册用户名的校验。采用的架构是servelet+jsp. ValidateName.java代码如下所示,并且采用userIsExist查找数据库看是否存在相同的用户名。
Java代码
1. package com.wuliu.test;
2. import java.io.IOException;
3. import java.io.PrintWriter;
4.
5. import javax.servlet.ServletException;
6. import javax.servlet.http.HttpServlet;
7. import javax.servlet.http.HttpServletRequest;
8. import javax.servlet.http.HttpServletResponse;
9. import com.wuliu.dao.LoginDAO;
10.
11.public class ValidateName extends HttpServlet {
12. public ValidateName(){
13. super();
14. }
15.
16. public void doGet(HttpServletRequest request, HttpServletResponse response)
17. throws ServletException, IOException {
18.
19. response.setContentType("text/html");
20. LoginDAO dao = new LoginDAO();
21. boolean flag = false;
22. String loginName=request.getParameter("loginName").toString();
23. flag = dao.userIsExist(loginName);
24. if(true == flag)
25. {
26. response.getWriter().write("true");//此值jquery可以接收到
27. }
28. }
29.
30.
31. public void doPost(HttpServletRequest request, HttpServletResponse response)
32. throws ServletException, IOException {
33.
34. this.doGet(request, response);
35.
36. }
37.
38.}
Java代码
1. public boolean userIsExist(String loginId){
2. System.out.println("Enter userIsExist");
3. this.dao = new DBConnection();
4. this.cn = this.dao.getConnection();
5. // 根据指定用户名查询用户信息
6. String sql = "select * from LoginTable where LoginId='"+loginId+"'";
7. System.out.println("logid:"+loginId);
8. try {
9. // 获取PreparedStatement对象
10. this.ps = this.cn.prepareStatement(sql);
11. // 对用户对象属性赋值
12. // ps.setString(1, loginId);
13. // 执行查询获取结果集
14. rs = this.ps.executeQuery();
15. // 判断结果集是否有效
16. // System.out.println("rs.next()= "+rs.next());
17. if(false == rs.next()){
18. // 如果无效则证明此用户名可用
19. System.out.println("用户名可用");
20. return true;
21. }
22. // 释放此 ResultSet 对象的数据库和 JDBC 资源
23. rs.close();
24. // 释放此 PreparedStatement 对象的数据库和 JDBC 资源
25. ps.close();
26. } catch (SQLException e) {
27. e.printStackTrace();
28. }finally{
29. // 关闭数据库连接
30. this.dao.closeConnection(cn);
31. }
32. System.out.println("用户名不可用");
33. return false;
34. }
由此就可以实现注册的时候,校验注册用户名是否已经存在的功能了。
JSP页面代码:
Html代码
1. <form action="register.do?action=add" onsubmit="return submessage(this)" method="post" name="form1">
2. <table border="1" width="500" cellspacing="1" cellpadding="3" align="left" bordercolor="#326598" >
3. <tr>
4. <td colspan="7" bgcolor="#FEA817">
5. [align=center]
6. <font color="#FFFFFF"><b>用户注册</b> </font>
7. [/align]
8. </td>
9. </tr>
10. <tr>
11. <td>
12. 用户名
13. </td>
14. <td>
15. <input name="uname" id="username" type="text" class="form_text" size="20" onblur="validatorloginName()">
16. </td>
17. </tr>
18.
19. <tr>
20. <td>
21. 登陆密码
22. </td>
23. <td>
24. <input type="password" name="upwd">
25. </td>
26. </tr>
27. <tr>
28. <td>
29. 确认密码
30. </td>
31. <td>
32. <input type="password" name="upwd1">
33. </td>
34. </tr>
35. <tr>
36. <td colspan="2" align="center">
37. <input type="submit" value="提交">
38. <input type="reset" value="重置">
39. </td>
40. </tr>
41. </table>
42. </form>
页面上添加的ajax组件:
Html代码
1. function validatorloginName(){
2. var loginName=document.getElementById("uname").value;
3. if(loginName == "")
4. {
5. alert("用户名不能为空!");
6. return;
7. }
8. $.ajax({
9. type: "POST",
10. url: "ValidateName",
11. data: "loginName="+loginName,
12. success: function(data){
13. if(data=="true"){
14. alert("恭喜您!用户名没有被使用!");
15.
16. }else{
17. alert("抱歉!用户名已存在!");
18. }
19. }
20. });
21. }
通过ajax将注册用户名发送到ValidateName.do进行校验。
web.xml里面配置如下:
Xml代码
1. <servlet>
2. <description>This is the description of my J2EE component</description>
3. <display-name>This is the display name of my J2EE component</display-name>
4. <servlet-name>ValidateName</servlet-name>
5. <servlet-class>com.wuliu.test.ValidateName</servlet-class>
6. </servlet>
7.
8. <servlet-mapping>
9. <servlet-name>ValidateName</servlet-name>
10. <url-pattern>/ValidateName</url-pattern>
11. </servlet-mapping>
ValidateName.java代码如下所示,并且采用userIsExist查找数据库看是否存在相同的用户名。
1. package com.wuliu.test;
2. import java.io.IOException;
3. import java.io.PrintWriter;
4.
5. import javax.servlet.ServletException;
6. import javax.servlet.http.HttpServlet;
7. import javax.servlet.http.HttpServletRequest;
8. import javax.servlet.http.HttpServletResponse;
9. import com.wuliu.dao.LoginDAO;
10.
11. public class ValidateName extends HttpServlet {
12. public ValidateName(){
13. super();
14. }
15.
16. public void doGet(HttpServletRequest request, HttpServletResponse response)
17. throws ServletException, IOException {
18.
19. response.setContentType("text/html");
20. LoginDAO dao = new LoginDAO();
21. boolean flag = false;
22. String loginName=request.getParameter("loginName").toString();
23. flag = dao.userIsExist(loginName);
24. if(true == flag)
25. {
26. response.getWriter().write("true");//此值jquery可以接收到
27. }
28. }
29.
30.
31. public void doPost(HttpServletRequest request, HttpServletResponse response)
32. throws ServletException, IOException {
33.
34. this.doGet(request, response);
35.
36. }
37.
38. }
1. public boolean userIsExist(String loginId){
2. System.out.println("Enter userIsExist");
3. this.dao = new DBConnection();
4. this.cn = this.dao.getConnection();
5. // 根据指定用户名查询用户信息
6. String sql = "select * from LoginTable where LoginId='"+loginId+"'";
7. System.out.println("logid:"+loginId);
8. try {
9. // 获取PreparedStatement对象
10. this.ps = this.cn.prepareStatement(sql);
11. // 对用户对象属性赋值
12. // ps.setString(1, loginId);
13. // 执行查询获取结果集
14. rs = this.ps.executeQuery();
15. // 判断结果集是否有效
16. // System.out.println("rs.next()= "+rs.next());
17. if(false == rs.next()){
18. // 如果无效则证明此用户名可用
19. System.out.println("用户名可用");
20. return true;
21. }
22. // 释放此 ResultSet 对象的数据库和 JDBC 资源
23. rs.close();
24. // 释放此 PreparedStatement 对象的数据库和 JDBC 资源
25. ps.close();
26. } catch (SQLException e) {
27. e.printStackTrace();
28. }finally{
29. // 关闭数据库连接
30. this.dao.closeConnection(cn);
31. }
32. System.out.println("用户名不可用");
33. return false;
34. }
由此就可以实现注册的时候,校验注册用户名是否已经存在的功能了。