URLEncoder.encode(String s, String enc)
使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式
URLDecoder.decode(String s, String enc)
使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。
这两个都主要针对于界面交互时,中文乱码的情况。
URLEncoder.encode用于发送请求时进行编码,URLDecoder.decoder用于接收时进行解码,这样能防止中文乱码的情况。
例如写一个自动登录界面(只有部分代码):
if(Constant.IS_AUTO_LOGIN.equals(request.getParameter("autologin"))){
//创建cookie,注意中文
// Cookie cookie = new Cookie("autologin",username+"-"+password);
Cookie cookie = new Cookie("autologin",URLEncoder.encode(username,"utf-8")+"-"+password);
cookie.setMaxAge(3600);
cookie.setPath(request.getContextPath()+"/");
response.addCookie(cookie);
}
//判断是否勾选了记住用户名 若勾选了需要将我们的用户名放入我们的cookie中 写回浏览器
if(Constant.IS_SAVE_NAME.equals(request.getParameter("saveName"))){
//创建cookie
Cookie cookie = new Cookie("savename",URLEncoder.encode(username,"utf-8"));
cookie.setMaxAge(3600);
cookie.setPath(request.getContextPath()+"/");
response.addCookie(cookie);
if(c!=null){
String username = URLDecoder.decode(c.getValue().split("-")[0],"utf-8");//接收时用URLDecoder进行解码
// System.out.println(username);
String password = c.getValue().split("-")[1];
//调用service
//user = null;
try {
user = new UserService().login(username, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(user!=null){
//将user放入session中
request.getSession().setAttribute("user", user);
}