質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

2回答

5969閲覧

サーブレットからサーブレットにリダイレクトできない(404)

beginnerOfLife

総合スコア17

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

1クリップ

投稿2019/01/07 09:17

編集2019/01/07 11:48

###質問者について
プログラミングを初めて約1か月
「10日でおぼえるjsp&サーブレット入門教室」という本で現在勉強しています。
質問内容もその本のサンプルコードについてです。
###環境
WINDOWS10
eclipse Neon2017
Tomcat9
jdk1.8
###作りたいもの
Jsp&サーブレットで簡易スケジュール帳Webアプリを作成したい。
insert.jsp(スケジュール登録フォーム)→Insertservlet.java(フォームに入力された情報をBeansに格納、MvcServlet.javaにリダイレクト)→MvcServlet.java(Beansからデータをリストに格納しスコープに入れる)→mvc.jsp(スコープのリストから情報を取り出して表にしてブラウザに出力(jstlを使っています))
Schedule.java(JavaBeans)

発生している問題・エラーメッセージ

InsertServlet.java(サーブレット)からMvcServlet.java(サーブレット)にリダイレクトしたいが、404になってしまいます。
URLの指定がおかしいのだと思うのですがどう変更したらよいのかわからず困っております。ご教授いただければ幸いです。

HTTPステータス 404 - Not Found Type ステータスレポート メッセージ /jsp10Chap7/lesson31/MvcServlet 説明 The origin server did not find a current representation for the target resource or is not willing to disclose that one exists. Apache Tomcat/9.0.7

該当のソースコード

insert.jsp

jsp

1<%@ page contentType="text/html;charset=UTF-8" %> 2<%@ taglib prefix="win" uri="/WEB-INF/taglibs/WingsTag" %> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8" /> 7<title>簡易スケジュール帳</title> 8</head> 9<body> 10<form method="POST" action="InsertServlet"> 11<div> 12 <label>予定名:<br /> 13 <input type="text" name="title" size="50" maxlength="255" /> 14 </label> 15</div> 16<div> 17 <label>日付:<br /> 18 <select name="date_year">${win:createOption(2015, 2020)}</select>年 19 <select name="date_month">${win:createOption(1, 12)}</select>月 20 <select name="date_day">${win:createOption(1, 31)}</select>日 21 </label> 22</div> 23<div> 24 <label>開始時間:<br /> 25 <select name="time_hour">${win:createOption(0, 23)}</select>時 26 <select name="time_minute">${win:createOption(0, 59)}</select>分 27 </label> 28</div> 29<div> 30 <label>備考:<br /> 31 <input type="text" name="memo" size="70" maxlength="255" /> 32 </label> 33</div> 34<div> 35 <input type="submit" value="登録" /> 36</div> 37</form> 38</body> 39</html> 40

InsertServlet.java

java

1package lesson31; 2 3import java.io.IOException; 4 5import javax.servlet.ServletException; 6import javax.servlet.annotation.WebServlet; 7import javax.servlet.http.HttpServlet; 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10 11 12 13@WebServlet("/lesson31/InsertServlet") 14public class InsertServlet extends HttpServlet { 15 @Override 16 public void doPost(HttpServletRequest request, HttpServletResponse response) 17 throws ServletException, IOException { 18 request.setCharacterEncoding("UTF-8"); 19 Schedule info = new Schedule(); 20 info.setTitle(request.getParameter("title")); 21 info.setScheduleDate(request.getParameter("date_year") + "-" + 22 request.getParameter("date_month") + "-" + 23 request.getParameter("date_day")); 24 info.setScheduleTime(request.getParameter("time_hour") + ":" + 25 request.getParameter("time_minute")); 26 info.setMemo(request.getParameter("memo")); 27 info.insertInfo(); 28 //MvcServletのファイル名 29 String mvcServletPath = "MvcServlet"; 30 response.sendRedirect(mvcServletPath); 31 } 32} 33

Schedule.java

java

1package lesson31; 2 3import java.io.Serializable; 4import java.sql.Connection; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8import java.util.ArrayList; 9 10import javax.naming.Context; 11import javax.naming.InitialContext; 12import javax.naming.NamingException; 13import javax.sql.DataSource; 14 15public class Schedule implements Serializable { 16 public Schedule () {/*コンストラクタ*/} 17 18 private String id; 19 private String title; 20 private String scheduleDate; 21 private String scheduleTime; 22 private String memo; 23 24 public String getId() { 25 return id; 26 } 27 public void setId(String id) { 28 this.id = id; 29 } 30 public String getTitle() { 31 return title; 32 } 33 public void setTitle(String title) { 34 this.title = title; 35 } 36 public String getScheduleDate() { 37 return scheduleDate; 38 } 39 public void setScheduleDate(String scheduleDate) { 40 this.scheduleDate = scheduleDate; 41 } 42 public String getScheduleTime() { 43 return scheduleTime; 44 } 45 public void setScheduleTime(String scheduleTime) { 46 this.scheduleTime = scheduleTime; 47 } 48 public String getMemo() { 49 return memo; 50 } 51 public void setMemo(String memo) { 52 this.memo = memo; 53 } 54 55 public int insertInfo() { 56 int result = 0; 57 Connection db = null; 58 PreparedStatement ps = null; 59 try { 60 Context context = new InitialContext(); 61 DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/Jsp10"); 62 db = ds.getConnection(); 63 ps = db.prepareStatement("INSERT INTO schedules(title, schedule_date, schedule_time, memo) VALUES (?, ?,?, ?)"); 64 ps.setString(1, this.title); 65 ps.setString(2, this.scheduleDate); 66 ps.setString(3, this.scheduleTime); 67 ps.setString(4, this.memo); 68 result = ps.executeUpdate(); 69 ps.close(); 70 db.close(); 71 } catch (NamingException e) { 72 e.printStackTrace(); 73 } catch (SQLException e) { 74 e.printStackTrace(); 75 } finally { 76 try { 77 if(ps != null) {ps.close();} 78 if(db != null) {db.close();} 79 } catch (SQLException e2) { 80 e2.printStackTrace(); 81 } 82 } 83 return result; 84 } 85 86 public static ArrayList<Schedule> getInfos(){ 87 ArrayList<Schedule> list = new ArrayList<Schedule>(); 88 Connection db = null; 89 PreparedStatement ps = null; 90 ResultSet rs = null; 91 try { 92 Context context = new InitialContext(); 93 DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/Jsp10"); 94 db = ds.getConnection(); 95 ps = db.prepareStatement("SELECT * FROM schedules ORDER BY schedule_date, schedule_time"); 96 rs = ps.executeQuery(); 97 while (rs.next()) { 98 Schedule info = new Schedule(); 99 info.setId(rs.getString("id")); 100 info.setTitle(rs.getString("title")); 101 info.setScheduleDate(rs.getString("schedule_date")); 102 info.setScheduleTime(rs.getString("schedule_time")); 103 info.setMemo(rs.getString("memo")); 104 list.add(info); 105 } 106 } catch (NamingException e) { 107 e.printStackTrace(); 108 } catch (SQLException e) { 109 e.printStackTrace(); 110 } finally { 111 try { 112 if (rs != null) { 113 rs.close(); 114 } 115 if (ps != null) { 116 ps.close(); 117 } 118 if (db != null) { 119 db.close(); 120 } 121 } catch (SQLException e2) { 122 e2.printStackTrace(); 123 } 124 } 125 return list; 126 127 } 128 129 130} 131

MvcServlet.java

java

1package lesson31; 2 3import java.io.IOException; 4import java.util.ArrayList; 5 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11 12 13@WebServlet("/MvcServlet") 14public class MvcServlet extends HttpServlet { 15 @Override 16 public void doGet(HttpServletRequest request, HttpServletResponse response) 17 throws ServletException, IOException { 18 ArrayList<Schedule> list = Schedule.getInfos(); 19 request.setAttribute("list", list); 20 //mvc.jspのパス(Web アプリケーションのコンテキストルートに対する相対パス) 21 String path = "/lesson31/mvc.jsp"; 22 getServletContext().getRequestDispatcher(path).forward(req![イメージ説明](a8aef2a303be7fd632bf73ff5f42bba7.png)response); 23 } 24}

mvc.jsp

jsp

1<%@ page contentType="text/html; charset=UTF-8" %> 2<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 4<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 5<!DOCTYPE html> 6<html> 7<head> 8<meta charset="UTF-8" /> 9<title>簡易スケジュール帳</title> 10</head> 11<body> 12<table border="1"> 13<tr> 14 <th>日付</th><th>時刻</th><th>予定名</th><th>備考</th><th>編集</th> 15</tr> 16<c:forEach var="info" items="${requestScope['list']}"> 17 <fmt:parseDate var="scheduleDate" value="${info.scheduleDate}" 18 pattern="yyyy-MM-dd" /> 19 <fmt:parseDate var="scheduleTime" value="${info.scheduleTime}" 20 pattern="HH:mm:ss" /> 21 <tr> 22 <td><fmt:formatDate value="${scheduleDate}" 23 pattern="yyyy年MM月dd日" /></td> 24 <td><fmt:formatDate value="${scheduleTime}" 25 pattern="HH時mm分" /></td> 26 <td>${fn:escapeXml(info.title)}</td> 27 <td>${fn:escapeXml(info.memo)}</td> 28 <td> 29 <a href="edit.jsp?id=${info.id}![イメージ説明](8b52d869ed5d4a6780840d3d32592f33.png)a> 30 </td> 31 </tr> 32</c:forEach> 33</table> 34</body> 35</html> 36

###プロジェクトの構造
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

jspのaction属性の指定が間違っていました。
action="/アプリケーション名/URLパターン"で指定すると成功しました。
回答してくださった方ありがとうございました。

投稿2019/01/13 12:44

beginnerOfLife

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

実行していないので当てずっぽうになりますが、MvcServlet.javaの「@WebServlet("MvcServlet")」は「@WebServlet("/lesson31/MvcServlet")」だと思います。
登録ボタンを押下した時にInsertServletは通っているのでMvcServletでこけています。

投稿2019/01/09 08:51

makoto1213

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

beginnerOfLife

2019/01/13 12:45

自己解決しました。回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問