使用Cookie跳转

这篇博客介绍了如何利用Cookie技术实现在用户登录后自动跳转到特定页面的方法,通过示例代码展示了`index.jsp`、`LoginServlet.java`和`AddressServlet.java`的关键逻辑。

效果图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码:
index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="cookie/login" method="post">
姓名:<input type="text" name="username"/><br/>
密码:<input type="text" name="password"/><br/>
<input type="submit" value="登录"/>
</form>

</body>
</html>

LoginServlet.java:

package text.cookie.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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;

@WebServlet("/cookie/login")
public class LoginServlet extends HttpServlet{

	
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		resp.setContentType("text/html;charset=UTF-8");
		Cookie cookie=new Cookie("username",username);
		resp.addCookie(cookie);
		if(true) {
			PrintWriter writer = resp.getWriter();
			writer.write("欢迎"+username+"登录");
			writer.write("<br/>");
			writer.write("<a href='/day16/cookie/address'>收件地址</a>");
			
		}
	}
	

}

AddressServlet.java:

package text.cookie.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 javax.swing.RepaintManager;

@WebServlet("/cookie/address")
public class AddressServlet extends HttpServlet{

	
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		String username=null;
		resp.setContentType("text/html;charset=UTF-8");
		Cookie[] cookies=req.getCookies();
		for(Cookie cookie:cookies) {
			if("username".equals(cookie.getName())) {
				username=cookie.getValue();
			}
		}
		PrintWriter writer = resp.getWriter();
		writer.write("欢迎"+username+"登录");
		writer.write("<br/>");
		writer.write("北京<br/>");
		writer.write("上海<br/>");
		writer.write("杭州<br/>");
		
	}
	

}

在JavaScript中,你可以使用`document.cookie`来处理Cookie,但是直接Cookie来做页面跳转并不是最佳实践,因为Cookie主要用于存储小量的数据,而且有字符长度限制(通常最大不超过4KB)。然而,如果你想在用户浏览过程中跟踪某个状态或者保存用户的偏好,并在跳转页面时带上这个信息,可以这样做: 1. 设置Cookie: ```javascript function setCookie(name, value, days) { var expires = ""; if (days) { var date = new Date(); date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + (value || "") + expires + "; path=/"; } // 跳转设置一个跳转标记的Cookie setCookie('isRedirected', true, 7); // 这里7天过期,可根据需求调整 ``` 2. 页面跳转时读取Cookie并判断是否需要跳转: ```javascript window.onload = function() { var isRedirected = getCookie('isRedirected') === 'true'; if (isRedirected) { window.location.href = '/redirected-page'; // 跳转到指定页面 } else { // 如果不是,则正常加载初始页面 } }; function getCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0; i<ca.length; i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); } return null; } ``` 请注意,这只是一个简单的示例,实际应用中你还需要考虑其他因素,如清除过期Cookie、处理Cookie的大小限制等。同时,为了安全性,最好在后端验证Cookie的值,防止XSS攻击。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值