\r\n\r\n\r\n
入力画面
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n\r\n```\r\n\r\n\r\n\r\n#Output.jsp\r\n\r\n```\r\n<%@ page language=\"java\" contentType=\"text/html; charset=Shift_JIS\"\r\n pageEncoding=\"Shift_JIS\"%>\r\n<%@page import=\"java.util.*\" import=\"java.io.*\"%>\r\n\r\n\r\n\r\n\r\n\r\nC18_HelloWeb_Output\r\n\r\n\r\n
出力画面
\r\n\r\n\r\n
\r\n<%=request.getAttribute(\"AllData\")%>\r\n<%=request.getAttribute(\"input\") %>\r\n<%=request.getAttribute(\"oldData\")%>\r\n\r\n\r\n```\r\n\r\n\r\n#Test.java\r\n\r\n```\r\npackage studyc;\r\n\r\nimport java.io.IOException;\r\n\r\nimport javax.servlet.RequestDispatcher;\r\nimport javax.servlet.ServletException;\r\nimport javax.servlet.annotation.WebServlet;\r\nimport javax.servlet.http.HttpServlet;\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\n\r\n@WebServlet(\"/InputServlet\")\r\npublic class Test extends HttpServlet {\r\n private static final long serialVersionUID = 1L;\r\n\r\n protected void doGet(HttpServletRequest req, HttpServletResponse res)\r\n throws ServletException, IOException {\r\n this.doPost(req, res);\r\n res.setContentType(\"text/html; charset=UTF-8\");\r\n\r\n }\r\n\r\n protected void doPost(HttpServletRequest req, HttpServletResponse res)\r\n throws ServletException, IOException {\r\n\r\n res.setContentType(\"text/html; charset=UTF-8\");\r\n\r\n // テキストボックスからデータを受け取る\r\n String input = req.getParameter(\"param\");\r\n\r\n // 今までの入力分を取得\r\n String oldData = req.getParameter(\"oldData\");\r\n if (null == oldData)\r\n oldData = \"\";\r\n\r\n String AllData = (oldData + input);\r\n\r\n req.setAttribute(\"AllData\", AllData);\r\n req.setAttribute(\"input\", input);\r\n req.setAttribute(\"oldData\", oldData);\r\n RequestDispatcher dispathcer = req\r\n .getRequestDispatcher(\"Output.jsp\");\r\n dispathcer.forward(req, res);\r\n\r\n }\r\n\r\n}\r\n```","dateModified":"2016-09-08T12:58:17.137Z","datePublished":"2016-09-08T12:58:17.137Z","upvoteCount":1,"url":"https://teratail.com/questions/47313#reply-75935"},"suggestedAnswer":[],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/JSP","name":"JSPに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/47313","name":"servletからjspへの値渡しについて"}}]}}}
質問するログイン新規登録

Q&A

解決済

1回答

35926閲覧

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

0

0

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

現在、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.29%

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

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

質問する

関連した質問