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

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

Web---监听用户名注册技术-myAJax-隐藏帧相关推荐

  1. 【网络与系统安全实验】网络监听及防御技术

    网络监听及防御技术 网络监听概述 基础知识 网络监听的概念 网络监听技术又叫做网络嗅探技术,顾名思义这是一种在他方未察觉的情况下捕获其通信报文或通信内容的技术. 在网络安全领域,网络监听技术对于网络攻 ...

  2. Windows下网络数据报的监听和拦截技术

    Windows下网络数据报的监听和拦截技术是一个比较古老的话题,应用也很广泛,例如 防火墙等等.这篇小文只是对该技术的一个总结,没有新技术,高手免看:) 要监听和拦截Windows下的数据报,基本可以 ...

  3. oracle监听静态注册,oracle监听器动态注册于静态注册的区别

    1, oracle 10g 用netca方式建立的都默认为动态注册方式 2,如果想改为静态注册的方式则在listener.ora 中加入如下内容即可 SID_LIST_LISTENER = (SID_ ...

  4. 【配置DATAGUARD 时的监听静态注册不成功】 问题解决

    问题: 我的配置如下: [oracle@localhost admin]$ rman target sys/oracle@stbdb Recovery Manager: Release 11.2.0. ...

  5. oracle没有注册mdsdora,oracle rac一个节点服务注册不上,必须重启监听才能注册上,各位大神帮忙看一下...

    环境是windows 2008 + oracle 11.2.0.4 rac其中rac1节点服务总是注册不上,rac2节点正常 --1.查看监听状态 C:\Users\Administrator> ...

  6. java 注册监听_java注册监听模型

    Java的Selector调用操作系统层的Multiplexing IO(多路复用模型),本身只是个API调用.而多路复用是这个样子的: I/O multiplexing 这里面的 multiplex ...

  7. uni-app监听窗口尺寸变化事件和隐藏键盘

    文章目录 监听窗口尺寸变化 uni.onWindowResize(CALLBACK) uni.offWindowResize(CALLBACK) 隐藏软键盘 uni.hideKeyboard() un ...

  8. js IntersectionObserver监听元素的显示与隐藏,图片懒加载

    IntersectionObserver监听显隐,监听元素在可视窗口中展示的比例,1:完全展示出来了,0:完全遮挡了,opacity和visibility控制的显隐是不会触发的.该api常用于图片懒加 ...

  9. jmeter web监听结果_jmeter使用总结

    1 jmeter简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 可以用于测试静态和 ...

最新文章

  1. aws fargate_我如何在AWS Fargate上部署#100DaysOfCloud Twitter Bot
  2. Linux-HA开源软件Heartbeat(概念篇)
  3. 在IDEA 中用maven创建web项目
  4. CSP认证201709-1 打酱油[C++题解]:贪心
  5. kotlin集合操作符——顺序操作符
  6. hive mysql远程模式_Hive远程模式启动
  7. DNS的一些相关基础知识
  8. 理解允许定位,音频,网络电话..
  9. PostFix postqueue 指令
  10. OneNote for win10防止英文自动切换字体工具
  11. Swagger界面丑、功能弱怎么破?用Postman增强下就给力了!
  12. seata的部署与微服务集成(包含多集群异地容灾配置)
  13. android开发常用工具类、高仿客户端、附近厕所、验证码助手、相机图片处理等源码...
  14. BGP(Border Gatreway Protcol)边界网关路由协议
  15. matlab差商chaS,牛顿插值MATLAB算法.doc
  16. Exception 异常
  17. Git同步原始repo的改动到fock的repo
  18. java 标签云_网站标签云(TagCloud)的实现
  19. 微信X5调试,可以在谷歌浏览器调试
  20. SVPWM与SYPWM谐波注入脉宽调制实现与对比

热门文章

  1. 7-7 公路村村通(题解)
  2. 南大通用8a产品工具orato8a
  3. Wolfram Alpha推知识型计算引擎免费版
  4. 通用型简单latex模板&表格制作
  5. 信息安全行业从业者----鱼龙混杂也藏龙卧虎
  6. 【数据分析】洞察业务指标体系(in)
  7. 训练过程曲线分析:acc/loss/val_acc/val_loss
  8. CSS样式表引入的三种方式,及优先级顺序
  9. 什么 语言适合写3D游戏
  10. springcloud 启动 Run Dashboard