今天做的是注册时候用jquery的ajax检测用户名是否被注册。
因为用的是idea,之前一直好用的是eclipse,不太熟悉,遇到了很多的错误,本身是没有难度,但是时间都花在了解决错误上,例如,使用idea,找不到servle路劲等。
反正费了很大的力气各种测试,还是无果,结果最后是idea配置的问题。
register.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jquery用户注册验证</title> <script src="./js/jquery.min.js"></script> </head> <body> <input type="text" id="username" placeholder="用户名"/><span id="tip"></span> <br> <input type="password" placeholder="密码"/> </body> <script> $().ready(function () { $("#username").blur(function () { var username = $("#username").val(); alert(username); $.post("MessageServlet?method=register",{"username":username},function (data) { $("#tip").empty(); alert(data); //切记传回来的数据需要清楚空格 if (data.trim()=="true"){ $("#tip").html("恭喜您,可以使用").css("color","green"); }else{ $("#tip").html("用户名已经被注册").css("color","red"); }; },"text") }); }); </script> </html>
MessageServlet.java
package Servlet; import Service.MessageService; import java.io.IOException; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @WebServlet("/MessageServlet") public class MessageServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * 方法选择 */ protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); String method = req.getParameter("method"); if ("register".equals(method)) { try { register(req, resp); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } // 登录 private void register(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException, SQLException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); // 获取数据 String username = req.getParameter("username"); String sql = "select * from user where username = '"+username+"'"; System.out.println(sql); System.out.println(username); boolean data = MessageService.login(sql); resp.getWriter().println(data); } }
MessageService.java
package Service; import Connect.Connect; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; //服务层 public class MessageService { public static boolean login(String sql) { Connection conn = Connect.getConn(); Statement st = null; ResultSet rs = null; boolean row = true; try { st = conn.createStatement(); rs = st.executeQuery(sql); if (rs.next()) { row = false; } } catch (Exception e) { // TODO: handle exception } return row; } // public static List<fcjj> getfcjj(String sql) throws SQLException { // // 查询语句的执行结果为一个表格,即多个学生对象的集合,所有可以创建数组列表对象来存储 // List<fcjj> lst = new ArrayList<fcjj>(); // // 获取连接对象 // Connection conn = Connect.getConn(); // try { // // 连接对象conn调用createStatement()方法,创建一个执行SQL语句的对象st // Statement st = conn.createStatement(); // // 执行SQL语句的对象st调用executeQuery()方法,执行查询语句,将查询到的结果返回到一个结果集中 // ResultSet rs = st.executeQuery(sql); // // 遍历结果集对象 // while (rs.next()) { // fcjj mes = new fcjj(); // mes.setName(rs.getString("name")); // mes.setPassword(rs.getString("password")); // mes.setAgentaddress(rs.getString("agentaddress")); // mes.setPhone(rs.getString("phone")); // lst.add(mes); // } // } catch (Exception e) { // System.out.println(e.getMessage()); // } finally { // // 资源使用完之后,如果没有关闭,则需要关闭 // if (conn != null) { // conn.close(); // } // } // return lst; // } }
Connect.java
package Connect; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Connect { public static Connection getConn() { // 第一步:加载驱动类,如果有异常则抛出异常或者使用try..catch..语句处理 try { Class.forName("com.mysql.cj.jdbc.Driver"); System.out.println("驱动类加载成功"); } catch (ClassNotFoundException e) { e.printStackTrace(); System.out.println("驱动类加载失败"); // 这里可能报错:ClassNotFoundException // 错误原因:可能是驱动类的名称拼写错误,也可能是jar包没导入 } // 第二步:获取连接对象 String url = "jdbc:mysql://localhost:3306/zhengji?useSSL=true&serverTimezone=GMT"; String username = "root"; String password = "ly0825"; Connection conn = null; try { conn = DriverManager.getConnection(url, username, password); System.out.println("连接对象获取成功"); } catch (SQLException e) { e.printStackTrace(); System.out.println("连接对象获取失败"); } // 返回一个连接对象 return conn; } public static void close(Connection conn, Statement st, ResultSet rs) { if (rs != null) { try { rs.close(); rs = null; } catch (Exception e) { e.printStackTrace(); } } if (st != null) { try { st.close(); st = null; } catch (Exception e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); conn = null; } catch (Exception e) { e.printStackTrace(); } } } }