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

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

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

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

Q&A

解決済

1回答

2663閲覧

JSPとサーブレットの連携

komattakomatta

総合スコア16

Java

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

0グッド

1クリップ

投稿2019/08/03 12:24

編集2019/08/04 00:04

前提・実現したいこと

ど素人のため、質問がうまくできていないかもしれません。ご容赦ください。

現在JSPからサーブレットへの遷移の際、404エラーが出て困っています。

tomcatのwebapps直下に配置した空のフォルダを、Eclipse上で動的webプロジェクトに設定し、プロジェクト名はUserUserとしました。

上記UserUserプロジェクトをEclipseで操作し、JSPファイルを作り、actionタグを使ってサーブレットへの画面遷移をしようと思っています。

その際404エラーが出てしまい、困っています。画面遷移させるにはどうすればいいのでしょうか。ご教授のほどよろしくお願いします。

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

イメージ説明

該当のソースコード

※実現しようとしているプログラム全体の一部のため、違和感のあるファイル名になっているかと思われますが、ご容赦ください。
プロジェクト名:UserUser
ファイル1つ目(JSPファイル)
ファイル名:UserUser2.jsp
場所:プロジェクト/WebContent

Java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>確認ページ</title> 8</head> 9<body> 10<h1>送信してよろしいですか?</h1> 11<form action="UserUser3"> 12<input type="submit" value="送信"> 13</form> 14 15</body> 16</html>

ファイル2つ目(サーブレットファイル)
ファイル名:UserUser3.java
場所:プロジェクト/srcのuseruserパッケージ内
※ファイルを作成しただけで、まだ何も編集したりしていません。

Java

1package useruser; 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 * Servlet implementation class UserUser3 13 */ 14@WebServlet("/UserUser3") 15public class UserUser3 extends HttpServlet { 16 private static final long serialVersionUID = 1L; 17 18 /** 19 * @see HttpServlet#HttpServlet() 20 */ 21 public UserUser3() { 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 // TODO Auto-generated method stub 31 response.getWriter().append("Served at: ").append(request.getContextPath()); 32 } 33 34 /** 35 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 36 */ 37 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 38 // TODO Auto-generated method stub 39 doGet(request, response); 40 } 41 42} 43

###試したこと <form action=""の中身を/UserUser3にしたり、./UserUser3にするなど

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/08/04 00:55

そのプロジェクトの作成は何を見てしましたか?
komattakomatta

2019/08/04 04:57 編集

ご返信ありがとうございます。 作成方法自体はウェブサイト等のやり方を参考にしたわけではないのですが、しいて言えば少し以前にtomcatプロジェクトのソースファイルを渡されたときに、それを起動できたときと同じ方法を今回もやってみたという流れです。
guest

回答1

0

ベストアンサー

通常は
プロジェクト名/WebServletに定義したパスのはずです。

getContextPathを利用するのが確実です。

環境に依存しないURLの書き方(getContextPathメソッド)

以下のほうが重要

tomcatのwebapps直下に配置した空のフォルダを、Eclipse上で動的webプロジェクトに設定し、プロジェクト名はUserUserとしました。

プロジェクトは別にどこに作っても良いですが、提示のやり方ではできません。
Javaサーブレットをtomcatサーバーに配置したい場合はプロジェクトをビルドしてwarファイルを配置する必要があります。
Eclipseでいうとプロジェクト右クリック→エクスポート できるはずです。

投稿2019/08/04 00:41

編集2019/08/04 01:01
m.ts10806

総合スコア80765

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

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

退会済みユーザー

退会済みユーザー

2019/08/04 00:53

プロジェクトの作り方が間違えているけどそれでいける?
m.ts10806

2019/08/04 00:56

WebContentにいくのはactionの指定の仕方だと思ってたけどそういうわけじゃないんですかね。 あ、 >tomcatのwebapps直下に配置した空のフォルダを、Eclipse上で動的webプロジェクトに設定し、プロジェクト名はUserUserとしました。 ここか・・・。 通常ならwar作って配置ですよね。
komattakomatta

2019/08/04 04:36

ご回答ありがとうございました。 warファイルを作成⇒webappsに設置で解決しました。 なお、今後プロジェクトを別サーバーのtomcatに配置してテストする必要があるのですが、その際も自分のPC内で作成したwarファイルを別サーバーのtomcat→webappsに設置で大丈夫でしょうか?
m.ts10806

2019/08/07 06:16

はい。設置する階層は同じです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問