Ajax之验证用户名是否可用 入门

前端之家收集整理的这篇文章主要介绍了Ajax之验证用户名是否可用 入门前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

2014年12月23日14:48:20 天气阴 心情极度低落

1 使用servelt实现

Jsp

validateUserName.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.min.js"></script>
<Meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>验证用户名是否可用</title>
<!-- 1. 导入JQuery库 2. 获取name="username"的节点:username 3. 为username添加change响应事件 3.1 获取username的value属性值,去除前后空格且不为空,准备发送Ajax请求 3.2 发送Ajax 请求检验username是否可用 3.3 在服务端直接返回一个html的片段:<font color="red">该用户名已经被使用</font> 3.4 在客户端浏览器把其直接添加到#message 的html中. -->
<script type="text/javascript"> $(function() { $(":input[name='username']").change(function() { var val = $(this).val(); val = $.trim(val); if (val != "") { var url="${pageContext.request.contextPath}/validateUserName"; var args = {"username":val,"time":new Date()}; $.post(url,args,function(data) { $("#message").html(data); }); } }); }) </script>
</head>
<body>
    <form method="post" action=""> 
        <input type="text" name="username"/><br />
        <div id="message"></div><br />
        <input type="submit" value="submit"/>
    </form>
</body>
</html>
<!-- 觉得有些地方需要注意一下的 ①、导入的juery库任何一个版本都可以的,我导入的jquery.min.js(系统环境window8.1、chrome 一定是可以) ②、获取name="username"的节点:username,通过id选择器来获取也是可以的 ③、添加change事件是$("").change(function() {} ); 这个与javascript有点不同 ④、var url="${pageContext.request.contextPath}/validateUserName";也可以是var url ="validateUserName"; ${ pageContext.request.contextPath}的值为JobProjectWeb及项目名,考虑到浏览器后退的动作,用第一种好点 ⑤、val = $.trim(val);$.post(url,function(){}) 虽然这些都不能自动提示,但是确实是存在的,这个跟java代码有点区别,js中就算有错,也是不会提示的,所以自己要多加小心 ⑥、var args = {"username":val,"time":new Date()}; 传参数的时候是要以键值对的形式来写,我写错的原因把new Date() 写成了new date(),坑嗲是没有报错,所以请求是提交不到后台的,我在上面浪费了很多的时间,希望这个错误能让我记一辈子 -->

Java

ValidateUserNameServlet.java

@WebServlet("/validateUserName")
public class ValidateUserNameServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
        List<String> userNameList = Arrays.asList("AAA","BBB","CCC");
        String username = request.getParameter("username");
        String result = null;
        if (userNameList.contains(username)) {
            result = "<font color='red'>用户名已经存在</font>";
        } else {
            result = "<font color='green'>用户可以使用</font>"; 
        }

        response.setContentType("text/html; charset=utf-8");
        response.getWriter().print(result);

    }

}

觉得需要注意的地方是 ①、因为Tomcat中涵盖了HttpServlet这个类了,所以是不用再添加额外的jar的(Apache
Tomcatv7.0\servlet-api.jar\javax.servlet.http.HttpServlet.class)
②、新建ValidateUserNameServlet.java文件,可以选Servlet类型;还有直接new
一个servlet是不用在web.xml下去配置servlet,因为已经通过注解的方式来说明servlet了@WebServlet(“/validateUserName”)
validateUserName
com.gditc.servlet.ValidateUserNameServlet

validateUserName
/validateUserName

2 ssh实现(数据库MysqL

jsp

employeeAdd.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<Meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>新增用户</title>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.min.js"></script>
<script type="text/javascript"> $(function() { $("#empname").change(function() { var empname = $(this).val(); empname = $.trim(empname); if (empname != null) { var url = "${pageContext.request.contextPath}/employee!validateEmpname.action"; var agrs = {"empname":empname,"date":<strong>new Date()</strong>}; $.post(url,agrs,function(data){ $("#message").html(data); }); } }); }) </script>
</head>
<body>
    <form method="post" action="employee!addEmps.action">
        <table border="1" cellpadding="10" cellspacing="0">
            <tr>
                <td>员工名:</td>
                <td><input name="employee.empname" type="text" id="empname"/></td>
            </tr>
            <tr>
                <td>雇佣日期:</td>
                <td><input name="employee.hiredate" type="text" id="hiredate"/></td>
            </tr>
            <tr>
                <td>薪水:</td>
                <td><input name="employee.salary" type="text" id="salary"/></td>
            </tr>
            <tr align="center">
                <td colspan="2"><button type="submit" value="提交">提交</button></td>
            </tr>
            <tr >
                <td colspan="2"><div id="message"></div></td>
            </tr>
        </table>    
    </form>
</body>
</html>

Java

EmployeeAction.java(实现ServletRequestAware)
/** * 验证用户名是否可用 * @return * @throws IOException */
public String validateEmpname() throws IOException {
    String empname = request.getParameter("empname");
    Employee employee = employeeService.getEmpsByName(empname);
    response.setCharacterEncoding("utf-8");
    if (employee != null) {
        response.getWriter().print("<font color='red'>该用户名已经存在</font>");
    } else {
        response.getWriter().print("<font color='green'>该用户名可用</font>");
    }
    return null;
}

EmployeeService.java
public List<Employee> getAllEmps() {
        return employeeDao.getAllEmp();
}
EmployeeDao.java
public Employee getEmpByName(String empname) {
        Session session = getSession();
        //hql语句注意事项:=:(等号冒号)前后不能有空格,否则报错
        Query query = session.createQuery("from Employee where empname=:name");
        query.setParameter("name",empname);
        Employee employee = (Employee) query.uniqueResult();
        return employee;
}
原文链接:https://www.f2er.com/ajax/161515.html

猜你在找的Ajax相关文章