zoukankan      html  css  js  c++  java
  • AJAX,JSON用户名校验

    效果

    开发结构

    1,src部分有两个包dao和servlet

    1.1dao包下有两个数据库工具类文件

    SqlHelper.java

      1 package org.guangsoft.dao;
      2 
      3 import java.io.InputStream;
      4 import java.sql.CallableStatement;
      5 import java.sql.Connection;
      6 import java.sql.DriverManager;
      7 import java.sql.PreparedStatement;
      8 import java.sql.ResultSet;
      9 import java.sql.Statement;
     10 import java.util.Properties;
     11 /**
     12  *
     13  * @author guanghe
     14  */
     15 public class SqlHelper
     16 {
     17     //定义连接资源
     18     private static Connection ct = null;
     19     private static PreparedStatement ps = null;
     20     private static CallableStatement cs = null;
     21     private static ResultSet rs = null;
     22 
     23     //定义配置参数
     24     private static String driver = null;
     25     private static String url = null;
     26     private static String username = null;
     27     private static String password = null;
     28 
     29     private static Properties pp = null;
     30     private static InputStream is = null;
     31 
     32     //读取配置参数,加载驱动
     33     static
     34     {
     35         try
     36         {
     37             pp = new Properties();
     38             is = SqlHelper.class.getClassLoader().getResourceAsStream("org/guangsoft/dao/db.properties");
     39             pp.load(is);
     40             driver = pp.getProperty("driver");
     41             url = pp.getProperty("url");
     42             username = pp.getProperty("username");
     43             password = pp.getProperty("password");
     44             Class.forName(driver);
     45         }
     46         catch (Exception e)
     47         {
     48             e.printStackTrace();
     49             System.exit(0);
     50         }
     51         finally
     52         {
     53             try
     54             {
     55                 is.close();
     56             }
     57             catch (Exception e)
     58             {
     59                 e.printStackTrace();
     60             }
     61             is = null;
     62         }
     63     }
     64 
     65     //获取连接
     66     public static Connection getConnection()
     67     {
     68         try
     69         {
     70             ct = DriverManager.getConnection(url, username, password);
     71         }
     72         catch (Exception e)
     73         {
     74             e.printStackTrace();
     75         }
     76         return ct;
     77     }
     78     
     79     public static PreparedStatement getPs()
     80     {
     81         return ps;
     82     }
     83     
     84     public static ResultSet getRs()
     85     {
     86         return rs;
     87     }
     88 
     89     //执行DQL查询
     90     public static ResultSet executeQuery(String sql, String[] parameters)
     91     {
     92         try
     93         {
     94             ct = getConnection();
     95             ps = ct.prepareStatement(sql);
     96             if (parameters != null)
     97             {
     98                 for (int i = 0; i < parameters.length; i++)
     99                 {
    100                     ps.setString(i + 1, parameters[i]);
    101                 }
    102             }
    103             rs = ps.executeQuery();
    104         }
    105         catch (Exception e)
    106         {
    107             e.printStackTrace();
    108             throw new RuntimeException(e.getMessage());
    109         }
    110         return rs;
    111     }
    112 
    113     //执行DML更新
    114     public static int executeUpdate(String sql, String[] parameters)
    115     {
    116         try
    117         {
    118             ct = getConnection();
    119             ps = ct.prepareStatement(sql);
    120             if (parameters != null)
    121             {
    122                 for (int i = 0; i < parameters.length; i++)
    123                 {
    124                     ps.setString(i + 1, parameters[i]);
    125                 }
    126             }
    127             return ps.executeUpdate();
    128         }
    129         catch (Exception e)
    130         {
    131             e.printStackTrace();
    132             throw new RuntimeException(e.getMessage());
    133         }
    134         finally
    135         {
    136             close(ct, ps, rs);
    137         }
    138     }
    139 
    140     //执行DML批处理
    141     public static int executeUpdate2(String[] sql, String[][] parameters)
    142     {
    143         try
    144         {
    145             ct = getConnection();
    146             ct.setAutoCommit(false);
    147 
    148             for (int i = 0; i < sql.length; i++)
    149             {
    150 
    151                 if (null != parameters[i])
    152                 {
    153                     ps = ct.prepareStatement(sql[i]);
    154                     for (int j = 0; j < parameters[i].length; j++)
    155                     {
    156                         ps.setString(j + 1, parameters[i][j]);
    157                     }
    158                     return ps.executeUpdate();
    159                 }
    160 
    161             }
    162             ct.commit();
    163         }
    164         catch (Exception e)
    165         {
    166             e.printStackTrace();
    167             try
    168             {
    169                 ct.rollback();
    170             }
    171             catch (Exception e1)
    172             {
    173                 e1.printStackTrace();
    174             }
    175             throw new RuntimeException(e.getMessage());
    176         }
    177         finally
    178         {
    179             close(ct, ps, rs);
    180         }
    181         return 0;
    182     }
    183     
    184     //执行存储过程
    185     public static CallableStatement callPro1(String sql, String[] parameters)
    186     {
    187         try
    188         {
    189             ct = getConnection();
    190             cs = ct.prepareCall(sql);
    191             if (parameters != null)
    192             {
    193                 for (int i = 0; i < parameters.length; i++)
    194                 {
    195                     cs.setObject(i + 1, parameters[i]);
    196                 }
    197             }
    198             cs.execute();
    199         }
    200         catch (Exception e)
    201         {
    202             e.printStackTrace();
    203             throw new RuntimeException(e.getMessage());
    204         }
    205         finally
    206         {
    207             close(ct, cs, rs);
    208         }
    209         return cs;
    210     }
    211 
    212     //执行高级存储过程
    213     public static CallableStatement callPro2(String sql, String[] inparameters,
    214             Integer[] outparameters)
    215     {
    216         try
    217         {
    218             ct = getConnection();
    219             cs = ct.prepareCall(sql);
    220             if (inparameters != null)
    221             {
    222                 for (int i = 0; i < inparameters.length; i++)
    223                 {
    224                     cs.setObject(i + 1, inparameters[i]);
    225                 }
    226             }
    227             if (outparameters != null)
    228             {
    229                 for (int i = 0; i < outparameters.length; i++)
    230                 {
    231                     cs.registerOutParameter(inparameters.length + 1 + i, outparameters[i]);
    232                 }
    233             }
    234             cs.execute();
    235         }
    236         catch (Exception e)
    237         {
    238             e.printStackTrace();
    239             throw new RuntimeException(e.getMessage());
    240         }
    241         finally
    242         {
    243             close(ct, cs, rs);
    244         }
    245         return cs;
    246     }
    247     
    248     //关闭所有资源连接
    249     public static void close(Connection ct, Statement ps, ResultSet rs)
    250     {
    251         if (rs != null)
    252         {
    253             try
    254             {
    255                 rs.close();
    256             }
    257             catch (Exception e)
    258             {
    259                 e.printStackTrace();
    260             }
    261             rs = null;
    262         }
    263         if (ps != null)
    264         {
    265             try
    266             {
    267                 ps.close();
    268             }
    269             catch (Exception e)
    270             {
    271                 e.printStackTrace();
    272             }
    273             ps = null;
    274         }
    275         if (null != ct)
    276         {
    277             try
    278             {
    279                 ct.close();
    280             }
    281             catch (Exception e)
    282             {
    283                 e.printStackTrace();
    284             }
    285             ct = null;
    286         }
    287     }
    288 }

    db.properties

    1 driver = com.mysql.jdbc.Driver
    2 url = jdbc:mysql://localhost:3306/student
    3 username = root
    4 password =root

    1.2servlet包下有一个文件Servlet

    CheckUname.java

     1 package org.guangsoft.servlet;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 import java.sql.Connection;
     6 import java.sql.PreparedStatement;
     7 import java.sql.ResultSet;
     8 
     9 import javax.servlet.ServletException;
    10 import javax.servlet.http.HttpServlet;
    11 import javax.servlet.http.HttpServletRequest;
    12 import javax.servlet.http.HttpServletResponse;
    13 
    14 import org.guangsoft.dao.SqlHelper;
    15 
    16 public class CheckUname extends HttpServlet
    17 {
    18 
    19     public void doGet(HttpServletRequest request, HttpServletResponse response)
    20             throws ServletException, IOException
    21     {
    22         processRequest(request, response);
    23     }
    24 
    25     public void doPost(HttpServletRequest request, HttpServletResponse response)
    26             throws ServletException, IOException
    27     {
    28         processRequest(request, response);
    29     }
    30 
    31     protected void processRequest(HttpServletRequest request,
    32             HttpServletResponse response) throws ServletException, IOException
    33     {
    34         request.setCharacterEncoding("UTF-8");
    35         response.setCharacterEncoding("UTF-8");
    36         response.setContentType("text/html; charset=utf-8");
    37         PrintWriter out = response.getWriter();
    38         String username = request.getParameter("username");
    39         Connection connection = null;
    40         PreparedStatement prepareStatement = null;
    41         ResultSet resultSet = null;
    42         try
    43         {
    44             connection = SqlHelper.getConnection();
    45             String sql = "select * from user where username=?";
    46             prepareStatement = connection.prepareStatement(sql);
    47             prepareStatement.setString(1,username);
    48             resultSet = prepareStatement.executeQuery();
    49             while(resultSet.next())
    50             {
    51                 response.getWriter().print("true");
    52                 return;
    53             }
    54             response.getWriter().print("false");
    55         }
    56         catch(Exception e)
    57         {
    58             e.printStackTrace();
    59         }
    60         finally
    61         {
    62             SqlHelper.close(connection, prepareStatement, resultSet);
    63         }
    64     }
    65 
    66 }

    2,webRoot部分有两个文件js工具类和jsp页面

    2.1 js工具类封装了操作json数据的函数

    AjaxUtil.js

     1 function sendAjaxReq(method,url,param,fun200,fun404,fun500)
     2       {
     3           var req;
     4           if(window.XMLHttpRequest)
     5           {
     6               req = new XMLHttpRequest();    
     7           }
     8           else if(window.ActiveXObject)
     9           {
    10               req = new ActiveXObject("Msxml2.XMLHTTP");
    11     }
    12     req.open(method,url);
    13     req.onreadystatechange = function()
    14     {
    15         if(req.readyState == 4)
    16         {
    17             if(req.status == 200)
    18             {
    19                 if(fun200)
    20                 {
    21                       fun200(req.responseText);
    22                 }
    23             }
    24             else if(req.status == 404)
    25             {
    26                 if(fun404)
    27                 {
    28                     fun404();
    29                 }
    30             }
    31             else if(req.status == 500)
    32             {
    33                 if(fun500)
    34                 {
    35                     fun500();
    36                 }
    37             }
    38         }
    39     }
    40     if(method.toUpperCase() == "GET")
    41     {
    42         req.send(null);
    43     }
    44     else if(method.toUpperCase() == "POST")
    45     {
    46         req.setRequestHeader("context-type", "application/x-www-form-urlencoded");
    47         req.send(param);
    48     }
    49 }

    2.2 jsp页面是显示页面

    index.jsp

     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     2 <%
     3 String path = request.getContextPath();
     4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     5 %>
     6 
     7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     8 <html>
     9   <head>
    10     <base href="<%=basePath%>">
    11     <style>
    12         .success
    13         {
    14             color:green;
    15         }
    16         .fail
    17         {
    18             color:red;
    19         }
    20     </style>
    21     <script src="/ajax/js/AjaxUtil.js"></script>
    22     <script>
    23         function checkUname(unameValue)
    24         {
    25             if(unameValue != "")
    26             {
    27                 sendAjaxReq("get","checkUname?username="+unameValue,null,function(data)
    28                 {
    29                     if(eval(data))
    30                     {
    31                         document.getElementById("unameSpan").innerHTML="该用户名已被注册!";
    32                         document.getElementById("unameSpan").className="fail";                
    33                     }
    34                     else
    35                     {
    36                         document.getElementById("unameSpan").innerHTML="恭喜,可以注册!";
    37                         document.getElementById("unameSpan").className="success";
    38                     }
    39                 });
    40             }
    41         }
    42         
    43     </script>
    44   </head>
    45   
    46   <body>
    47       <form method="get" action="/ajax/checkUname">
    48           <table>
    49               <tr>
    50                   <td>用户名:</td>
    51                   <td>
    52                       <input type="text" name="username" id="username" 
    53                       onblur="checkUname(this.value);" 
    54                       onkeypress="document.getElementById('unameSpan').innerHTML='';" />
    55                   </td>
    56                   <td><span name="unameSpan" id="unameSpan"></span></td>
    57               </tr>
    58               <tr>
    59                   <td>密 码:</td>
    60                   <td><input type="password" name="password" /></td>
    61               </tr>
    62           </table>
    63           <input type="submit" value="提交">
    64       </form>
    65       
    66   </body>
    67 </html>
  • 相关阅读:
    2020去奔跑
    2020前两个月学习心得
    2020年1_2月寒假学习心得
    寒假中期考核个人总结
    Numpy、Matplotlib和pandas学习路线引导
    Python学习路线引导-Python入门基础
    2019在路上
    2020/11/28助教一周小结(第九周)
    2020/11/3助教一周小结(第五周)
    2020/10/25助教一周小结(第四周)
  • 原文地址:https://www.cnblogs.com/guanghe/p/5994305.html
Copyright © 2011-2022 走看看