Servlet之ServletContext、Session、Cookie
来源:互联网 发布:xss攻击防御 php 编辑:程序博客网 时间:2024/05/25 20:01
ServletContext、Session、Cookie都可以用于存储数据,不过三者存储数据的位置及作用域不同。
由上图我们可以看出
ServletContext存储于服务端,每个客户端都可以访问到,数据共享。
Session存储于服务端,每个客户端有自己独立的数据区域。
Cookie存储于客户端。
下面通过代码来看一下三者的用法
package com.gujin.servlet;import java.io.IOException;import java.io.PrintWriter;import java.text.MessageFormat;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ContextServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException { ServletContext context = this.getServletConfig() .getServletContext(); Integer count = (Integer) context.getAttribute("visit_count"); if (count == null) { count = 1; } else { count++; } context.setAttribute("visit_count", count); // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter writer = response.getWriter(); // 想输出流写的内容就是客户端接收到的内容 writer.print("<html>"); writer.print("<head>"); writer.print("<meta charset='UTF-8'>"); writer.print("</head>"); writer.print("<body>"); writer.print(MessageFormat.format("<h1>访问次数:{0}</h1>", count)); writer.print("</body>"); writer.print("<html>"); writer.flush(); writer.close(); }}
package com.gujin.servlet;import java.io.IOException;import java.io.PrintWriter;import java.text.MessageFormat;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class SessionServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String flag = request.getParameter("flag"); HttpSession session = request.getSession(); if ("login".equals(flag)) { session.setAttribute("login", "login"); } else if ("logout".equals(flag)) { session.removeAttribute("login"); } PrintWriter writer = response.getWriter(); // 想输出流写的内容就是客户端接收到的内容 writer.print("<html>"); writer.print("<head>"); writer.print("<meta charset='UTF-8'>"); writer.print("</head>"); writer.print("<body>"); writer.print(MessageFormat.format("<h1>{0}</h1>", session.getAttribute("login") == null ? "未登录" : "已登录")); writer.print("</body>"); writer.print("<html>"); writer.flush(); writer.close(); }}
package com.gujin.servlet;import java.io.IOException;import java.io.PrintWriter;import java.text.MessageFormat;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 CookieServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter writer = response.getWriter(); // 想输出流写的内容就是客户端接收到的内容 writer.print("<html>"); writer.print("<head>"); writer.print("<meta charset='UTF-8'>"); writer.print("</head>"); writer.print("<body>"); writer.print("<ul>"); // 获得所有Cookie Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { writer.print(MessageFormat.format("<li>{0}:{1}</li>", cookie.getName(), cookie.getValue())); } } Cookie cookie = new Cookie("CookieServlet", System.currentTimeMillis() + ""); //添加Cookie response.addCookie(cookie); writer.print("</ul>"); writer.print("</body>"); writer.print("<html>"); writer.flush(); writer.close(); }}
然后在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" id="WebApp_ID" version="2.5"> <display-name>Servlet</display-name> <servlet> <servlet-name>context</servlet-name> <servlet-class>com.gujin.servlet.ContextServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>context</servlet-name> <url-pattern>/context</url-pattern> </servlet-mapping> <servlet> <servlet-name>session</servlet-name> <servlet-class>com.gujin.servlet.SessionServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>session</servlet-name> <url-pattern>/session</url-pattern> </servlet-mapping> <servlet> <servlet-name>cookie</servlet-name> <servlet-class>com.gujin.servlet.CookieServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>cookie</servlet-name> <url-pattern>/cookie</url-pattern> </servlet-mapping></web-app>
3 0
- Servlet之ServletContext、Session、Cookie
- Servlet 中的 Cookie 、 Session 和 ServletContext
- servlet中的cookie、session、servletContext简单操作
- Servlet 之Cookie、Session
- java之辨析Session Cookie Servletcontext
- java之辨析Session Cookie Servletcontext
- cookie ,session ,servletContext
- session cookie servletcontext pageContext
- session、cookie、ServletContext
- servlet之session和cookie
- cookie ,session,servletContext的区分
- Session/Cookie/ServletContext的使用
- Servlet - Request、Session、servletContext区别
- Servlet - Request、Session、servletContext区别
- Servlet/JSP之“Cookie和Session原理”
- Servlet规范之会话:Session和Cookie
- 九、初学servlet之cookie与session
- Servlet之三(Request,cookie,session)
- 基于树莓派的WIFI暴力破解工具
- centos6编译ffmpeg 带aac x264 x265
- Dynamic Performance Tables not accessible之问题解决
- Unity5.3.x带Rotation关键帧动画模型 移动平台运行时模型消失 PC正常
- String、StringBuffer和StringBuilder区别
- Servlet之ServletContext、Session、Cookie
- 极客DIY:用树莓派制作低成本高清监控摄像机
- iOS 基于WebService开发
- linux下设置mysql不区分大小写
- Web 服务编程,REST 与 SOAP
- [Python] 工作日查询脚本
- 设计模式三之装饰者模式
- 支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url.
- Android常用开源工具(1)-Dagger2入门