内容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
重定向:属于浏览器的跳转
请求转发和重定向区别:
重定向跳转浏览器地址会发生变化,
请求转发浏览器地址不会发生变化
重定向是两次请求,请求转发是一次请求
重定向属于浏览器跳转,请求转发属于服务器内部跳转
重定向跳转页面是不能发送数据,
请求转发是可以携带数据的