struts使用Ajax验证用户名是否可用

news/2024/7/3 11:08:51 标签: struts

输入一个数据库里面已经存在的用户名:
这里写图片描述
如果数据库中不存在,则显示可用:
这里写图片描述
使用Ajax来完成此功能。
在上一一篇文章已经完成struts的配置之后,进行该功能的验证。

emp-input.jsp

<!-- 输入lastName的输入框 -->
<s:textfield name="lastName" label="LastName"></s:textfield>

ajax部分代码:

<script type="text/javascript" src="<%=request.getContextPath()%>/scripts/jquery-1.9.1.min.js"></script>
    <script type="text/javascript" >
        $(function(){
            $(":input[name=lastName]").change(function(){
               //提示name的值已经改变
                alert("name is changed!");
                var name=$(this).val();
                name=$.trim(name);
                var $this = $(this);
                 $this.nextAll("font").remove();
                if(name!=""){
                    //把当前节点后面的所有 font 兄弟节点删除
                    var url = "${pageContext.request.contextPath}/emp-isNameUsedd";
                    var args= {"lastName":name,"time":new Date()};
                    $.post(url,args,function(data){
                    alert("transfer...");
                        if(data == "1"){
                            $this.after("<font color='red'>名字不可用</font>");
                        }else if(data == "0"){
                            $this.after("<font color='green'>名字可用</font>");
                        }else{
                            alert("系统错误,请刷新,重试!");
                        }                   
                    });
                    }else{
                        alert("lastName 不能为空");
                        $(this).val("");
                        $this.focus();
                    }                
            });
        });
    </script>

先关的action配置:
struts.xml配置:

<action name="emp-*" class="employeeAction" method="{1}">
        <result name="list">/WEB-INF/views/emp-list.jsp</result>
        <!-- struts的ajax配置 -->
        <result type="stream" name="ajax-success">
              <param name="contentType">text/html</param>
              <param name="inputName">inputStream</param>
        </result>   
        <result name="INPUT">/WEB-INF/views/emp-input.jsp</result>
        <result name="success" type="redirect">/emp-list</result>
    </action>

Action部分:

/**
     * 验证用户名是否已经被使用
     */
    private String lastName;
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public String isNameUsedd(){
        //如果改名字被使用,返回1
        boolean flg = employeeService.isNameUsed(lastName);
        if(flg){
            try {
                inputStream = new ByteArrayInputStream("1".getBytes("UTF-8"));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }else {
            try {
                inputStream = new ByteArrayInputStream("0".getBytes("UTF-8"));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        return "ajax-success";
    }

service部分:

public boolean isNameUsed(String lastName) {
        Employee employee = employeeDao.getByName(lastName) ;
        //System.out.println("EmployeeService.isNameUsed..."+lastName);
        if (employee != null) {
            return true;
        }else {
            System.out.println("employeeService return false....");
            return false;
        }
    }

dao部分:

public Employee getByName(String lastName) {
        System.out.println("EmployeeDao.getByName..."+lastName);
        String hql = "from Employee e where e.lastName=?";
        Query query = getSession().createQuery(hql).setString(0, lastName);
        Employee employee = (Employee) query.uniqueResult();
        if (employee!=null) {
            return employee;
        }else {
            System.out.println("EmployeeDao...return null");
            return null;
        }
    }

总结

  1. 当lastName的内容改变的时候,使用jQuery获得该标签内容
  2. 并使用$.post(url,args,function(data){...})传送到actionisNameUsedd方法。
  3. action通过service和dao层的查询,判断该用户是否存在
  4. 如果存在使用struts的ajax方式,利用inputStream = new ByteArrayInputStream("[自定义标志位]".getBytes("UTF-8"));返回
  5. 返回到emp-input.jsp界面$.post(url,args,function(data){...})内判断用户是否存在,并在lastName旁边显示”该用户是[否]存在”

http://www.niftyadmin.cn/n/926988.html

相关文章

启动系统没有界面了_关于Windows系统卡死在启动界面问题的解答方法总结

最近也是闲来无趣&#xff0c;去MSDN装了个UK版win10系统。想着出国前能先适应适应这方面基础常识&#xff0c;好家伙&#xff0c;刚装完就给我干蒙了&#xff01;重启后直接再启动界面卡死了&#xff0c;就是图标转圈那个界面。于是我到网上寻找关于这类问题的各路解答&#x…

python 3.7下载安装scrapy_win10上python3.7安装scrapy1.5.1

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼安装完可以正常显示&#xff0c;所需插件也都安装上了&#xff0c;但是执行“scrapy bench”测试的时候报了如下的错误&#xff0c;有没有大神知道怎么回事的&#xff0c;在线等&#xff0c;挺急&#xff01;&#xff01;&#xff…

JAP映射关联关系

JAP映射关联关系 1. 单向多对一 Order(多)–>Customer(一) 关键点&#xff1a; Order里有一个Customer的成员 /***JoinColumn:来映射外键*ManyToOne:映射多对一的关系 */JoinColumn(name"customer_id")ManyToOne(fetchFetchType.LAZY)//使用懒加载public Cust…

会议主视觉_智慧京交会|解放人力 提高效率 联通研究院自主研发的工业视觉检测系统亮相京交会...

千龙网北京5月30日讯(记者 刘雯) 5月30日&#xff0c;2019年中国国际服务贸易交易会(以下简称“京交会”)分论坛活动之一--- “北京联通5G生态合作大会”在国家会议中心召开。联通研究院自主研发的工业视觉检测系统。千龙网记者 刘雯摄作为2019年京交会5G通讯服务独家提供商&am…

JPA的几个常用操作

测试几个JPA的常用操作&#xff0c;并和hibernate的Session作对比 直接上代码 以表格Customer为例 package com.bart.jpa.JapTest;import java.util.Date;import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistenc…

pychram 配置清华镜像源_为linux,R,python,conda配置国内源,让你快速下载大量国外软件

在国内很多情况下下载国外开发的软件或者国外托管的相关的代码库&#xff0c;依赖和软件包是最耗时最浪费精力的事情。好在国内有不少提供软件镜像的网站&#xff0c;使用国内的镜像源下载软件速度会非常快&#xff0c;能节省很多时间。国内的大大小小各大云服务器厂商都有自己…

priorityqueue 的 add和offer方法有区别吗_面试官:知道时间轮算法吗?在Netty和Kafka中如何应用的?...

最近看 Kafka 看到了时间轮算法&#xff0c;记得以前看 Netty 也看到过这玩意&#xff0c;没太过关注。今天就来看看时间轮到底是什么东西。为什么要用时间轮算法来实现延迟操作?延时操作 Java 不是提供了 Timer 么&#xff1f;还有 DelayQueue 配合线程池或者 ScheduledThrea…

JPA的二级缓存

配置persistence.xml <?xml version"1.0" encoding"UTF-8"?> <persistence version"2.0"xmlns"http://java.sun.com/xml/ns/persistence" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLoca…