1. gzyueqian
      13352868059

      怎么學習Java Web?先了解Java Web學習中Cookie存儲中文問題

      更新時間: 2018-12-19 14:10:20來源: 粵嵌教育瀏覽量:4874

        怎么學習Java Web?今天粵嵌要為大家講的是有關Cookie存儲中文問題。很多人在學習JavaWeb過程中都會用到Cookie技術,但是在使用Cookie技術的時候,我們更多的是用來存儲非中文的數據,在使用過程都不會遇到什么問題,但是你有沒有試過Servlet Cookie用來直接存儲中文會是什么樣的效果呢?其實Cookie技術的value值是不支持直接存儲中文的,那么如果在開發中確實有需求,要存儲中文怎么辦呢?下面就交大家的個方法,輕松解決這個問題:

        1.問題所在,直接存儲中文出現的結果會是

          protected void doGet(HttpServletRequest request, HttpServletResponse response)
      		throws ServletException, IOException {
      		// 創建一個Cookie對象,直接將value值設置為中文
      		Cookie cookie = new Cookie("username", "張三");
      		//設置cookie有效時間
      		cookie.setMaxAge(60);
      		//設置cookie路徑
      		cookie.setPath("/GZ182135day04");
      		response.addCookie(cookie);
      		request.getRequestDispatcher("/CookieChinese2").forward(request, response);
          }

        2.會出現以下異常

          嚴重: Servlet.service() for servlet [cn.yueqian.zuoye.CookieChinese] in context with path [/GZ182135day04] threw     exception
          java.lang.IllegalArgumentException: Control character in cookie value or attribute.
      	at org.apache.tomcat.util.http.LegacyCookieProcessor.needsQuotes(LegacyCookieProcessor.java:412)
      	at org.apache.tomcat.util.http.LegacyCookieProcessor.generateHeader(LegacyCookieProcessor.java:284)
      	at org.apache.catalina.connector.Response.generateCookieString(Response.java:940)
      	at org.apache.catalina.connector.Response.addCookie(Response.java:888)
      	at org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:392)
      	at cn.yueqian.zuoye.CookieChinese.doGet(CookieChinese.java:39)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)


        3.解決思路,將中文先編碼后再寫入Cookie中,在取出Cookie的時候再解碼操作,代碼如下:

          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      		// TODO Auto-generated method stub
      		//解決Cookie存入中文:
      		//存入之前編碼后再存入
      		//取出來,過后解碼
      		Cookie cookie = new Cookie("username", URLEncoder.encode("張三", "UTF-8"));
      		cookie.setMaxAge(60);
      		cookie.setPath("/GZ182135day04");
      		response.addCookie(cookie);
      		request.getRequestDispatcher("/CookieChinese2").forward(request, response);
          }

        4.完成解碼操作:

      	protected void doGet(HttpServletRequest request, HttpServletResponse response)
      		throws ServletException, IOException {
      		// 解決Cookie存入中文:
      		// 存入之前編碼后再存入
      		// 取出來,過后解碼
      		Cookie[] cookies = request.getCookies();
      		Cookie cookie = CookieUtil.getCookieByName(cookies, "username");
      		if (cookie != null) {
      			String cookieValue = cookie.getValue();
      			String value = URLDecoder.decode(cookieValue, "UTF-8");
      			System.out.println("username---》" + value);
      		}
          }

        5.這樣寫了過后再去訪問就不再會報錯了,問題成功解決!!

        以上就是有關怎么學習Java Web中的一個小問題。當前Java應用范圍越來越廣,Java工程師需要提高自身技術能力,從而為自己贏得更多的機會。因此進行專業化的Java學習極為重要,粵嵌培訓機構在JAVA領域有十多年的教學經驗,課程體系結合真實大型項目,讓學員在實戰中掌握JAVA干貨技能。


      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲午夜精品国产自 | 一区二区三区亚洲综合 | 偷偷鲁2019丫丫久久好吊色 | 亚洲视频高清在线人 | 精品国产精品国在线 | 色先锋在线不卡2019 |