Servlet-Cookie处理

什么是Cookie

Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容
本文就介绍如何用Servlet处理Cookie

我们以一个简单的账户登录为例:

编写JSP

简单的编写一个login.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<form action="Login" method="post">
账户:<input type="text" name="account"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="注册"> 
</form>
</body>
</html>

编写对应的Servlet,并配置

编写LoginServlet

package cn.lystery.servlet;

import java.io.IOException;
import java.net.URLEncoder;

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 {
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置响应类型
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html; charset=utf-8");

        //Cookie 处理需要对中文进行编码与解码
        //URLEncoder.encode(s)------编码
        //URLDecoder.decode(s)------解码

        //为账户密码创建cookie
        Cookie account = new Cookie("account", URLEncoder.encode(req.getParameter("account"),"utf-8"));
        Cookie password = new Cookie("password", URLEncoder.encode(req.getParameter("password"),"utf-8"));

        //为cookie设置过期时间 这里我们设置60s,如果要删除cookie,直接将时间设置为0即可 默认为-1 为永久
        account.setMaxAge(60);
        password.setMaxAge(60);

        //在响应头中添加cookie
        resp.addCookie(account);
        resp.addCookie(password);

        //进行跳转
        resp.sendRedirect("Welcome.jsp");
    }
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
}

对web.xml进行配置

<servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>cn.lystery.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/Login</url-pattern>
</servlet-mapping>

编写一个页面 直接获取cookie
Welcome.jsp

<%@page import="java.net.URLDecoder"%>
<%@page import="java.io.PrintWriter"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
    Cookie[] cookies=request.getCookies();
    boolean istrue = false;
    for(Cookie c:cookies)
    {
        if(c.getName().equals("account"))
        {
            out.print("账户:"+URLDecoder.decode(c.getValue(),"utf-8")+"<br>");
            istrue=true;
        }
        if(c.getName().equals("password"))
        {
            out.print("密码:"+URLDecoder.decode(c.getValue(),"utf-8"));
        }
    }
    if(istrue==false)
    {
        out.print("请登录");
    }
%>
</body>
</html>

至此一个cookie测试已经完成,部署运行即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
购物车案例: 基本设计思想: (1)使用session机制,保存用户状态(用户购买的商品)。 (2)为了方便对购买操作的处理(比如,购买商品、 删除已经购买的商品、查看已经购买的商品、计价等等), 设计一个Cart类,封装这些操作。Cart对象会放在Session对象里。 具体的设计: 表:t_computer create table t_computer( id bigint primary key auto_increment, name varchar(50), description varchar(100), pic varchar(255), price double(8,2)); 实体类: Computer dao: ComputerDAO Comuter findById(long id) List findAll() save(Computer computer); ComputerDAOJdbcImpl 测试dao: 购物车的设计: CartItem //商品条目 属性: int qty //购买产品的数量 Computer c //购买的产品是什么 方法: get/set方法 Cart //购物车 属性: List items //存放所有购买的商品 方法: boolean add(CartItem item) //boolean值如果是false,表示 已经购买过该商品。 void delete(long id) //删除某个商品。id是产品的ID号。 void modify(long id,int qty) //修改商品的数量 double sum() //计价 void clear() //清空商品 List list //列出所有商品 页面: cart_list.jsp: 功能:列出所有商品,用户点击链接实现购买。 实现:查询t_computer表(由ShoppingServlet来负责查询) cart.jsp 功能:列出所有已经购买的商品,并且可以修改数量、 删除某个商品、清空购物车、返回到cart_list.jsp。 实现:(ShoppingServlet调用以下方法) 列出所有已经购买的商品: cart.list() 修改数量:cart.modify() 删除:cart.delete() 清空:cart.clear() ShoppingServlet: (1)创建Session: request.getSession(); (2)创建Cart,并且将Cart放到session (3)调用Cart的方法,完成请求;也会调用 ComputerDAO完成数据库操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值