teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

初心者マーク

2018/09/22 23:56

投稿

hoppin
hoppin

スコア12

title CHANGED
File without changes
body CHANGED
File without changes

2

解決後のコードを記載

2018/09/22 23:56

投稿

hoppin
hoppin

スコア12

title CHANGED
File without changes
body CHANGED
@@ -109,8 +109,104 @@
109
109
  }
110
110
 
111
111
  ```
112
+ ### 解決後のjsp
113
+
114
+ ```
115
+ <%@page contentType="text/html" pageEncoding="UTF-8"%>
116
+
117
+ <html>
118
+ <head>
119
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
120
+ <title>JSP Page</title>
121
+ </head>
122
+ <%
123
+ HttpSession set = request.getSession();
124
+ String nameA = (String)set.getAttribute("name"); // 格納された名前を取得
125
+ String seibetuA = (String)set.getAttribute("seibetu"); // 格納された性別を取得
126
+ String hobyA = (String)set.getAttribute("hoby"); //格納された趣味を取得
127
+
128
+ String stM = "男";
129
+ String stF = "女";
130
+ %>
131
+ <body>
132
+ <h1>Hello World!</h1>
133
+ <form action="addSession" method="POST">
134
+ <p>下記を入力してください。</p>
135
+ *名前:<input type="TEXT" name="name" size=20 value="<%=nameA%>" /><br>
136
+ *性別:男<input type="radio" name="seibetu" value="男" <% if(seibetuA.equals(stM)){ out.print("checked"); } %> >
137
+ 女<input type="radio" name="seibetu" value="女" <% if(seibetuA.equals(stF)){ out.print("checked"); } %> />
138
+ <br>
139
+ *趣味:<br>
140
+ <input type="TEXT" name="hoby" size=20 value="<%=hobyA%>" />
141
+ <br><br>
142
+ <input type="submit" value="送信" />
143
+ </form>
144
+ <p> <%out.print(seibetuA);%></p>
145
+ </body>
146
+ </html>
147
+
148
+ ```
149
+ ### 解決後のサーブレット
150
+
151
+ ```
152
+
153
+ import java.io.IOException;
154
+ import java.io.PrintWriter;
155
+ import javax.servlet.RequestDispatcher;
156
+ import javax.servlet.ServletException;
157
+ import javax.servlet.annotation.WebServlet;
158
+ import javax.servlet.http.HttpServlet;
159
+ import javax.servlet.http.HttpServletRequest;
160
+ import javax.servlet.http.HttpServletResponse;
161
+ import javax.servlet.http.HttpSession;
162
+
163
+ @WebServlet ( name = "addSession" , urlPatterns = {"/addSession"})
164
+ public class addSession extends HttpServlet {
165
+
166
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
167
+ throws ServletException, IOException {
168
+ response.setContentType("text/html;charset=UTF-8");
169
+ try (PrintWriter out = response.getWriter()) {
170
+
171
+ request.setCharacterEncoding("UTF-8");
172
+ String name = request.getParameter("name");
173
+ String seibetu = request.getParameter("seibetu");
174
+ String hoby = request.getParameter("hoby");
175
+
176
+
177
+ HttpSession set = request.getSession();
178
+ set.setAttribute("name",name);
179
+ set.setAttribute("seibetu",seibetu);
180
+ set.setAttribute("hoby",hoby);
181
+
182
+ String nameA = (String)set.getAttribute("name");
183
+ String seibetuA = (String)set.getAttribute("seibetu");
184
+ String hobyA = (String)set.getAttribute("hoby");
185
+
186
+ out.println("<!DOCTYPE html>");
187
+ out.println("<html>");
188
+ out.println("<head>");
189
+ out.println("<title>Servlet addSession</title>");
190
+ out.println("</head>");
191
+ out.println("<body>");
192
+ out.println("<p>名前: " + nameA + "</p>");
193
+ out.println("<p>性別: " + seibetuA + "</p>");
194
+ out.println("<p>趣味: " + hobyA + "</p>");
195
+ out.println("<p>セッションに保存しました。</p>");
196
+ out.println("</body>");
197
+ out.println("</html>");
198
+
199
+
200
+ }
201
+ }
202
+
203
+ }
204
+
205
+ ```
206
+
112
207
  ### 試したこと
113
208
 
114
209
  <input type="radio" name="seibetu" value="男" <% if(seibetu != null){ out.print("checked"); } %> >
115
210
 
116
- このようにjspにif文を入れてみましたがやはりブラウザの更新でラジオボタンだけ外れてしまいます。
211
+ このようにjspにif文を入れてみましたがやはりブラウザの更新でラジオボタンだけ外れてしまいます。
212
+ 追記:↑はequalsを使った文字列比較で解決しました(初歩の初歩で恥ずかしい。)

1

誤字

2018/09/22 23:53

投稿

hoppin
hoppin

スコア12

title CHANGED
File without changes
body CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  type="text" に関してはvalueに変数を入れ込むことで、
12
12
  フォームを更新してもテキストボックスの中に値が残っている事を確認しました。
13
- しかし type="radio" だけうまくいきません。ラジオボタンだけ外れてしまうのです。
13
+ しかし type="radio" だけうまくいきません。ラジオボタンだけ外れてしまいます。
14
14
 
15
15
  例えば最初にラジオボタンを「男」にチェックして「submit」した時、
16
16
  login画面に戻って更新をしても性別のみ男と女、どちらもチェックされてない状態で表示されます。