2011.01.12——— 记住用户名

2011.01.12——— 记住用户名

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

需求:客户提出了这个功能 因为用户名是汉语的 所以不希望每次都输入
实现: 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>




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

代码:

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);
                        }
                    } 
                } 
            } 
%>





你可能感兴趣的:(java,jsp,Blog,asp)