内容Cookie和Session的应用
Servlet常用对象
ServletConfig:静态数据
ServletContext:共享静态数据。共享动态数据。共享文件数据。
HttpServletRequest
HttpServletResponse
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
response.sendRedirect("ServlectDengLu");
>>回话管理
会话>>同一个浏览器与服务器之间在一段时间多次请求称一次会话,
浏览器关闭,会话结束。
Cookie>> :的概念
Cookie的本意
Cookie是客户端技术,程序把每个用
户数据以Cookie的形式写给用户各自浏览器
Cookie
Session, 类名HttpSession
Cookie的概念
Cookie的本意是“小甜饼”,我们俗称“曲奇饼”
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。
当用户使用浏览器再去访问服务器的时候,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据。
1.一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(name)和值(value)。
2.一个web网站可以给一个web浏览器发送多个cookie,一个浏览器也可以存储多个cookie。
3.浏览器一般只允许存放300个cookie,每个网站最多存放20个cookie,每个cookie的大小限制为4kb。
4.如果创建了一个cookie,并将他发送到了浏览器,默认情况下他是一个会话级别的cookie(即存储在浏览器的内存中),用户退出浏览器之后即被删除。
Session的概念
HttpSession对象
服务器为每个会话创建一个HttpSession对象
每个会话对象都有一个唯一的ID
把
用户的数据保存在相应的HttpSession对象内。
session应用
package com.Servlect;
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;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class Servlet2
* session
*/
@WebServlet("/Servlet2")
public class Servlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Servlet2() {
super();
// TODO Auto-generated constructor stub
System.out.println("session servlect2在运行中");
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
PrintWriter pw=response.getWriter();
//档浏览器访问服务器的servlet的时候,需要检查该浏览器的session对象是否是刚刚创建的
HttpSession session=request.getSession();
//session.isNew()判断session到值是否为空
if (session.isNew()) {
//session是刚刚创建的
//浏览器是第一次访问服务器
pw.print("浏览器是第一次访问服务器");
//设置三个动态数据
session.setAttribute("text1", "一等奖学金");
session.setAttribute("name", "hug");
session.setAttribute("pw", "12345");
//删除指定的数据
//session.removeAttribute("text1");
//当session中存放大量数据的时候,如果需要全部销毁,直接干掉session对象
//session.invalidate();
}else {
String info=(String) session.getAttribute("text1");
String info1=(String) session.getAttribute("name");
String info2=(String) session.getAttribute("pw");
System.out.println("浏览器不是第一次访问服务器的文件内容");
System.out.println("浏览器不是第一次访问服务器的名字");
System.out.println("浏览器不是第一次访问服务器了的密码");
System.out.println("=====================================================");
pw.print("<h1>浏览器不是第一次访问服务器的文件内容<hr></h1>"+info);
pw.print("<h1>浏览器不是第一次访问服务器的名字<hr></h1>"+info1);
pw.print("<h1>浏览器不是第一次访问服务器了的密码<hr</h1>"+info2);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Cookie
package com.Servlect;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Demo01Servlet
*/
@WebServlet("/Demo01Servlet")
public class Demo01Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Demo01Servlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取文本框中的内容
String username = request.getParameter("username");
String password = request.getParameter("password");
//首先判断账号密码是否正确
if("hug".equals(username) && "123".equals(password)){
//登录成功之后判断用户是否点击了记住我
String remember = request.getParameter("remember");
if (remember != null) { //因为单选框默认是null,选上了之后value是on
//如果用户点击了,就存到Cookie中
Cookie cookie = new Cookie("username",username);
//设置访问路径
cookie.setPath(request.getContextPath()+"/index.html");
//设置生存时间
cookie.setMaxAge(60);
//把cookie内容传到浏览器响应头
response.addCookie(cookie);
Cookie cookie1 = new Cookie("password",password);
//设置访问路径
cookie1.setPath(request.getContextPath()+"/login.html");
//设置生存时间
cookie1.setMaxAge(60 * 60 * 24);
//把cookie内容传到浏览器响应头
response.addCookie(cookie1);
}
//登录成功,跳转到成功页面
response.sendRedirect("ServlectA");
}else{
//登录失败,跳转到失败页面
System.out.println("登录失败,跳转到失败页面");
response.sendRedirect("ServlectB");
}
}
}
package com.Servlect;
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;
/**
* Servlet implementation class ServlectA
*/
@WebServlet("/ServlectA")
public class ServlectA extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ServlectA() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
PrintWriter pw=response.getWriter();
pw.print("<h1>客户:恭喜你成功登录</h1>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
package com.Servlect;
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;
/**
* Servlet implementation class ServlectB
*/
@WebServlet("/ServlectB")
public class ServlectB extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ServlectB() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
PrintWriter pw=response.getWriter();
pw.print("<h1 >客户:你成功登录失败哦</h1>");
response.setHeader("refresh", "10;url=Demo01Servlet");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户登录</title>
<!--导入js文件-->
<script src="js/commons.js"></script>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>用户登录</h2>
<form action="Demo01Servlet" method="post" id="loginForm">
<table>
<tr>
<td width="60">用户名</td>
<td><input type="text" name="username" id="username"/></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password" id="password"/></td>
</tr>
<tr>
<td>记住我</td>
<!--没有value属性的前提下,点中它的值是on-->
<td><input type="checkbox" name="remember"/></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="登录"/></td>
</tr>
</table>
</form>
</body>
</html>
运行界面
Servlect常用对象
ServletConfig:静态数据
ServletContext:共享静态数据。共享动态数据。共享文件数据。
HttpServletRequest:
HttpServletResponse:
Cookie
Session
HttpServlet
Request and response
response的基本知识
HttpServlet
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象
request和response对象即代表了请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就可以了,要想客户机输出数据,只需要找response即可。
response只是一个对象名称,HttpServletResponse类
Student xiaoming=new Student(); 类名: Student 对象名:xiaoming
重定向:重新制定访问的方向
作用:用于从一个Servlet去开启另一个Servlet
重定向:
重定向属于浏览器跳转,不是服务器自己跳转 超链接是一样的
重定向跳转页面浏览器地址会发生变化
重定向为两次请求
重定向可以访问不同服务器的页面跳转
request
作用:用于服务器上接收浏览器发送过来的数据信息
请求转发
response 重定向 重新指定访问方向
sendRedirect("ServletB");
从一个servlet 去 开启 新的servlet
重定向:属于浏览器的跳转
请求转发和重定向区别:
重定向跳转浏览器地址会发生变化,
请求转发浏览器地址不会发生变化
重定向是两次请求,请求转发是一次请求
重定向属于浏览器跳转,请求转发属于服务器内部跳转
重定向跳转页面是不能发送数据,
请求转发是可以携带数据的