title: servlet cookie实现向客户端写cookie信息
date: 2019-07-09 11:00:00

servlet**基础

servlet是Java web应用中最核心的组件,也是web服务器组件,它是一个中间控制层,负责处理客户端提交过来的请求数据以及调用业务逻辑对象,根据业务逻辑来控制页面转发。

cookie**

在互联网中,cookie是小段的文本信息,在网络服务器上生成,并发送给浏览器。通过使用cookie可以标识用户身份,记录用户名和密码,跟踪重复用户。浏览器将cookie以key/value的形式保存到客户机的某个指定目录中。

基本概念就是这样,下面我想实现一个小功能,利用servlet cookie实现向客户端写cookie信息,即是在登录页面实现用户输入用户名和密码并提交到servlet中,在servlet中将用户名添加到cookie对象中,然后关闭浏览器,在重新访问用户登录页时,用户名的文本框会显示上一次输入的用户名信息

解题思路

应用在Servlet API中提供的cookie类即可实现;用户把表单信息提交给servlet后,在servlet中获取用户请求的信息并添加到cookie对象中,再通过HttpServletResponse对象把cookie信息返回给客户端,然后在JSP页面中通过request内置对象来获取客户端的cookie信息。 在JSP中使用request对象获取的是一个cookie对象的数组,需要在循环中遍历所有cookie对象,并通过cookie对象的getName()方法查找所有cookie对象的名称,然后根据找到的cookie名称获得cookie对象中的值。

实现步骤: 首先打开我们的JavaWeb编程工具eclipse或idea,我用的就是idea,创建一个动态web项目,因为这个小功能没有用到其他的jar包,所以不必使用maven搭建项目;下面开始编码工作:

代码实现: 因为需使用表单提交用户名和密码到servlet处理,所以新建一个index.jsp,代码如下:

<%--Created by IntelliJ IDEA.User: hkqDate: 19-7-9Time: 上午10:08To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%//用于保存从cookie中读取的用户名String userName = null;//获取客户端的所有cookieCookie cookieArr[]=request.getCookies ();if (cookieArr!=null&&cookieArr.length>0){for (Cookie c:cookieArr){//如果Cookie中有一个名为userName的cookieif (c.getName ().equals ( "userName" )){//将字符串解码,获得此cookie的值userName=java.net.URLDecoder.decode ( c.getValue () );}}}
%>
<html>
<head><title>$Title$</title>
</head>
<body>
<form action="CookieServlet" method="post"><table align="center"><tr><td>用户名:</td><td><input type="text" name="name" value="<%if (userName!=null){out.print ( userName );}%>"></td></tr><tr><td>密码:</td><td><input type="password" name="pwd"></td></tr><tr>
​<td colspan="2"><input type="submit" value="登录"></td></tr>
​</table>
​
</form>
</body>
</html>

之后创建servlet处理类CookieServlet.java,代码如下:

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;
import java.io.IOException;
​
/*** @author hkq*/
@WebServlet(name = "CookieServlet")
public class CookieServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request , HttpServletResponse response) throws ServletException, IOException {
​}
​@Overrideprotected void doGet(HttpServletRequest request , HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding ( "UTF-8" );/**** 获得用户名*/String name=request.getParameter ( "name" );/**** 将用户名进行格式编码*/name=java.net.URLEncoder.encode ( name,"UTF-8" );/**** 创建一个cookie对象,并将用户名保存到cookie对象中*/Cookie nameCookie=new Cookie ( "userName",name );/**** 设置Cookie的过期时间,单位为秒*/nameCookie.setMaxAge ( 60 );/**** 通过response的addCookie()方法将此Cookie对象保存到客户端浏览器的cookie中*/response.addCookie ( nameCookie );request.getRequestDispatcher ( "success.jsp" ).forward ( request,response );}
}

需要配置一下web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><servlet><servlet-name>CookieServlet</servlet-name><servlet-class>CookieServlet</servlet-class></servlet><servlet-mapping><servlet-name>CookieServlet</servlet-name><url-pattern>/CookieServlet</url-pattern></servlet-mapping>
</web-app>

运行即可,页面比较糙,就不把页面push上来了。。。 这是提供源码的demo

servlet-cookie实现向客户端写cookie信息相关推荐

  1. 在Servlet中向客户端写Cookie信息

    应用Servlet API中提供的Cookie类,用户把表单信息提交给Servlet后,在Servlet中获取用户请求的信息并添加到Cookie对象中,再通过HttpServletResponse对象 ...

  2. cookie记录了服务器相关的信息,使用cookie记录信息(精选).ppt

    文档介绍: 第6章使用cookie记录信息 1 6.1.1 什么是cookie 什么是Cookies("小甜饼") Cookies就是服务器暂存放在你的电脑里的资料(.txt格式的 ...

  3. Cookie实现免输入登录浏览器信息

    Cookie实现免输入登录浏览器 什么是Cookie cookie 是 servlet 发送到 Web 浏览器的少量信息,这些信息由浏览器保存,然后发送回服务器.cookie 的值可以唯一地标识客户端 ...

  4. 【Servlet】多个Servlet之间数据共享实现方案(ServletContext/Cookie/HttpSession/HttpServletRequest)

    多个Servlet之间数据共享实现方案 文章目录 多个Servlet之间数据共享实现方案 前言 一.ServletContext 1.介绍 2.工作原理 3.全局作用域对象的生命周期 4.代码实现 5 ...

  5. 通过cookie保存并读取用户登录信息

    浏览器将cookie以key/value的形式保存到客户机的某个指定目录 通过cookie的getCookies()方法可获取所有cookie对象的集合 通过cookie对象的getName()方法可 ...

  6. 通过cookie保存并读取用户登录信息实例

    通过cookie的getCookies()方法可获取所有cookie对象的集合:通过getName()方法可以获取指定的名称的cookie:通过getValue()方法获取到cookie对象的值.另外 ...

  7. cookie文件存放在服务器端,cookie存储在客户端还是服务器

    cookie存储在客户端还是服务器 内容精选 换一换 在很多集群架构中,集群成员的主要目的就是让集中式接口知道它能访问哪些节点,然后此中央接口通过一个两级调度为客户端提供服务,在PB到EB级系统中这个 ...

  8. 客户端禁止 cookie,session 还能用吗?

    客户端禁止 cookie,session 还能用吗? 一般默认情况下,在会话中,服务器存储 session 的 sessionid 是通过 cookie 存到浏览器里. 如果浏览器禁用了 cookie ...

  9. 客户端禁用Cookie后session失效的问题

    客户端禁用Cookie后session会失效,该如何解决?解决方法:使用URL重写技术URL重写:在原来的URL后面加上";jsessionid=123456789" 即:url- ...

最新文章

  1. js通过正则表达式解析xml 获取指定的内容
  2. Mish激活函数,ReLU的继任者
  3. DayDayUp:分析“普通人”如何逐步走上食物链顶端(看那些成名史案例,有感而发)
  4. Linux串口转远程串口,linux虚拟串口及远程访问
  5. [转贴]电视和显示器的相关语言
  6. asp.net core策略授权
  7. django外调用url_Django url
  8. linux删除命令_【小技巧】Linux命令的快捷键
  9. c++中enum 如何使用(转)
  10. 解决XAMPP和VMware端口占用冲突
  11. GBin1教程:使用jQuery插件jquery.validationEngine实现表单验证功能
  12. canvas动画科技园_16个富有创意的HTML5 Canvas动画特效集合
  13. 电力系统matlab实验报告,电力系统分析潮流实验报告
  14. JLINK 驱动安装和配置ADS使用,ADX调试
  15. 三菱PLC MC协议
  16. 什么是黑盒测试,白盒测试,灰盒测试?
  17. 计算机系统汉字编码分为,计算机中的汉字编码
  18. Python NLP 入门
  19. python做一个财务系统_用6行python代码做一个财务机器人
  20. 数据库实验(数据库安全管理)

热门文章

  1. cmd中输入net start mysql 提示:服务名无效或者MySQL正在启动 MySQL无法启动
  2. Java-File-文件操作
  3. 直播 | 循序渐进 - DM8 数据存储管理
  4. 3分钟搞懂MySQL事务隔离级别及SET TRANSACTION影响事务
  5. 企业级分布式 HTAP 数据库管理系统,腾讯 TBase 正式开源 ​
  6. 基于超大规模集群的本地存储系统优化
  7. 风起云涌:传Oracle技术的二号人物 Thomas Kurian 正在离开
  8. 程序媛记一次在线创建索引被kill案例及应对措施
  9. 如何实现数据跨链交互?
  10. Redis现网那些坑:用个缓存,还要为磁盘故障买单?