JSPでの文字のエンコードについて質問です。
1つ目のJSPで入力されたデータを送信し、2つ目のJSPで受け取ったパラメータをクッキーとして保存します。
わからないのは、2つ目のJSPで、setCharacterEncodingでリクエストをエンコードしているのに、その次の行でさらにURLEncoder.encodeで、getParameterで取得したパラメータをエンコードしていることです。
私の認識では、POSTで送信したデータはリクエストのメッセージボディに記述されるので、setCharaEncodingでエンコードすれば、URLEncoder.encodeは必要ないのではないかと思うのですが、この2行の内どちらかを削除すると文字化けします。
この2行が必要な理由について教えて頂きたいです。
宜しくお願い致します。
HTML
1<%@ page contentType="text/html; charset=UTF-8" import="java.net.*"%> 2<% 3 String email = ""; 4 Cookie[] cookies = request.getCookies(); 5 if (cookies != null) { 6 for (Cookie cook : cookies) { 7 if (cook.getName().equals("email")) { 8 email = URLDecoder.decode(cook.getValue(), "UTF-8"); 9 break; 10 } 11 } 12 } 13%> 14 15<!DOCTYPE html> 16<html> 17 <head> 18 <meta charset="UTF-8"> 19 <title>クッキー情報</title> 20 </head> 21 22 <body> 23 <form method="POST" action="cookie2.jsp"> 24 メールアドレス: 25 <input type="text" name="email" size="40" value="<%=email %>" > 26 <input type="submit" value="送信"> 27 </form> 28 </body> 29</html> 30
HTML
1<%@ page contentType="text/html; charset=UTF-8" import="java.net.*"%> 2<!DOCTYPE html> 3<html> 4 <head> 5 <meta charset="UTF-8"> 6 <title>クッキー情報</title> 7 </head> 8 9 <body> 10 <% 11 request.setCharacterEncoding("UTF-8"); 12 String value = URLEncoder.encode(request.getParameter("email"), "UTF-8"); 13 Cookie cook = new Cookie("email", value); 14 cook.setMaxAge(60 * 60 * 24 * 180); 15 response.addCookie(cook); 16 %> 17 クッキーが保存されました 18 </body> 19</html> 20
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/22 15:18
2017/05/22 22:29
2017/05/25 02:56