【JavaWeb錯誤集錦】有關Cookie不支援逗號、空格等特殊符號並報出伺服器500錯誤的解決方案
專案場景:
筆者最近在練習Cookie的使用,在新建的CookieDemo1的Servlet中的doPost方法裡,嘗試例項化一個cookie物件並給它賦值。然後在另一個新建的CookieDemo2的Servlet的doPost方法裡使用這個cookie,並在控制檯中輸出該cookie的鍵與值。問題描述:
在Tomcat伺服器啟動後,在瀏覽器中訪問cookieDemo1這個Servlet,結果直接報出伺服器內程式錯誤原因分析:
通過查資料瞭解到現在的cookie不支援逗號、空格等特殊符號,如果非要用,可以使用URL編碼的方式來解決這個問題解決方案:
以想要往cookie中傳入空格為例: 在傳入的時候,使用URLEcoder.encode()方法將想要傳入的字串編碼:String str_date1 = URLEncoder.encode(str_date, "utf-8");
然後將編碼後的值傳入cookie中:
cookie.setValue(str_date1);
在讀取cookie值之後,也要進行解碼:
String value = cookie.getValue();
value = URLDecoder.decode(value,"utf-8");
最後得到我們想要的value。 **全部測試程式碼:**
package cookie;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/cookieTest")
public class CookieTest extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
Cookie[] cookies = request.getCookies();
boolean flag = false;
if(cookies != null && cookies.length > 0){
for(Cookie cookie : cookies){
String name = cookie.getName();
if("lastTime".equals(name)){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = sdf.format(date);
String str_date1 = URLEncoder.encode(str_date, "utf-8");
cookie.setValue(str_date1);
cookie.setMaxAge(60*60);
response.addCookie(cookie);
flag = true;
String value = cookie.getValue();
value = URLDecoder.decode(value,"utf-8");
response.getWriter().write("<h1>歡迎回來,您上次訪問時間為"+value+"</h1>");
break;
}
}
}
if(cookies == null || cookies.length == 0 || flag == false){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = sdf.format(date);
String str_date1 = URLEncoder.encode(str_date, "utf-8");
Cookie cookie = new Cookie("lastTime",str_date1);
cookie.setMaxAge(60*60);
response.addCookie(cookie);
response.getWriter().write("<h1>您好,歡迎您首次登陸</h1>");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
相關文章
- pycharm 取消空格,逗號 等符號的自動補全PyCharm符號
- url引數中有+、空格、=、%、&、#等特殊符號的問題解決符號
- 解決UNIX下@符號報SP2-0734錯誤符號
- 關於VS報無法解析外部符號的錯誤符號
- Android錯誤解決方法集錦Android
- 解決出現的LNK2005“符號已定義”錯誤(轉)符號
- shell報錯:未預期的符號***附近有語法錯誤符號
- vsftpd 錯誤:530 and 500 錯誤解決方法FTP
- UNIX下@符號報SP2-0734錯誤符號
- Windows8.1下撥號651錯誤的解決方案教程Windows
- 解析C++連結錯誤:未定義引用和未解析符號的完整解決方案C++符號
- ORACLE 異常錯誤 錯誤號大全Oracle
- Win7撥號連線時出現錯誤711的解決方案Win7
- 配置微信公眾號,token錯誤解決
- Emoji表情符號錄入MySQL資料庫報錯的解決方案符號MySql資料庫
- 伺服器出現500錯誤的原因和解決辦法伺服器
- 替換SQL欄位中的換行符,回車符,空格等特殊符號SQL符號
- iOS 開發錯誤集錦iOS
- 關於IIS安裝後出現500錯誤的解決辦法
- 修改oracle使用者密碼使用 * 等特殊符號打頭報錯ORA-00988解決方法Oracle密碼符號
- 解決eslint空格報錯等問題EsLint
- IDEA發生“Error:java: 錯誤: 不支援發行版本 5”錯誤的解決方案IdeaErrorJava
- Android開發錯誤集錦Android
- 【論文寫作】錯誤集錦
- [python]python錯誤集錦Python
- 【ITOO】--Jekins整合錯誤集錦
- 記住這個錯誤PLS-00103: 出現符號符號
- Oracle錯誤號檢索Oracle
- latex 錯誤以及解決方案
- java:錯誤:不支援發行版本1.4解決方案Java
- maven報錯:找不到符號Maven符號
- photoshop匯出png發生未知錯誤的解決方案,ps匯出發生未知錯誤怎麼解決
- ant構建時出現錯誤解決方案
- IIS瀏覽器422、500等錯誤提示:自定義錯誤模組不能識別此錯誤瀏覽器
- 伺服器內部錯誤500的原因伺服器
- angular——線上競拍錯誤集錦(一)Angular
- 特殊符號符號
- Java解析xml檔案遇到特殊符號&會出現異常的解決方案JavaXML符號