cookie 实现记住用户名演示 通过代码迅速理解cookie
// 登录页 可直接 tomcat部署 测试
1 package com.itheima.login; import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String userName ="";
String checked = "";
//得到客户端保存的Cookie数据
Cookie[] cookies = request.getCookies();
for (int i = 0;cookies!=null && i < cookies.length; i++) {
if("userName".equals(cookies[i].getName())){
userName = cookies[i].getValue();
checked = "checked='checked'";
}
} out.write("<form action='"+request.getContextPath()+"/servlet/doLogin' method='post'>");
out.write("用户名:<input type='text' name='userName' value='"+userName+"'/><br/>");
out.write("密码:<input type='password' name='pwd'/><br/>");
out.write("<input type='checkbox' name='remember' "+checked+" />记住用户名<br/>");
out.write("<input type='submit' value='登录'/><br/>");
out.write("</form>"); } public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
} }
登录的Loginservlet 接受登录页表单
package com.itheima.login; import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class DoLoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//获取表单数据
String userName = request.getParameter("userName");
String pwd = request.getParameter("pwd");
String remember = request.getParameter("remember"); Cookie ck = new Cookie("userName", userName);
ck.setPath("/");
//处理业务逻辑
//分发转向
if("tom".equals(userName)&&"123".equals(pwd)){
if(remember!=null){
ck.setMaxAge(Integer.MAX_VALUE);//设置Cookie的有效保存时间
}else{
ck.setMaxAge(0);//删除 Cookie
}
response.addCookie(ck);//将Cookie写回到客户端
out.write("登录成功!");
}else{
out.write("登录失败!");
//设置2秒跳到重新登录
response.setHeader("refresh", "2;url="+request.getContextPath()+"/servlet/login");
} } public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
} }
一、什么是Ajax
Ajax:(Asynchronous JavaScript And XML)指异步 JavaScript 及 XML
不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术,是基于JavaScript、XML、HTML、CSS新用法
Ajax:只刷新局部页面的技术
l JavaScript:更新局部的网页
l XML:一般用于请求数据和响应数据的封装
l XMLHttpRequest对象:发送请求到服务器并获得返回结果
l CSS:美化页面样式
l 异步:发送请求后不等返回结果,由回调函数处理结果
JavaScript中XMLHttpRequest对象是整个Ajax技术的核心,它提供了异步发送请求的能力
构造方法
不同浏览器,甚至相同浏览器的不同版本,获取该对象的方式是不同的。

方法:
open() "get|post" ,"url?name=tom" ,"true|false"
send() 发送请求 。可以带参数 或 null
setRequestHeader()
属性
readyState:类型short;只读
responseText:类型String;只读
responseXML:类型Document;只读
status:类型short;只读
事件处理器
onreadystatechange
二、常用方法
|
方法名 |
说 明 |
|
open(method,URL,async) |
建立与服务器的连接 method参数指定请求的HTTP方法,典型的值是GET或POST URL参数指请求的地址 async参数指定是否使用异步请求,其值为true或false |
|
send(content) |
发送请求 content参数指定请求的参数 |
|
setRequestHeader(header,value) |
设置请求的头信息 |
三、常用属性
l onreadystatechange:指定回调函数
l readyState: XMLHttpRequest的状态信息
|
就绪状态码 |
说 明 |
|
0 |
XMLHttpRequest对象没有完成初始化 即:刚刚创建。 |
|
1 |
XMLHttpRequest对象开始发送请求 调用了open方法,但还没有调用send方法。请求还没有发出 |
|
2 |
XMLHttpRequest对象的请求发送完成 send方法已经调用,数据已经提交到服务器,但没有任何响应 |
|
3 |
XMLHttpRequest对象开始读取响应,还没有结束 收到了所有的响应消息头,但正文还没有完全收到 |
|
4 |
XMLHttpRequest对象读取响应结束 一切都收到了 |
l status:HTTP的状态码
|
状态码 |
说 明 |
|
200 |
服务器响应正常 |
|
400 |
无法找到请求的资源 |
|
403 |
没有访问权限 |
|
404 |
访问的资源不存在 |
|
500 |
服务器内部错误 |
l responseText:获得响应的文本内容
l responseXML:获得响应的XML文档对象 documednt
注:就绪状态是4而且状态码是200,才可以处理服务器数据
使用Ajax验证用户名是否存在实现步骤:
1、 使用文本框的onBlur事件
2、 使用Ajax技术实现异步交互
a) 创建XMLHttpRequest对象
b) 通过 XMLHttpRequest对象设置请求信息
c) 向服务器发送请求
d) 创建回调函数,根据响应状态动态更新页面
四、案例:实现邮箱验证
my.js

register.jsp


servlet

五、案例2:搜索
1、编写显示数据的容器div
2、实现ajax响应数据
//创建XMLHttpRequest对象
//通过事件调用回调函数处理响应结果,
//创建一个服务器连接
//发送请求




servlet

cookie 实现记住用户名演示 通过代码迅速理解cookie的更多相关文章
- jQuery cookie 实现记住用户名和密码功能
jQuery cookie 实现记住用户名和密码功能 HTML代码 <div class="wrap"> <div class="line-top&qu ...
- Java:Cookie实现记住用户名、密码
package com.gamecenter.api.util; import java.io.IOException; import java.io.PrintWriter; import java ...
- 用cookie实现记住用户名和密码
1.当第一次发送请求时,在jsp页面并不能获取cookie对象,第一次是addCookie,之后再请求时才能获得. session和sessionid在服务器端生成的时候,同时把sessionID放在 ...
- 通过Cookie来记住用户名出现乱码问题(URL编码)
在登录时,提交一个中文名的用户名到服务器并返回到客户端的Cookie中时, 这个过程会后台会报 java.lang.IllegalArgumentException (非法数据异常) -->在给 ...
- Django之Ajax刷新记住用户名
使用Cookie方法记住用户名 1.创建登录路由 2.定义登录视图函数 判断cookie中是否存在username,存在就将username渲染到login.html模板页面中 3.进行Ajax验证 ...
- java-自动登录 与 记住用户名
步骤分析: 步骤分析: 1.数据库和表 create database day16; use day16; create table user( id int primary key auto_inc ...
- Jquery 实现 “下次自动登录” 记住用户名密码功能
转载自:http://blog.csdn.net/aspnet_lyc/article/details/12030039?utm_source=tuicool&utm_medium=refer ...
- 在某网站的登录页面登录时如果选择“记住用户名”,登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页面中存在一个超链接,单击超链接可以链接到第三个页面查看信息。若选择“
Response实现登录并记录用户名和密码信息 在某网站的登录页面登录时如果选择"记住用户名",登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页 ...
- Cookie的使用与实现记住用户名案例
学习web开发,使用Cookie是不可避免的,个人感觉Cookie的使用和ASP.NET中的Session非常像,只不过Cookie是保存在客户端,而Session是在服务器端,两者都以记录信息为目的 ...
随机推荐
- VisualStudio UnitTest FrameWork
当创建单元测试时,Microsoft.VisualStudio.TestTools.UnitTesting的名字控件会添加到测试项目中,该名字控件中包含很多有用的类: 断言类:在单元测试中验证条件 初 ...
- 关于AJAX异步请求的那些事儿(1)
1.什么事AJAX? Asynchronous Javascript And XML:异步的JS和XML,由Google2002年在GoogleSuggest应用提出,目标实现客户端和服务器“同时”运 ...
- http请求常出现的状态码
服务器返回的 响应报文 中第一行为状态行,包含了状态码以及原因短语,用来告知客户端请求的结果. 状态码 类别 原因短语 1XX Informational(信息性状态码) 接收的请求正在处理 2XX ...
- 解决win8.1下sql配置iis的问题
在配置iis8.5时,ISAPI和CGI限制中没有ASP.NET v4.0.30319, 所以要注册.net 4.0 注册方法为在“运行”中输入cmd,然后在命令行中输入: C:\WINDOWS\Mi ...
- Golang环境配置Centos
1.下载go程序包( go1.7rc1.linux-amd64.tar.gz)(http://www.golangtc.com/static/go/1.7rc1/go1.7rc1.linux-am ...
- pandaboy玩pandas
基于python的三方库pandas的excel表二次开发 import numpy as np import pandas as pd import time from pandas import ...
- js的onclick和jq的click以及on和bind的区别
onclick和click,只能静态绑定点击事件:bind的可以一次绑定多个事件(click/onmouseover等):on可以动态的绑定事件,当页面加载完成调用on即可
- vue:element-ui时间选择器限制只能点不能输入
原文链接:点我 <el-form-item label="门店成立日期" prop="storeSetupDate"> <template&g ...
- [HDU5686]2016"百度之星" - 资格赛 Problem B
题目大意:给你n,规定一个串中相邻的两个1可以合并为一个2(别的不行),让你求长度为n的全1串最多能变成多少种不同的串. 解题思路:我们先来找一波规律,发现n=1,2,3,4,5时答案分别为1,2,3 ...
- linux SVN服务器创建版本库
1.安装svn服务 # yuminstall subversion 2.新建一个目录用于存储SVN所有文件 # mkdir /home/svn 3.在上面创建的文件夹中为项目 project_1 ...