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

转载请注明出处: 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

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

时间: 2024-09-30 03:33:05

Web---监听用户名注册技术-myAJax-隐藏帧的相关文章

java 鼠标和按键监听都注册时。鼠标拖曳会触发按键监听的Ctrl键是怎么回事?

问题描述 java 鼠标和按键监听都注册时.鼠标拖曳会触发按键监听的Ctrl键是怎么回事? 我写的一程序.添加了按键监听和鼠标监听,各执行一个功能.当我按住鼠标左或右键拖曳的时候,触发了按键监听那里的事件.于是我就在按键监听类里用System.out.print(e.getKeyCode),打印出来是0x11(ctrl的键码). 解决方案 你的问题不太清晰. 什么怎么回事?? 不知道你想获取啥信息 解决方案二: 按理说不会,看下是不是你启动程序的时候朝程序发了什么按键,完全用鼠标来启动你的程序.

界面-安卓关于监听输入法弹出与隐藏然后做相应的事情

问题描述 安卓关于监听输入法弹出与隐藏然后做相应的事情 当我开启登录界面,edittext自动获取焦点,输入法显示,输入法显示的时候我要做一些控件动画,当手动按下隐藏键盘的的时候,我又要恢复以前的状态.所以要监听输入发的状态,请大神们给点意见?谢谢! 解决方案 可以参考<android 软键盘的显示与隐藏问题的研究>http://www.2cto.com/kf/201405/298962.html 解决方案二: 这篇文章里介绍了 解决方案三: http://blog.csdn.net/lxk_

广播监听-动态注册监听网络变化没显示?

问题描述 动态注册监听网络变化没显示? API 19的是改变了网络状态没吐司.. 解决方案 iOS动态监听网络变化网络变化监听iOS监听网络状态的变化 解决方案二: 首先确保你在工程的清单文件里注册了这个BroadcastReceiver对象,你看看有吗,还有你看看是否要添加某些权限,具体的我忘了. 解决方案三: 确定一下所有配置没有问题吗?

Oracle静态监听注册详解

网上有很多关于oracle 监听静态注册的文章,但大多都是简单说说,并没有详细的例子,这里,将结合linux as4 下的oracle 10gR2.0.1 举一个具体的例子 1.在 $ORACLE_HOME/network/admin/listener.ora 文件中加入一个静态注册的节点 [oracle@prudent oracle]$ cd $ORACLE_HOME/network/admin [oracle@prudent admin]$ vi listener.ora # listene

数据中心面对的网络监听技术

数据中心里最宝贵的就是数据,这些数据里隐含着很多私有的.机密信息,小到个人隐私,大到国家安全,所以保护数据是数据中心最为关键的任务,数据一旦被窃取被泄露,给数据中心带来的损失无法估计.然而,这些数据在数据中心里以及外部并不是静止的,躺在存储硬盘里睡大觉,而是通过网络在不断传递和变化着,网络成为数据传递的最为重要通道,无论是数据中心内部还是外部.对网络进行监听,就可以掌握数据的基本信息和特征,听起来网络监听这个词语贬义成分居多.而实际上,对网络监听对于数据中心管理非常重要.不过的确是凡事都有其两面

Oracle 静态监听注册详解

Oracle 静态监听注册详解        网上有很多关于oracle 监听静态注册的文章,但大多都是简单说说,并没有详细的例子,这里,将结合linux as4 下的oracle 10gR2.0.1 举一个具体的例子 1.在 $ORACLE_HOME/network/admin/listener.ora 文件中加入一个静态注册的节点 [oracle@prudent oracle]$ cd $ORACLE_HOME/network/admin [oracle@prudent admin]$ vi

请问下安卓接收消息,不用广播用事件监听怎么实现啊?demo里有例子吗?

问题描述 请问下安卓接收消息,不用广播用事件监听怎么实现啊?demo里有例子吗? 解决方案 看下ChatDemoUI的DemoHXSDKHelper类,MainActivity类,以及chatActivity类,都有onEvent方法,3.0demo的话看下DemoHeleper类解决方案二:http://docs.easemob.com/doku.php?id=start:200androidcleintintegration:40broadcastreceiver#回调监听事件注册

Android监听Home键实例详解_Android

本文实例讲述了Android监听Home键的方法.分享给大家供大家参考,具体如下: 将到android中Home键的监听,很多人第一反应时重写相应Activity的onKeyDown()方法,监听当按下的键的keyCode为KEYCODE_HOME时,进行自己的相应的处理.如: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_HOME) { stop

Android监听Home键和Back键的区别介绍_Android

一:Android 中Home键监听和Back键监听的区别: (1).在Android中,当按下Home键的时候,默认情况下Stop前台的Activity,即Activity设置成停止状态[onStop()],而不是销毁状态[onDestory()].如果再次启动该Activity,不是调用onCreate()方法,而是调用onSavedInstanceState方法.则是从onRestart()开始-onStart()-onResume(). (2).当按下back键则不同,back键默认fi