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

質問編集履歴

4

エラー文を追加

2018/10/01 11:51

投稿

Tazusa
Tazusa

スコア41

title CHANGED
File without changes
body CHANGED
@@ -121,4 +121,23 @@
121
121
  }
122
122
  }
123
123
 
124
- ```
124
+ ```
125
+ エラー
126
+ ```ここに言語を入力
127
+ HTTPステータス 500 -
128
+ type 例外レポート
129
+
130
+ メッセージ
131
+
132
+ 説明 The server encountered an internal error that prevented it from fulfilling this request.
133
+
134
+ 例外
135
+
136
+ java.lang.NullPointerException
137
+ controller.Controller.doPost(Controller.java:43)
138
+ controller.Controller.doGet(Controller.java:26)
139
+ javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
140
+ javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
141
+ org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
142
+ ```
143
+ 43行目はswitchのbuttonIdです。

3

actionクラスの追加

2018/10/01 11:51

投稿

Tazusa
Tazusa

スコア41

title CHANGED
File without changes
body CHANGED
@@ -94,4 +94,31 @@
94
94
  }
95
95
 
96
96
  }
97
+ ```
98
+ ```Action
99
+ public class GoMainAction {
100
+
101
+ public String execute(HttpServletRequest req) {
102
+
103
+ //遷移先
104
+ String page = "/WEB-INF/jsp/main.jsp";
105
+
106
+ //セッション取得
107
+ HttpSession session = req.getSession(false);
108
+
109
+ //ログインチェック。セッションなければnullなのでエラー返す
110
+ if(session==null){
111
+ page = "/dokotsubu/top.jsp";
112
+ }
113
+
114
+ //セッションから過去のツイートを取り出し
115
+ ArrayList<String> tweetList = (ArrayList<String>)session.getAttribute("tweet");
116
+
117
+ //過去のツイートある場合
118
+ session.setAttribute("tweetList", tweetList);
119
+
120
+ return page;
121
+ }
122
+ }
123
+
97
124
  ```

2

サーブレットを追加

2018/10/01 11:45

投稿

Tazusa
Tazusa

スコア41

title CHANGED
File without changes
body CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  JSPのリンクからサーブレットを呼び出したいです。
4
4
  隠しパラメータを使用してボタンと同じように実装してみた以下のコードでは
5
- buttonIdがnullになっているようで、
5
+ buttonIdがnullになっているようで、リンクをクリックすると
6
6
  500エラーでNullPointerExceptionが出ます。
7
7
 
8
- どうすればサーブレットを呼び出すことができるか教えていただきたいです。
8
+ どうすればサーブレットを正しく呼び出すことができるか教えていただきたいです。
9
9
  よろしくお願いします。
10
10
 
11
- ```ここに言語を入力
11
+ ```JSP
12
12
  <%@ page language="java" contentType="text/html; charset=UTF-8"
13
13
  pageEncoding="UTF-8"%>
14
14
  <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
@@ -31,12 +31,67 @@
31
31
  ようこそ<c:out value="${sessionScope.loginUser.userName}"/>さん
32
32
 
33
33
  <br>
34
- //*この部分*******************************
34
+ <%--この部分 --%>
35
35
  <input type="hidden" value="" name="buttonId">
36
36
  <a href onclick="javascript:this.form.buttonId.value='UC0004'; this.form.submit();">つぶやきの投稿・閲覧へ</a>
37
- //*この部分*******************************
38
37
  </c:if>
39
38
  </form>
40
39
  </body>
41
40
  </html>
41
+ ```
42
+ ```Servlet
43
+ @WebServlet("/doko")
44
+ public class Controller extends HttpServlet {
45
+ private static final long serialVersionUID = 1L;
46
+
47
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
48
+ throws ServletException, IOException {
49
+ doPost(request, response);
50
+ }
51
+
52
+ /**
53
+ * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
54
+ */
55
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
56
+ throws ServletException, IOException {
57
+
58
+ //受け取った値の文字コード設定
59
+ request.setCharacterEncoding("UTF-8");
60
+
61
+ String page = null;
62
+
63
+ String buttonId = request.getParameter("buttonId");
64
+
65
+ //ボタンIDで遷移先の振り分け
66
+ switch (buttonId) {
67
+
68
+ case "UC0001":
69
+ LoginAction loginAction = new LoginAction();
70
+ page = loginAction.execute(request);
71
+ break;
72
+
73
+ case "UC0002":
74
+ TweetAction tweetAction = new TweetAction();
75
+ page = tweetAction.execute(request);
76
+ break;
77
+
78
+ case "UC0003":
79
+ LogoutAction logoutAction = new LogoutAction();
80
+ page = logoutAction.execute(request);
81
+ break;
82
+
83
+ case "UC0004":
84
+ GoMainAction goMainAction = new GoMainAction();
85
+ page = goMainAction.execute(request);
86
+ break;
87
+
88
+ }
89
+
90
+ //フォワード
91
+ RequestDispatcher dispacher = request.getRequestDispatcher(page);
92
+ dispacher.forward(request, response);
93
+
94
+ }
95
+
96
+ }
42
97
  ```

1

コードをわかりやすく

2018/10/01 11:34

投稿

Tazusa
Tazusa

スコア41

title CHANGED
File without changes
body CHANGED
@@ -31,9 +31,10 @@
31
31
  ようこそ<c:out value="${sessionScope.loginUser.userName}"/>さん
32
32
 
33
33
  <br>
34
- //この部分
34
+ //この部分*******************************
35
35
  <input type="hidden" value="" name="buttonId">
36
36
  <a href onclick="javascript:this.form.buttonId.value='UC0004'; this.form.submit();">つぶやきの投稿・閲覧へ</a>
37
+ //*この部分*******************************
37
38
  </c:if>
38
39
  </form>
39
40
  </body>