中文用戶名在保存時亂碼……
=-=代碼基本和老師給的相同,只不過我在登陸的時候加了一個密碼的驗證。登陸成功后,發現查看用戶信息時的中文用戶名是亂碼狀態。我覺得應該是將用戶名保存進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
你數據庫編碼對不對