中文用戶名在保存時亂碼……
=-=代碼基本和老師給的相同,只不過我在登陸的時候加了一個密碼的驗證。登陸成功后,發現查看用戶信息時的中文用戶名是亂碼狀態。我覺得應該是將用戶名保存進cookie時出現了亂碼,但存入cookie的方法是老師說的那種。主要代碼貼出,請指教
這是dologin.jsp的內容
<%@?page?language="java"?import="java.util.*"?contentType="text/html;?charset=utf-8"?pageEncoding="utf-8"%> <%@?page?import="java.net.*"?%> <jsp:useBean?id="loginUser"?class="com.po.Users"?scope="page"/> <jsp:useBean?id="userDAO"?class="com.dao.UsersDAO"?scope="page"/> <jsp:setProperty?name="loginUser"?property="*"/> <% 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"> <!-- <link?rel="stylesheet"?type="text/css"?href="styles.css"> --> ??</head> ?? ??<body> ????<h1>登錄判斷</h1> ????<% ???? response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); String[]?isUseCookie?=?request.getParameterValues("isUseCookie"); if(userDAO.usersLogin(loginUser)) { if(isUseCookie?!=null?&&?isUseCookie.length>0) { ?? 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); response.addCookie(c); } } } } request.getRequestDispatcher("login_success.jsp").forward(request,?response); } else { response.sendRedirect("login_failure.jsp"); } ????%> ??</body> </html>
login.jsp和user.jsp的內容與老師給的是一樣的
2016-06-03
修改server.xml文檔,在Connector標簽里面添加URIEncoding="utf-8"應該能夠解決
2015-03-23
跟你一樣,原來的樣例直接拷貝,結果上面這三行沒刪:
就造成一直亂碼,懷疑是javaBeans做處理時,更改了編碼。
猜想因為前面表單中的username password,正好被上面配置的javabean給自動匹配上了。所以這個階段處理時,編碼發生了轉換。
2015-03-12
=-=使用復制粘貼不斷進行對比后,發現問題竟然是出在
<jsp:useBean?id="loginUser"?class="com.po.Users"?scope="page"/>
<jsp:useBean?id="userDAO"?class="com.dao.UsersDAO"?scope="page"/>
<jsp:setProperty?name="loginUser"?property="*"/>
這段聲明中,若是把這段代碼刪去,編碼就沒有問題。這是何等奇葩的現象,真心求解……
2015-03-12
你數據庫編碼對不對