1:register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>register.jsp</title>
<script type="text/javascript">
var xhr;
function checkUsername() {
//获取标签
var checkResult = document.getElementById("checkResult");
checkResult.innerHTML = "<font color='red'>正在检测用户名...</font>";
//获取用户输入的用户名
var username = document.getElementById("username").value;
//创建浏览器中可以发送异步请求的对象xhr,不同浏览器的创建方式不同
if(window.ActiveXObject){//IE浏览器
xhr = new ActiveXObject("Microsoft.XMLHttp");
}else if(window.XMLHttpRequest){//不是IE浏览器
xhr = new XMLHttpRequest();
} //事件监听(一旦发现状态发生变化,就执行函数handleRequest,得到服务器响应完成页面局部刷新)
xhr.onreadystatechange = handleRequest;
/*用GET方式发送请求
xhr.open("GET","UserServlet?f=1&username="+username,true);
xhr.send(null); */ //POST发送请求//自己创建的UserServlet
xhr.open("POST","UserServlet",true);
//设置POST请求的头
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//发送请求数据
xhr.send("f=1&username="+username);
} //得到服务器响应,完成页面局部刷新
function handleRequest() {
//获取标签
var checkResult = document.getElementById("checkResult");
if(xhr.readyState == 4){
if(xhr.status == 200){
checkResult.innerHTML = "<font color='red'>"+xhr.responseText+"</font>";
}else{
alert("有错"+xhr.status+":"+xhr.statusText);
}
}
}
</script>
</head>
<body> <form action="/ajax_1/UserServlet?f=1" method="post">
用户名:<input type="text" id="username" name="username" onblur="checkUsername();"><label id="checkResult"></label><br>
<input type="password" id="password" name="password"><br>
<input type="submit" value="注册">
</form>
</body>
</html>

2:UserServlet.java

package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理响应中文乱码
response.setContentType("text/html;charset=UTF-8"); Integer f = Integer.parseInt(request.getParameter("f"));
switch (f) {
case 1:
this.checkUsername(request, response);
break;
case 2:
this.register(request, response);
break;
}
} //检测用户名是否重复
protected void checkUsername(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter();
//获取从前台页面传来的username
String username = request.getParameter("username"); //简化处理逻辑(本应该去数据库查询)
if("zhangsan".equals(username)){
out.print("用户名"+username+"已经有人注册,请选择一个新的用户名");
}else{
out.print("恭喜您"+username+"可以使用");
} out.close();
} //用户注册
protected void register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out =response.getWriter();
String username = request.getParameter("username"); //简化处理逻辑(本应该去数据库添加)
if("zhangsan".equals(username)){
out.print("用户名"+username+"已经有人注册,请选择一个新的用户名");
}else{
//数据库添加...
out.print("恭喜您"+username+"注册成功");
} out.close();
} }

3:web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>servlet.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/UserServlet</url-pattern>
</servlet-mapping>
</web-app>

--------------------------------------------------------------------------------------------------------------------------------

ajax基础------备忘的更多相关文章

  1. UITextView -- 基础备忘

    UITextView 这篇文章只涉及到基本的使用,日后会写一些关于结合TextKit的备忘 基本属性 let screenSize = UIScreen.mainScreen().bounds.siz ...

  2. jquery中的ajax方法(备忘)

    参考:https://www.cnblogs.com/tylerdonet/p/3520862.html w3school:http://www.w3school.com.cn/jquery/ajax ...

  3. scala基础备忘

    声明一个变量 声明一个常量 显式指定类型 定义一个main函数 package org.admln.scala class HelloScala { } object HelloScala { def ...

  4. Java Socket基础[备忘]

    1.服务端----Server.java import javax.swing.*; import java.io.*; import java.net.*; import java.awt.*; i ...

  5. javaweb基础备忘

    Request对象的主要方法有哪些 setAttribute(String name,Object):设置名字为name的request 的参数值 getAttribute(String name): ...

  6. Linux基础之常用基本命令备忘

    Linux基础之常用基本命令备忘 PWD   查询当前所在Linux上的位置 /         根目录 CD(change directory)切换目录  语法 CD /(注意添加空格)   LS ...

  7. AngularJS之备忘与诀窍

    译自:<angularjs> 备忘与诀窍 目前为止,之前的章节已经覆盖了Angular所有功能结构中的大多数,包括指令,服务,控制器,资源以及其它内容.但是我们知道有时候仅仅阅读是不够的. ...

  8. Javascript备忘模式

    使用备忘模式,利用了函数的自定义属性,先看一个例子 var test = function (){} test.myAttr = "attr"; 这样,就给test加上了一个自定义 ...

  9. Nmap备忘单:从探索到漏洞利用(Part 4)

    这是我们的Nmap备忘单的第四部分(Part 1. Part 2. Part 3).本文中我们将讨论更多东西关于扫描防火墙,IDS / IPS 逃逸,Web服务器渗透测试等.在此之前,我们应该了解一下 ...

随机推荐

  1. Istio技术与实践05:如何用istio实现流量管理

    Istio是Google继Kubernetes之后的又一开源力作,主要参与的公司包括Google,IBM,Lyft等,它提供了完整的非侵入式的微服务治理解决方案,解决微服务的管理.网络连接以及安全管理 ...

  2. META-INF/MANIFEST.MF介绍

    META-INF文件夹相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序.扩展程序.类加载器和服务.这个文件夹和其中的 MANIFEST.MF文件,在用jar打包时 ...

  3. C++STL库常用函数用法

    开学就要上OOP了.....感觉十分萌萌哒- -! 整理自<ACM程序设计>,本文为转载(原文地址) 迭代器(iterator) 个人理解就是把所有和迭代有关的东西给抽象出来的,不管是数组 ...

  4. Python3学习笔记37-LeetCode刷题

    LeetCode中国官网一个用来刷编程题的网站,收录了很多面试题.感觉还是学习到很多.记录一下思路.代码还是要多敲. 建议编写完后直接在LeetCode上运行和提交.提交时会有不同的测试用例来测试代码 ...

  5. windows下如何打开.sketch的文件

    1 .sketch的文件只能在苹果mac上支持的一种文件格式,现在越来越多的设计师喜欢用.sketch 2 windows下如果想打开.sketch文件,去Microsoft store 找一个Lun ...

  6. 开放式最短路径优先OSPF

    1.OSPF基本知识 OSPF作为基于链路状态的协议,解决了RIP在收敛慢,路由环路,可扩展性差等问题,还有以下优点: 采用组播方式发布报文,可以减少对其他不运行ospf路由器的影响 ospf直尺无类 ...

  7. Codeforces Round #587 (Div. 3) D. Swords

    链接: https://codeforces.com/contest/1216/problem/D 题意: There were n types of swords in the theater ba ...

  8. C++自定义方法类、调用

    如求矩形.圆的面积的方法,可以写成一个area类 area.h中只声明,不实现: #ifndef AREA_H //防止重复引用 #define AREA_H class area{//自定义类 pu ...

  9. Verilog从文件读数据

    reg start;reg [17:0] counter;always @(posedge i_clk)//置rst.startbegin //产生读数据地址 if(counter==171519|| ...

  10. @Controller 文件相关 @RequestMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping

    https://blog.csdn.net/magi1201/article/details/82226289(copy) 最近学习看一些代码,发现对于发送请求这件事,有的地方用@RequestMap ...