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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

1475閲覧

JSPファイルからの画面遷移について

nagomi72

総合スコア51

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2018/06/17 05:56

サーブレットの学習をしています。

現在、動的プロジェクト「formexample」を作成し、WebContent下に「forsumple.jsp」
を配置しており、formexample/javaリソース/src/servlet(パッケージ)下に「ForSumple.java」
があります。

URLにhttp://localhost:8080/formexample/forsumple.jspを入力するとJSPファイルは呼び出されるのですが
登録ボタンを押した後、画面遷移がうまくできず、404エラーが発生します。

ご助言の程よろしくお願いいたします。

formexample/WebContent/forsumple.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta charset=UTF-8"> <title>ユーザー登録もどき</title> </head> <body> <form action="/formexample/ForSumple" method="Post"> 名前:<br> <input type = "text" name = "name"><br> 性別:<br> 男<input type = "radio" name="gender" value="0"> 女<input type = "radio" name = "gender" value = "1"> <input type = "submit" value = "登録"> </form> </body> </html>

formexample/javaリソース/src/servlet/ForSumple.java

package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class ForSampleServlet */ @WebServlet("/FormSampleServlet") public class ForSumple extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //リクエストパラメーターを取得 request.setCharacterEncoding("UTF-8"); String name = request.getParameter("name"); String gender = request.getParameter("gender"); //リクエストパラメーターをチェック String errorMsg = ""; if(name == null || name.length() ==0) { errorMsg +="名前が入力されていません<br>"; } if(gender == null || gender.length() == 0) { errorMsg +="性別が選択されていません"; } else { if(gender.equals("0")) { gender = "男性"; } else if(gender.equals("1")) { gender = "女性"; } //表示するメッセージを設定 String msg = name + "さん(" + gender + ")を登録しました"; if(errorMsg.length() !=0) { msg = errorMsg; } //HTMLを出力 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<meta charset=\"UTF-8\">"); out.println("<title>ユーザー登録結果</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>" + msg + "</p>"); out.println("</body>"); out.println("</html>"); out.println("html"); out.println(""); } doGet(request, response); } }

formexample/WebContent/WEB-INF/web.xml

<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>ForSampleServlet</servlet-name> <servlet-class>servlet.ForSampleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ForSampleServlet</servlet-name> <url-pattern> /servlet/ForSampleServlet </url-pattern> </servlet-mapping> </web-app>

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/06/17 12:12

WebServlet の意味やservlet-mappingの意味を理解してる?
guest

回答1

0

ベストアンサー

サーブレットのアノテーションが

java

1@WebServlet("/FormSampleServlet") 2public class ForSumple extends HttpServlet { 3 4}

と、ForSampleServlet なのに対し、JSPからは

html

1<form action="/formexample/ForSumple" method="Post">

と、URLが異なるのでサーブレットが呼び出せません。

FormSampleServlet
ForSumple

どちらかを揃えてください。
Sumpleはタイプミスですから、FormSampleServletに合わせるべきでしょうか。

投稿2018/06/17 15:53

A-pZ

総合スコア12011

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

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

nagomi72

2018/06/19 08:24

ご回答いただきましてありがとうございます。 アノテーションを@WebServlet("/FormSampleServlet") jspを <form action="/formexample/FormSampleServlet" method="Post"> としたところ画面遷移に成功いたしました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問