• 締切済み

サーブレットからJSPへの変数受け渡し

はじめまして 下記の件で大変困っております。どなたか対処方法など知っておりましたらご教授お願いいたします。 現在、サーブレットからJSPへ変数を受け渡す際にJSPのテキストフィールド(value値)に変数を受け渡すことができない状況です。 下記のソースでコーディングしておりますが、「<=request.getAttribute("number")%>がvalue上で変数として認識いないようです。 [現在組んでいるソース」 <td><INPUT type="text" size="6" maxlength ="6" name="number" value ="<%=request.getAttribute("number")%>" ></td> 下記の件を試しましたが、うまくいきませんでした。 1."の前に\を記載→value =\"<%=request.getAttribute("number")%>\" 2.テキストフィールド外で表示した場合、正常に値を表示できる。

  • Java
  • 回答数5
  • ありがとう数3

みんなの回答

回答No.5

getAttributeはObjectで返します。 よって、 String number = (String)request.getAttribute("number"); <%= number %> とキャスト変換してみてください。

回答No.4

public void service(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException{ HttpSession session = request.getSession(); request.setAttribute("number",number); request.getRequestDispatcher("sample.jsp").forward(request, response); こんな感じっすかね

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.3

> <%=request.getAttribute("number")%> このrequestは、サーブレットへのリクエストですね。 サーブレットからforwardされてるなら、正常に動くはずだけど…。 名前"number"が重複してるから、どちらかを別の名前にしたら?

回答No.2

サーブレットで変数を渡しているところを 補足してください。

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.1

全貌がよく見えませんが、基本的な形はこうあるべきですね: [nantoka.jsp] <form action="kantoka.jsp" ...> <INPUT type="text" name="number" value ="default value"> ... ... [kantoka.jsp] ... .....<%= request.getParameter("number") %>..... ...

good_sum06
質問者

補足

質問の内容がおおざっぱで申し訳ございません。 現在、入力フィールどをJSPで作成しており入力フィールドには、文字チェック(数字のみ)をかけております。 入力フィールドに文字を入力しボタンを押下した際にサーブレットファイルに移行しサーブレットファイルからチェッククラスで入力フィールドのチェックを実施するといった感じです。 エラーチェックに引っ掛かってしまった場合、入力した変数とエラー表示を入力フィールド(JSPファイル)に返したいというプログラムです。 現在、エラーが生じる場合、エラー表示はできるのですが、入力した変数が帰ってこないというかんじです。

関連するQ&A

  • core:setでセットした値をサーブレットで取得

    こんにちは。 JSP内で <core:set var="変数" value="値" scope="request" />した「変数」を JSPからリクエストされたサーブレットで取得したいとき request.getAttribute("変数"); ではダメなのですか!? 宜しくお願いします

    • ベストアンサー
    • Java
  • サーブレットからJSPへ情報を渡す

    サーブレットからJSPへ情報を渡すことについて質問がございます。 ■質問は、ブラウザからサーブレットにリクエストして      モデルからデータを取り出しJSPがモデルを参照して      ブラウザに結果を表示し、ブラウザの画面のボタンを      クリックすると、またサーブレットにリクエストが      いくようにしたいのですが、      そのJSPから二度目のサーブレットへのリクエスト及び      リクエストする際にデータを渡すのですが、      JSPからサーブレットへ飛んでくれず404エラーがでます。      ★どうしたら、JSPからサーブレットへ飛んで       くれるでしょうか? ■簡単な流れでかきますと   リクエスト(hidden value="patu") ブラウザ  →  サーブレット  →  モデル ←→ テキスト           ↓           ↑(参照)   ブラウザ ← ← JSP →→→→→  上記の流れは一回の流れですが、次JSPからまたサーブレットへ  actionし、(hidden value="patu")をして同じ流れを  くりかえしたいのです。 ■JSPではどのようになっているかと申しますと <form action="http:://localhost:8080/sotu/TextServlet"method="POST"> <input type="image" src="NEXTquiz.gif" value="次の問題"     onclick="http://localhost:8080/sotu/TextServlet'"> <iuput type="hidden" name="patu" value="yonyc.getPatu()"> </form> となっております。 ■サーブレットでは protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {  String kye = request.getParameter("patu");//value受け取り MondaiSC mondaisc = new MondaiSC(); //モデルクラス生成  mondaisc . mondaisc.DefaultQuiz(kye, i); //モデルにキーを渡す ArrayList textList = mondaisc.getTextList();  //モデルクラスからテキストの情報が入っているArrayListを受ける り  HttpSession session =request.getSession();//sessionに入れる  session.setAttribute("text",textList);  RequestDispatcher rd =getServletContext().getRequestDispatcher("/yomi.jsp"); } このyomi.jspからまたサーブレットへ同じリクエストをおくりたいの です。  ところが飛んでくれません。  恐らく、JSPでの記述の仕方に問題があるのではないこと思っており ますが、どなたかアドバイスをお願い致します。  宜しくお願い致します。

    • ベストアンサー
    • Java
  • jsp、サーブレットの質問です。

    Tomcatを使用してjspとサーブレットを使い掲示板のような投稿サイトもどきを作成していますが解決できない部分があります。 ↓は表示用のjspです♪ <html> <head> <title>Insert title here</title> </head> <body> <% String lsts = (String)request.getAttribute("lst"); %> <table border="4"> <tr> <td>日時</td> <td>タイトル</td> <td>スレッド主</td> <td></td> </tr> <tr> <td><%for(int i = 0; i<lsts.length(); i++){ out.println(lsts); } %> </td> <td><%out.println(); %></td> <td><%out.println("");%></td> <td> </td> </tr> </table> </form> </body> </html> こちらがサーブレットです otected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*DB接続処理は省略します*/ try{ ps = (PreparedStatement) con.prepareStatement(sql); String sql = "select * from thred"; ResultSet rs = ps.executeQuery(); //テーブル内一覧取得 while(rs.next()){ rs.getString("time"); rs.getString("title"); rs.getString("id"); rs.getString("thredid"); String s = (rs.getString("time")+","+ rs.getString("title")+","+rs.getString("id")); String[] lsts = s.split(","); List<String> thlists = Arrays.asList(lsts); String ss = (thlists.get(0)); request.setAttribute("thlst",ss); RequestDispatcher dispatcher= request.getRequestDispatcher("/list.jsp"); dispatcher.forward(request,response); } }catch(SQLException e){ e.printStackTrace(); } catch(ClassNotFoundException e){ e.printStackTrace(); }finally{ try { con.close(); } } } jspの方にサーブレットでthredDBから抜き取ったtimeとtitleとidを全て表示させたいのですが 現状だと 2014-06-03 06:45:02  aaaa 1 の行だけがたくさん表示されてしまいます 恐らくスコープを取得した時点でこの↑の1行のものしかとれてこれていないのだと思います... どのように処理を行ったらよいのでしょうか? DBの中身は画像添付いたしますっ

  • 動的に作成したラジオボタンの選択肢をサーブレットに渡す

    こんにちは。再度失礼します。 JSPで一覧表示された表からラジオボタンでひとつ選択し、サーブレット・Beanにその値を渡し、更新ページで更新処理、または削除処理を行わせたいと考えています。 更新用・削除用のサーブレットは別々です。 一覧表にはラジオボタンをDBに登録された名前が、DBにあるだけ(select * from テーブル)表示されることになっています。 下のソースはわかりやすいように3個だけもってくることにしてます。 【JSP】----------------------------------------------- <% for (int i = 0; i < 3; i++){ %> <tr><td> <input type"radio" name="choice" value="i"> </td><td> <%= [DBから取得した名前](i) %></td> <%= i %> <% } %> 【servlet】 String str = request.getParameter("choice") -------------------------------------------------------- ここで実行するとサーブレットに渡されたchoiceの値はvalueの変数 i になってしまいます。valueの値がサーブレットに渡されるのはわかっているのですが、i ではなく、[DBから取得した名前]をサーブレットに渡したいのですがどうしたらよいのでしょうか。 良い方法をご存知の方、ご教授よろしくお願いいたします。

    • ベストアンサー
    • Java
  • JSP(HTML)~サーブレット~オラクルDBのデータの受け渡しについて

    JSPにてコンボボックスがあるとします。そのコンボボックスで数字(1~10)を選択すると、その選択し送信した数字をサーブレットが受け取り、その数字に対するデータからオラクルDBに登録したり引っ張り出したりするとします。そこで質問なのですが、コンボボックスにてNULLをサーブレットに渡し、そのNULLをDBに入れたい場合、どのように書けば宜しいのでしょうか?私は以下のように現在書いています。 <JSP(HTML)> <option value=null></option> <option value="1">No.1</option> <option value="2">No.2</option> <option value="3">No.3</option> <option value="4">No.4</option> <option value="5">No.5</option> <option value="6">No.6</option> <option value="7">No.7</option> <option value="8">No.8</option> <option value="9">No.9</option> <option value="10">No.10</option> <サーブレットにて番号を受け取る> Integer.parseInt(req.getParameter("NUMBER")), ただ、これですと、NULLを選択してもサーブレットがString型と判断してしまい、型が違うというエラーが出てしまいます。私としては型とかは関係なく、NULL(からっぽ)ということをそのままDBへ渡してほしいだけなのですが・・・。 ちなみに、NUMBERはNOT NULL制約などはついておりません。ご助言を!!

  • jsp、サーブレットの質問です。

    スレッドサイトの投稿の部分の記述でうまくINSERTされません。 jpsで受け取った値をサーブレットにもっていきサーブレットでDB処理を行います。 ■jspファイルです <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.sql.* "%> <html> <head> <title>Insert title here</title> </head> <body> <form method = "POST" action="/Web/thread"> <table border="2"> <tr> <td>タイトル</td> <td> <input type="text"name = "title" size="30" maxlength="30"value=""></td> </tr> <tr> <td>本文</td> <td><textarea name="text" rows="10" cols="50"></textarea></td> </tr> </table> <input type="submit" value="作成" /> </form> </body> </html> ■サーブレットファイルです。 public class Thread extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //入力された値 String title = request.getParameter("title"); String text= request.getParameter("text"); Connection con = null; PreparedStatement ps = null; String url = "jdbc:mysql://localhost/web"; String user = "user"; String password = "pass"; String ins = "INSERT INTO thredlist(title,text)VALUES(?,?)"; try{ Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(url, user, password); ps = (PreparedStatement) con.prepareStatement(ins); ps.setString(1,title); ps.setString(2,text); //INSERT実行 int i = ps.executeUpdate(); }catch(SQLException e){ e.printStackTrace(); }finally{ con.close(); } } } ■DBの中身は画像を参照してくださいっ INSERT文を見直した方がよいのでしょうか? あとTomcatでやっています!

    • ベストアンサー
    • Java
  • サーブレットとJSPの連携

    今、サーブレットとJSPについて勉強しまいます。 HTMLからサーブレットでリクエストを受け付け、 JSPに転送し表示させたいのですが、フォームからの入力の場合は String carname = request.getParameter("cars"); で入力データを取得するコードを書きますよね? (本ではこう書いてました・・・。) では、HTMLの入力フォームからではなくリンクからの 受付けの場合はどう書けばいいのですか? 勉強を始めたばかりで初心者なので、説明不足の点もあるかも 知れませんが分かりやすくご指導宜しくお願いします…。

  • JSPとサーブレットとBean

    とある参考書には サーブレットからBeanを呼び、Beanからデータベースに接続して JSPで表示する。と書かれています。 しかし、とあるサイトには JSPファイルだけでデータベースに接続できるソース、 Beanを使用しなくてもデータベースに接続できるというソースが書かれていました。 Beanとは一体何なのでしょうか。と思うようになりました。JSPやサーブレットで接続することができるのであれば、Beanは不要なのでは?と思っています。 今、「Beanはデータベースに接続するだけのもの」としか理解できてなく、いまいちはっきりとしません。 Beanとは一体何なのでしょうか。 意見や参考できるサイトを教えていただけませんか、 よろしくお願い致します。

    • ベストアンサー
    • Java
  • JSPとサーブレット間での画面遷移でうまく表示できません。

    いつもお世話になっております。。。 eclipse3.4 tomcat6.0 の環境で作業しています。 JSPから受け取ったパラメータをサーブレットで条件分岐して、 条件ごとにdispatch fowardで異なったページに遷移させるページを作りたいのですが、うまくいきません。 送信JSPで、 <form action="受け取りサーブレット名" method="post"> <input type="radio" name="url" value="value1"checked> <input type="radio" name="url" value="value2"> <input type="radio" name="url" value="value3"> <input type="submit" value="jump!"> </form> と書き、受け取りでサーブレットで public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { perform(request, response); }      private void perform(HttpServletRequest request, HttpServletResponse response)         throws ServletException, IOException { response.setContentType("text/plain; charset=Windows-31J"); request.setCharacterEncoding("Windows-31J"); request.getParameter("url"); String i = request.getParameter("url"); if( i.equals("value1")) {           request.getRequestDispatcher("/遷移先1").forward(request,response); }else if(i.equals("value2")) {           request.getRequestDispatcher("/遷移先2").forward(request,response); }else if(i.equals("value3")) {           request.getRequestDispatcher("/遷移先3").forward(request,response); としています。 これでJSPからデバッグを実行すると、変数iにparam"url"でとってきた"value1"が入っているので、getParameterが成功しているのが分かりますが、その後なぜか遷移先に移りません。 おそらくdispaccher fowardがうまくいっていないか、 if文が間違ってるかだと思うのですが、 どなたかご教授くださいm(_ _)m

  • JSP・サーブレット・HTMLについて・・・

    今、サーブレットとJSPについて勉強しています。 HTMLからサーブレットでリクエストを受け付け、 JSPに転送し表示させたいのですが、フォームからの入力の場合は String carname = request.getParameter("cars"); で入力データを取得するコードを書きますよね? (本ではこう書いてました・・・。) では、HTMLの入力フォームからではなくHTMLのリンク部分を クリックされた時の受付けの場合はどう書けばいいのですか? 勉強を始めたばかりで初心者なので、説明不足の点もあるかも 知れませんが分かりやすくご指導宜しくお願いします…。

    • ベストアンサー
    • Java

専門家に質問してみよう