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

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

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

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

servlet

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

Q&A

解決済

1回答

35281閲覧

servletからjspへの値渡しについて

Kyouko_kisaragi

総合スコア48

JSP

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

servlet

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

0グッド

0クリップ

投稿2016/09/08 12:10

編集2016/09/08 12:57

ずっと悩んでいます。どうか助けてください。

現在、servletとjspを使用した画面を作成しています。
内容は、

・『入力画面』のテキストボックスから文字を入力し、ボタンを押す
・分割された画面の下にある『出力画面』に、入力された値が表示される
・テキストボックスが空白の状態でボタンを押した時、『空です』のアラートボックスが表示されるようにする
・出力された文字は上書きされず増え続ける

このプログラムを作成しようとしています。

以下、プログラムになります。

『Input.jsp』から入力した値を一度『Test.java』に渡し、その後『Output.jsp』に渡して表示させたいのですが、うまく渡ってくれません。
調べたところ、dispatcherで渡し、request.getAttributeで取得できるようですが、動いてくれません。
servlet、jsp共に初心者なので、アドバイスをいただきたいです。

Test.java

public class Test extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { this.doPost(req, res); res.setContentType("text/html; charset=UTF-8"); } protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html; charset=UTF-8"); // テキストボックスからデータを受け取る String input = req.getParameter("param"); // 今までの入力分を取得 String oldData = req.getParameter("oldData"); if (null == oldData) oldData = ""; String AllData = (oldData + input); **req.setAttribute("AllData", AllData); req.setAttribute("input", input); req.setAttribute("oldData", oldData); RequestDispatcher dispathcer = req .getRequestDispatcher("/C18_HelloWeb_Output.jsp"); dispathcer.forward(req, res);** } }

Output.jsp

<%@ page language="java" contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS"%> <%@page import="java.util.*" import="java.io.*"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>C18_HelloWeb_Output</title> </head> <body> <center><font size=5px>出力画面</font></center> <br> **<%=request.getAttribute("AllData")%> <%=request.getAttribute("input") %> <%=request.getAttribute("oldData")%>** </body> </html>

よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

『Input.jsp』から入力した値を一度『Test.java』に渡し、その後『Output.jsp』に渡して表示させたいのですが、うまく渡ってくれません。

以下の修正をしたら、とりあえず値がわたるようになりました。(あとurlの指定変えました)

  • Test.java

@WebServletを追加
getRequestDispatcherメソッドの引数を変更

  • Input.jsp

formのaction属性を変更
formのtarget属性追加。outputを設定

以下、ソースを貼り付けます

#main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.Date,java.text.SimpleDateFormat"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>C18_HelloWeb_main</title> </head> <frameset rows="50%, *" frameborder="1"> <frame src = "./Input.jsp" name = "input"> <frame src = "./Output.jsp" name = "output"> </frameset> <body> </body> </html>

#Input.jsp

<%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>C18_HelloWeb_Input</title> <script type="text/javascript" charset=Shift-JIS> <!-- function startAlert(){ if (document.frm.param.value == "") alert('空です'); return false; }} --> </script> </head> <body> <center><font size=5px>入力画面</font></center> <br> <form action="InputServlet" method="POST" target="output"> <input type="text" name="param" size=20> <input type="submit" value="クエリ送信" > </form> </body> </html>

#Output.jsp

<%@ page language="java" contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS"%> <%@page import="java.util.*" import="java.io.*"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>C18_HelloWeb_Output</title> </head> <body> <center><font size=5px>出力画面</font></center> <br> <%=request.getAttribute("AllData")%> <%=request.getAttribute("input") %> <%=request.getAttribute("oldData")%> </body> </html>

#Test.java

package studyc; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/InputServlet") public class Test extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { this.doPost(req, res); res.setContentType("text/html; charset=UTF-8"); } protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html; charset=UTF-8"); // テキストボックスからデータを受け取る String input = req.getParameter("param"); // 今までの入力分を取得 String oldData = req.getParameter("oldData"); if (null == oldData) oldData = ""; String AllData = (oldData + input); req.setAttribute("AllData", AllData); req.setAttribute("input", input); req.setAttribute("oldData", oldData); RequestDispatcher dispathcer = req .getRequestDispatcher("Output.jsp"); dispathcer.forward(req, res); } }

投稿2016/09/08 12:58

java-beginner

総合スコア452

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

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

Kyouko_kisaragi

2016/09/08 13:12

複雑な質問に解答していただき、本当にありがとうございます。 もう少しわかりやすくできるように頑張ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問