原理:
cookie的值只能是ascii字符,如果是中文,需要将中文转换成ascii字符形式。
可以使用URLEncoder.encode()方法和URLDecoder.decode()方法来进行这种转换。
保存到cookie的时候 URLEncoder.encode() 编码,在保存到cookie
读取出来的时候URLDecoder.decode() 解码。
login.jsp页面
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<%!
String username;
%>
<%
Cookie[] cookies=request.getCookies();
for(Cookie cookie:cookies){
if(cookie.getName().equals("name")){
username=URLDecoder.decode(cookie.getValue(),"utf-8");
}
}
%>
</head>
<body>
<form action="art.jsp" method="post">
账号:<input type="text" name="user" value="<%=(username==null)?"":username%>"><br>
密码:<input type="password" name="pawd"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
art.jsp页面
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'art.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameter("user");
String pwd=request.getParameter("pawd");
Cookie cookie=new Cookie("name",URLEncoder.encode(name,"utf-8"));
cookie.setMaxAge(60);
response.addCookie(cookie);
response.sendRedirect("index.jsp");
%>
</body>
</html>