一 功能需求
实现记忆用户名和密码功能。
二 代码
1、login.jsp
<%@
page
language
=
"java"
import
=
"java.util.*, java.net
.*"
contentType
=
"text/html; charset=utf-8"
%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+
"://"
+request.getServerName()+
":"
+request.getServerPort()+path+
"/"
;
%>
DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN">
<
html
>
<
head
>
<
base
href
=
"
<%=
basePath
%>
"
>
<
title
>
My JSP 'index.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"
>
head
>
<
body
>
<
h1
>
用户登录
h1
>
<
hr
>
<%
request.setCharacterEncoding(
"utf-8"
);
String username=
""
;
String password =
""
;
Cookie[] cookies = request.getCookies();
if
(cookies!=
null
&&cookies.length>0)
{
for
(Cookie c:cookies)
{
if
(c.getName().equals(
"username"
))
{
username = URLDecoder.decode(c.getValue(),
"utf-8"
);
}
if
(c.getName().equals(
"password"
))
{
password = URLDecoder.decode(c.getValue(),
"utf-8"
);
}
}
}
%>
<
form
name
=
"loginForm"
action
=
"dologin.jsp"
method
=
"post"
>
<
table
>
<
tr
>
<
td
>
用户名:
td
>
<
td
><
input
type
=
"text"
name
=
"username"
value
=
"
<%=
username
%>
"
/>
td
>
tr
>
<
tr
>
<
td
>
密码:
td
>
<
td
><
input
type
=
"password"
name
=
"password"
value
=
"
<%=
password
%>
"
/>
td
>
tr
>
<
tr
>
<
td
colspan
=
"2"
><
input
type
=
"checkbox"
name
=
"isUseCookie"
checked
=
"checked"
/>
十天内记住我的登录状态
td
>
tr
>
<
tr
>
<
td
colspan
=
"2"
align
=
"center"
><
input
type
=
"submit"
value
=
"登录"
/><
input
type
=
"reset"
value
=
"取消"
/>
td
>
tr
>
table
>
form
>
body
>
html
>
2、dologin.jsp
<%@
page
language
=
"java"
import
=
"java.util.*, java.net
.*"
contentType
=
"text/html; charset=utf-8"
%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+
"://"
+request.getServerName()+
":"
+request.getServerPort()+path+
"/"
;
%>
DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN">
<
html
>
<
head
>
<
base
href
=
"
<%=
basePath
%>
"
>
<
title
>
My JSP 'dologin.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"
>
head
>
<
body
>
<
h1
>
登录成功
h1
>
<
hr
>
<
br
>
<
br
>
<
br
>
<%
request.setCharacterEncoding(
"utf-8"
);
//首先判断用户是否选择了记住登录状态
String[] isUseCookies = request.getParameterValues(
"isUseCookie"
);
if
(isUseCookies!=
null
&&isUseCookies.length>0)
{
//把用户名和密码保存在Cookie对象里面
String username = URLEncoder.encode(request.getParameter(
"username"
),
"utf-8"
);
//使用URLEncoder解决无法在Cookie当中保存中文字符串问题
String password = URLEncoder.encode(request.getParameter(
"password"
),
"utf-8"
);
Cookie usernameCookie =
new
Cookie(
"username"
,username);
Cookie passwordCookie =
new
Cookie(
"password"
,password);
usernameCookie.setMaxAge(864000);
passwordCookie.setMaxAge(864000);
//设置最大生存期限为10天
response.addCookie(usernameCookie);
response.addCookie(passwordCookie);
}
else
{
Cookie[] cookies = request.getCookies();
if
(cookies!=
null
&&cookies.length>0)
{
for
(Cookie c:cookies)
{
if
(c.getName().equals(
"username"
)||c.getName().equals(
"password"
))
{
c.setMaxAge(0);
//设置Cookie失效
response.addCookie(c);
//重新保存。
}
}
}
}
%>
<
a
href
=
"users.jsp"
target
=
"_blank"
>
查看用户信息
a
>
body
>
html
>
3、users.jsp
<%@
page
language
=
"java"
import
=
"java.util.*, java.net
.*"
contentType
=
"text/html; charset=utf-8"
%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+
"://"
+request.getServerName()+
":"
+request.getServerPort()+path+
"/"
;
%>
DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN">
<
html
>
<
head
>
<
base
href
=
"
<%=
basePath
%>
"
>
<
title
>
My JSP 'users.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"
>
head
>
<
body
>
<
h1
>
用户信息
h1
>
<
hr
>
<%
request.setCharacterEncoding(
"utf-8"
);
String username=
""
;
String password =
""
;
Cookie[] cookies = request.getCookies();
if
(cookies!=
null
&&cookies.length>0)
{
for
(Cookie c:cookies)
{
if
(c.getName().equals(
"username"
))
{
username = URLDecoder.decode(c.getValue(),
"utf-8"
);
}
if
(c.getName().equals(
"password"
))
{
password = URLDecoder.decode(c.getValue(),
"utf-8"
);
}
}
}
%>
<
BR
>
<
BR
>
<
BR
>
用户名:
<%=
username
%>
<
br
>
密码:
<%=
password
%>
<
br
>
body
>
html
>
三 测试