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

简介: 转载请注明出处: http://blog.csdn.net/qq_26525215本文源自【大学之旅_谙忆的博客】本来本篇博客在上个月就已经发表的,但由于我的疏忽,导致文章被彻底编辑不见,特来补上。

转载请注明出处: http://blog.csdn.net/qq_26525215

本文源自大学之旅_谙忆的博客

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

先用官方的语言解释一下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开头");
        }


    }

}

转载请注明出处: http://blog.csdn.net/qq_26525215

本文源自大学之旅_谙忆的博客

目录
相关文章
|
6月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
617 1
|
9月前
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。该方案设计目标是实现通用性,适用于各种网络架构和业务场景。
276 1
|
10月前
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。
366 7
|
人工智能 安全 物联网
区块链技术的未来展望:去中心化金融(DeFi)与Web 3.0的融合
区块链技术的未来展望:去中心化金融(DeFi)与Web 3.0的融合
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
359 6
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
345 3
|
缓存 安全 前端开发
构建高效Web应用的五大关键技术
【10月更文挑战第42天】在数字化浪潮中,Web应用已成为企业与用户互动的重要桥梁。本文将深入探讨提升Web应用性能和用户体验的五项核心技术,包括前端优化、后端架构设计、数据库管理、安全性增强以及API开发的最佳实践。通过这些技术的应用,开发者可以构建出更快、更稳定且更安全的Web应用,满足现代网络环境的需求。
|
5月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
467 4
|
9月前
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
|
9月前
|
JavaScript 前端开发 API
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
本文深入解析了鸿蒙开发中Web加载完成时延的优化技巧,结合官方案例与实际代码,助你提升性能。核心内容包括:使用DevEco Profiler和DevTools定位瓶颈、四大优化方向(资源合并、接口预取、图片懒加载、任务拆解)及高频手段总结。同时提供性能优化黄金准则,如首屏资源控制在300KB内、关键接口响应≤200ms等,帮助开发者实现丝般流畅体验。