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
登录代码还是原来的代码 只需要在成功的情况下 增加以下代码:
2、login.jsp
然后
问题:用英文登录时没问题的 但是用中文用户名登录 就会报错
原因:[color=red]cookie不能保存中文[/color]
解决:[color=red]把中文转变为byte字节 让cookie保存字节[/color]
代码:
1、loginAction.java
2、login.jsp
参考: [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);
}
}
}
}
%>