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

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

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

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

Q&A

解決済

1回答

1254閲覧

JSP: 参考書をマネして ブラウザでページを実行したら エラーになってしまう。

saya24

総合スコア247

JSP

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

0グッド

0クリップ

投稿2020/08/19 12:31

編集2020/08/20 00:04

「ゼロからわかる サーブレット&JSP超入門」に掲載されていたコードです。何がいけないんでしょう
出版社のダウンロードページから提供されていないコードで、書籍の掲載をマネて自分で入力するほかなくて 誤りにも気が付けません。

Servlet

1package pack; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5 6import javax.servlet.ServletException; 7import javax.servlet.http.HttpServlet; 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10 11/** 12 * Servlet implementation class TestServlet 13 */ 14 15public class TestServlet extends HttpServlet { 16 private static final long serialVersionUID = 1L; 17 18 /** 19 * @see HttpServlet#HttpServlet() 20 */ 21 public TestServlet() { 22 super(); 23 // TODO Auto-generated constructor stub 24 } 25 26 /** 27 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 28 */ 29 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 30 String message = "Hello Servlet World!!"; 31 PrintWriter out = response.getWriter(); 32 33 out.println("<html lang='ja'>"); 34 out.println("<head>"); 35 out.println("<title>Test Servlet</title>"); 36 out.println("</head>"); 37 out.println("<body>"); 38 out.println("<h3>" + message + "</h3>"); 39 out.println("</body>"); 40 out.println("</html>"); 41 } 42 43 /** 44 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 45 */ 46 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 47 // TODO Auto-generated method stub 48 doGet(request, response); 49 } 50 51} 52

ブラウザ

xml

1<?xml version="1.0" encoding="UTF-8"?> 2<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> 3 <display-name>sampleservlet</display-name> 4 <welcome-file-list> 5 <welcome-file>index.html</welcome-file> 6 <welcome-file>index.htm</welcome-file> 7 <welcome-file>index.jsp</welcome-file> 8 <welcome-file>default.html</welcome-file> 9 <welcome-file>default.htm</welcome-file> 10 <welcome-file>default.jsp</welcome-file> 11 </welcome-file-list> 12</web-app>

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

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

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

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

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

guest

回答1

0

ベストアンサー

サーブレットクラスに対して@WebServletを付与していませんので、web.xmlにてサーブレット定義をマッピングさせていますでしょうか。

/ss/test であれば、ss は 作成されているWebプロジェクト名であっていますでしょうか。

web.xml(デプロイメント・ディスクリプタ)で定義されている場合は、
/testにマッピングさせるサーブレットの定義が必要です。

web.xmlの抜粋

xml

1<servlet> 2 <servlet-name>TestServlet</servlet-name> 3 <servlet-class>pack.TestServlet</servlet-class> 4</servlet> 5<servlet-mapping> 6 <servlet-name>TestServlet</servlet-name> 7 <url-pattern>/test</url-pattern> 8</servlet-mapping>

投稿2020/08/19 22:48

A-pZ

総合スコア12011

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

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

saya24

2020/08/20 00:16

A-pZさん、ご支援をありがとうございます。 同参考書にたしかに @WebServlet("/test")の行を削除するという指示があります。 その上で今回のコードを組み立てました。 また、web.xmlの記述 についても同参考書は言及しており 「web-appタグ内を 図7-2の内容に書き換えます 」とだけ書かれ 一体何が手元のxmlと違いが生じているのか 認識できない状況です。 本文にWeb.xmlを追記しました。 開発環境はEclipseなのですが、サーブレット作成画面 の URLマッピング あたりを再度していみるべきでしょうか
A-pZ

2020/08/20 04:28

はい、@WebServletを削除してしまった場合は、web.xmlにサーブレットの記述が必要です。 ちなみに、web.xmlに記述する方法は古い手法で、現在は @WebServlet をサーブレットに記載するだけで動作します。 web.xmlのバージョンに 3.1 と記載されていますので問題ないかと思います。 動作させるTomcatのバージョンが7以降でしたら問題ないでしょう。
saya24

2020/08/20 05:57

ありがとうございます。8.0.50と表示されていますね。 現在の自分のWeb.xmlを貼り付けておきましたが、この状況ではうまくいかない、ということでしょうか?? 参考書にどうWeb.xmlを治せば良いのか記載がなくて。 引き続きご見解頂ければ幸いです、よろしくお願いします。
saya24

2020/08/20 08:31

WEB-INFフォルダからweb.xmlを削除して、@WebServlet("/test") のアノテーションを.javaのソースに追加したら 参考書どおりの ページを表示することができました。 この参考書は アノテーションを説明する以前に、Web.xmlの変更を読者に指示しているのですが 具体的にどう変更するのか ちょっと理解に苦しむ....
A-pZ

2020/08/20 13:06

はい、そのweb.xmlに回答したサーブレットの要素を書けば動作しますし、@WebServletの宣言でも動作します。(両方とも同じ意味です)
saya24

2020/08/20 13:33

A-pZさん提示の要素を書けば、ですね?? この参考書そうは書いてなくて。ありがとうございました。 JSPとサーブレットでまたご支援を賜るかもしれません、すみませんが宜しくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問