2011.01.12——— 记住用户名

本文介绍了一种在使用Cookie存储中文用户名时的解决方案。通过将中文转换为byte字节的方式,解决了Cookie无法直接保存中文的问题,并提供了详细的Java代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2011.01.12——— 记住用户名

参考: [url]http://jameswsz.iteye.com/blog/656734[/url]
[url]http://blog.tianya.cn/blogger/post_show.asp?BlogID=1489493&PostID=13037119[/url]

需求:客户提出了这个功能 因为用户名是汉语的 所以不希望每次都输入
实现: cookie

代码:

1、loginAction.java

登录代码还是原来的代码 只需要在成功的情况下 增加以下代码:

 Cookie cookie = new Cookie("cpjw", userName);
cookie.setMaxAge(24 * 60 * 60 * 365);//不设置时间的话,无法存入本地COOKIE
cookie.setPath("/");
ServletActionContext.getResponse().addCookie(cookie);



2、login.jsp

<% 
String name="";
Cookie[] cookies=request.getCookies();
if(cookies!=null){
for(int i=0;i<cookies.length;i++){
Cookie cookie = cookies[i];
if(cookie.getName().equalsIgnoreCase("cpjw")){

name = cookie.getValue();

}
}
}
%>


然后

<td height="35" align="center" class="login_user">用户名:</td>
<td><input name="userName" type="text" class="logoin_input_on" id="u" value="<%=name %>"/></td>



问题:用英文登录时没问题的 但是用中文用户名登录 就会报错
原因:[color=red]cookie不能保存中文[/color]
解决:[color=red]把中文转变为byte字节 让cookie保存字节[/color]

代码:

1、loginAction.java
String str = "";
byte[] bytes = userName.getBytes();
for(byte b : bytes){
str += String.valueOf(b)+",";
}
Cookie cookie = new Cookie("cpjw", str);
cookie.setMaxAge(24 * 60 * 60 * 365);//不设置时间的话,无法存入本地COOKIE
cookie.setPath("/");
ServletActionContext.getResponse().addCookie(cookie);


2、login.jsp

<% 
String name="";
Cookie[] cookies=request.getCookies();
if(cookies!=null){
for(int i=0;i<cookies.length;i++){
Cookie cookie = cookies[i];
if(cookie.getName().equalsIgnoreCase("cpjw")){

String str = cookie.getValue();
if(str!=null&&!str.equals("")){
String[] strs = str.split(",");
byte[] bytes = new byte[strs.length];
for(int j=0;j<bytes.length;j++){
bytes[j] = (byte)Integer.parseInt(strs[j]);
}
name = new String(bytes);
}
}
}
}
%>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值