亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

中文用戶名在保存時亂碼……

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


正在回答

4 回答

修改server.xml文檔,在Connector標簽里面添加URIEncoding="utf-8"應該能夠解決

0 回復 有任何疑惑可以回復我~

跟你一樣,原來的樣例直接拷貝,結果上面這三行沒刪:

<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="*"/>

就造成一直亂碼,懷疑是javaBeans做處理時,更改了編碼。

猜想因為前面表單中的username password,正好被上面配置的javabean給自動匹配上了。所以這個階段處理時,編碼發生了轉換。

0 回復 有任何疑惑可以回復我~

=-=使用復制粘貼不斷進行對比后,發現問題竟然是出在

<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="*"/>

這段聲明中,若是把這段代碼刪去,編碼就沒有問題。這是何等奇葩的現象,真心求解……

0 回復 有任何疑惑可以回復我~

你數據庫編碼對不對

0 回復 有任何疑惑可以回復我~
#1

sioneden 提問者

數據庫編碼?請問具體是哪部分?
2015-03-12 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

中文用戶名在保存時亂碼……

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號