Web---监听用户名注册技术-myAJax-隐藏帧

简介: Web---监听用户名注册技术-myAJax-隐藏帧

本来本篇博客在上个月就已经发表的,但由于我的疏忽,导致文章被彻底编辑不见,特来补上。

先用官方的语言解释一下AJAX:

AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

AJAX = 异步 JavaScript 和 XML。

AJAX 是一种用于创建快速动态网页的技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。

现在自己写一个仿AJAX的功能注册,实现注册时(网页不刷新与提交),提示用户名错误。

应用隐藏帧,监听事件,提交表单显示到iframe内联框架,调用父页面函数…。

reg.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>myAjax</title>
    <script type="text/javascript">
        function val(obj){
            var name = obj.value;//.value就是input中的name属性值
            if(name!=null&&name!=""){
                document.getElementById("regName").value=name;
                document.forms[1].submit();//让第二个表单提交
            }else{
                msg.innerHTML="请输入用户名!";
            }
        }
        function ajaxBack(res){
            if(res==1){
                parent.document.getElementById("msg").innerHTML="用户名已经存在,请更换用户名!";              
            }else{
                msg.innerHTML="恭喜,可以注册!";  
                //id也可以直接这样用            
            }
        }
    </script>
  </head>
  <body>
    <h2>演示myAjax---隐藏帧技术</h2>
    <br/>
    <h2>用户注册</h2>
    <form action="<%= request.getContextPath() %>/RegServlet" method="post">
        Name:<input type="text" name="name" onblur="val(this)"/>
        <label id="msg" style="color:red;"></label><br/>
        Password:<input type="password" name="pwd"/><br/>
        Tel:<input type="text" name="tel"/><br/>
        <input type="submit" value="注册">        
    </form>
    <form target="dataFrame" action="<%= request.getContextPath() %>/ValServlet" method="post">
        <input type="hidden" id="regName" name="name"/>
        <!--  type="hidden" 表示这个input是隐藏的,网页不可见. target 属性规定在何处打开 action URL。  -->
    </form> 
    <!-- iframe创建包含另外一个文档的内联框架(即行内框架)。 -->
    <iframe style="display:none" name="dataFrame" ></iframe>
  </body>
</html>

ValServlet

后台验证:

package cn.hncu.reg.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ValServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");
        String tel = request.getParameter("tel");
        if(name!=null && name.trim().length()>0 && name.startsWith("hncu") ){//正式项目,需要去后台校验数据的
            request.setAttribute("error", 0);//这是可以注册的
        }else{
            request.setAttribute("error", 1);//不能注册,该用户名已经存在!
        }
        //转发
        request.getRequestDispatcher("/jsps/regResult.jsp").forward(request, response);
    }
}

regResult.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
  <h2>这是结果页面</h2>
    错误代码:${error }
   <script type="text/javascript">
        var res ="<%=request.getAttribute("error")%>";
        /*
            在iframe框架中显示
        */
        /*
        if(res==1){
            parent.document.getElementById("msg").innerHTML="用户名已经存在,请更换用户名!";              
        }else{
            parent.document.getElementById("msg").innerHTML="恭喜,可以注册!";             
        }
        //parent.document--表示父页面的document对象
        //这种方式可以用,但不是很好。我们最好用下面那一句调用父页面的方法解决
        */
        parent.ajaxBack(res);
   </script>
  </body>
</html>

RegServlet

package cn.hncu.reg.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RegServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("name");
        String ped = request.getParameter("pwd");
        String tel = request.getParameter("tel");
        if(name.startsWith("hncu")){//如果是正式做,这里要去后台进行注册,这里简化了。
            out.print("注册成功!"+name);
        }else{
            out.print("注册失败:用户名必须以hncu开头");
        }
    }
}
目录
相关文章
|
20小时前
|
负载均衡 监控 算法
论负载均衡技术在Web系统中的应用
【11月更文挑战第4天】在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳定性。本文将结合我参与的一个实际软件项目,从项目概述、负载均衡算法原理以及实际应用三个方面,深入探讨负载均衡技术在Web系统中的应用。
9 2
|
11天前
|
人工智能 前端开发
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
|
12天前
|
存储 安全 数据库
后端技术在现代Web开发中的实践与创新
【10月更文挑战第13天】 本文将深入探讨后端技术在现代Web开发中的重要性,通过实际案例分析展示如何利用先进的后端技术提升用户体验和系统性能。我们将从基础架构设计、数据库优化、安全性保障等方面展开讨论,为读者提供清晰的指导和实用的技巧。无论是新手开发者还是经验丰富的技术人员,都能从中获得启发和帮助。
25 2
|
13天前
|
机器学习/深度学习 移动开发 JavaScript
Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示
Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示
79 0
|
1天前
|
监控 前端开发 JavaScript
前端技术探索:构建高效、可维护的Web应用
【10月更文挑战第23天】前端技术探索:构建高效、可维护的Web应用
5 0
|
15天前
|
存储 前端开发 JavaScript
CSS:现代Web设计的不同技术
【10月更文挑战第11天】 CSS:现代Web设计的不同技术
|
15天前
|
移动开发 前端开发 JavaScript
HTML与现代Web开发的不同技术
【10月更文挑战第11天】HTML与现代Web开发的不同技术
15 0
|
17天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
75 3
|
23天前
|
设计模式 测试技术 持续交付
开发复杂Web应用程序
【10月更文挑战第3天】开发复杂Web应用程序
30 2
|
1天前
|
JavaScript 前端开发 Java
SpringBoot_web开发-webjars&静态资源映射规则
https://www.91chuli.com/ 举例:jquery前端框架
8 0