• ベストアンサー

Servletでテキストボックスに入力された内容を追記したい。

Servletでテキストボックスとボタンを置きsubmitすると下にいくつも追記できるようにしたいです。そのときに ブラウザを複数起動しても独立して稼動できるようにしたいです。 自分の考えとしては、submitしたデータをArrayListに取り込んでhtmlに返そうと思って下記のブログラムを 書いてみましたがうまく作動しませんでした。 何か良い方法がありましたら教えてください。 import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class ServletTest extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException, ServletException { ArrayList al = new ArrayList(); // ヘッダに出力形式をセット res.setContentType("text/html; charset = Shift_JIS"); // 出力ストリームを作成 PrintWriter pw = res.getWriter(); // テキストボックスからデータを受け取る String input = req.getParameter("param"); al.add(input); // テキストボックスが空の場合 if(input == null) { input = ""; } // HTML文を出力 pw.println("<html><head>"); pw.println("<title>SrvletTest</title>"); pw.println("</head>"); pw.println("<body>"); pw.println("<form>"); pw.println("<input type = 'text' name = 'param' maxlength = 20>"); pw.println("<input type = 'submit'><br>"); for(int i = 0; i < al.size(); i++) { pw.println(al.get(i)); } pw.println("</form>"); pw.println("</body></html>"); pw.close(); } }

  • Java
  • 回答数6
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • TAKATON
  • ベストアンサー率62% (17/27)
回答No.5

こんな感じです。 ちなみに、動作確認はしていませんので。 import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class ServletTest extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException, ServletException { // ヘッダに出力形式をセット res.setContentType("text/html; charset = Shift_JIS"); // 出力ストリームを作成 PrintWriter pw = res.getWriter(); // セッションからすでに表示されたデータを取得 HttpSession session = req.getSession(); ArrayList al = (ArrayList)session.getAttribute("oldData"); if( al == null ) { al = new ArrayList(); session.setAttribute("oldData", al); } // テキストボックスからデータを受け取る String input = req.getParameter("param"); // テキストボックスが空の場合 if(input == null) { input = ""; } al.add(input); // HTML文を出力 pw.println("<html><head>"); pw.println("<title>SrvletTest</title>"); pw.println("</head>"); pw.println("<body>"); pw.println( "<form method=\"POST\" action=\"ServletTest\">" ); pw.println("<input type = 'text' name = 'param' maxlength = 20>"); pw.println("<input type = 'submit'><br>"); for(int i = 0; i < al.size(); i++) { pw.println(al.get(i)); } pw.println("</form>"); pw.println("</body></html>"); pw.close(); } }

wish_kazu23
質問者

お礼

ありがとうございます。 出来ました! >ArrayList al = (ArrayList)session.getAttribute("oldData"); インスタンス化するときに引数にArrayListを取ってHttpSessionのgetAttributeメソッドに String型のoldDataを返すという考えでよいでしょうか? >if( al == null ) { al = new ArrayList(); session.setAttribute("oldData", al); } もしalがnullだった場合alをインスタンス化してHttpSessionのsetAttributeメソッドに String型のoldDataと一緒にalに返すという考えで よいでしょうか? あと、実行した結果テキストボックスに文字を入力しsubmitすると必ずnullと 入力した文字が出てきます。 これはalにnullが入っているからでしょうか? すいませんが回答お願いします。

その他の回答 (5)

  • TAKATON
  • ベストアンサー率62% (17/27)
回答No.6

>インスタンス化するときに引数にArrayListを取って>HttpSessionのgetAttributeメソッドに >String型のoldDataを返すという考えでよいでしょうか? セッションオブジェクトに"oldData"という名前で、 表示済みデータを格納したArrayListを登録してあるので、 それを取り出していると理解してください。 >もしalがnullだった場合alをインスタンス化して>HttpSessionのsetAttributeメソッドに >String型のoldDataと一緒にalに返すという考えで >よいでしょうか? "返す"ではなく、"設定する"と理解してください。 >あと、実行した結果テキストボックスに文字を入力し>submitすると必ずnullと >入力した文字が出てきます。 >これはalにnullが入っているからでしょうか? そうです。 下記の処理をサボると、画面に表示されるデータ に"null"が表示されてしまいます。 // テキストボックスが空の場合 if(input == null) { input = ""; } PS:ANo.5で提示したソースの一部間違いがありました。 失礼しました。 FORMタグの出力個所 誤 method=\"POST\" 正 method=\"GET\"

wish_kazu23
質問者

お礼

テキストボックスが空の時に空白が入力されてしまうので 「空です。」というアラートボックスが出るようにJavaScriptを使って可能にしてみました。 String jscript = "<script type = 'text/javascript'>"; jscript += "function checkNull(obj)"; jscript += "{"; jscript += " if(obj.value == '')"; jscript += " {"; jscript += " alert('空です。');"; jscript += " obj.focus();"; jscript += " return false;"; jscript += " }"; jscript += " return true;"; jscript += "}"; jscript += "function check(form)"; jscript += "{"; jscript += " if(!checkNull(form.param))"; jscript += " return false;"; jscript += " return true;"; jscript += "}"; jscript += "</script>"; ありがとうございました。

  • TAKATON
  • ベストアンサー率62% (17/27)
回答No.4

>もしよければ、新たなデータと一緒に既に画面に >表示されているデータも一緒にServletに送る方法(ヒン >ト)を教えてください。 >お願いします。 hiddenパラメータを使用すればできます。 または、新たなデータと一緒に既に画面に表示されている データも一緒にServletに送る方法ではなく、 ArrayListをセッションに格納して、画面から 新たに追加されたデータが送信された場合に、 セッション格納しておいたArrayListに追加してから、 以下の出力処理を呼ぶのもでもOKです。 >for(int i = 0; i < al.size(); i++) >{ >pw.println(al.get(i)); >}

wish_kazu23
質問者

補足

hiddenパラメータを使用した方は#3の方が書かれた通り 出来ました。が、もう一つの方法も試してみたいと 思いますのでお付き合い願いますでしょうか?

  • tubumame
  • ベストアンサー率63% (7/11)
回答No.3

こんにちは。 これでどうですか? import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class ServletTest extends HttpServlet{ public void doPost( HttpServletRequest req, HttpServletResponse res ) throws IOException , ServletException{ //ヘッダに出力形式をセット res.setContentType( "text/html; charset = Shift_JIS" ); // 出力ストリームを作成 PrintWriter pw = res.getWriter(); //テキストボックスからデータを受け取る String input = req.getParameter( "param" ); //今までの入力分を取得 String oldData = req.getParameter( "oldData" ); if( null == oldData ) oldData = ""; // HTML文を出力 pw.println( "<html><head>" ); pw.println( "<title>SrvletTest</title>" ); pw.println( "</head>" ); pw.println( "<body>" ); pw.println( "<form method=\"POST\" action=\"ServletTest\">" ); pw.println( "<input type=\"text\" name=\"param\" maxlength=\"20\">" ); pw.println( "<input type=\"submit\"><br>" ); //今までの入力データと今現在入力した //データを出力 pw.println( oldData + input ); //今までの入力データと今現在入力した //データをhiddenで保持 pw.println( "<input type=\"hidden\" name=\"oldData\" value=\"" + input + oldData + "\">" ); pw.println( "</form>" ); pw.println( "</body></html>" ); pw.close(); } }

  • TAKATON
  • ベストアンサー率62% (17/27)
回答No.2

送信パラメタ(param)には、テキストボックス内に 新たに入力されたデータしか積んでいない訳ですよね。 したがって、以下の処理でArrayListであるalに 追加されるのは新たに入力されたデータのみですよね。 >// テキストボックスからデータを受け取る >String input = req.getParameter("param"); > >al.add(input); なので、いくら以下の処理でArrayListの内容を for分で回して出力しても、常に新たに入力されたデータ しか表示されないのではないでしょうか。 >for(int i = 0; i < al.size(); i++) >{ >pw.println(al.get(i)); >} Submitボタンが押下された場合に、テキストボックスに 新たに入力されたデータといっしょに、既に画面に 表示されているデータもいっしょにServletへ送信する 必要があると思います。

wish_kazu23
質問者

補足

やはりそうでしたかぁ~。。。 コンパイルは通るし実行できるからちょっと不思議 だったんですよねぇ~。 もしよければ、新たなデータと一緒に既に画面に 表示されているデータも一緒にServletに送る方法(ヒント)を教えてください。 お願いします。

  • TAKATON
  • ベストアンサー率62% (17/27)
回答No.1

どううまく動作しないのか分かりませんが、 おそらく、下記のformタグにaction属性が定義されて いないため、ボタンを押下してもテキストボックスに 入力したデータがサーブレット(ServletTest)に 送信されないからではないでしょうか。 >pw.println("<form>");

wish_kazu23
質問者

補足

説明不足でスイマセン。。 >どううまく動作しないのか分かりません コンパイルしServletで実行できるのですが テキストボックスに文字を入力しsubmitしても 追記されません。 >おそらく、下記のformタグにaction属性が定義 formタグに method = 'get' action = 'http://localhost:8080/study/servlet/ServletTest' を追加してみましたがダメでした。

関連するQ&A

  • Servletが動かない

    下記のようなサーブレットを作成し、web.xmlも記述して動かしてみようとしたところ下記のようなエラーが発生して動きません。(Win2000、Tomcat4.1) ~~~HelloWorldServlet.java package test_servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloWorldServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = res.getWriter(); out.println("<html>"); out.println("<head>"); out.println("</head>"); out.println("<body>"); for (int i = 1; i <= 10; i++) { out.println("Hello World" + Integer.toString(i)); } out.println("</body>"); out.println("</html>"); } } ~~~web.xml <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>HellowWorld</servlet-name> <servlet-class>test_servlet.HelloWorldServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HellowWorld</servlet-name> <url-pattern>/hello/*</url-pattern> </servlet-mapping> </web-app> ~~~http://localhost:8080/hello接続時のスタック javax.servlet.ServletException: クラス test_servlet.HelloWorldServlet はサーブレットではありません

    • ベストアンサー
    • Java
  • HTMLからデータを受け取るサーブレットについて

    教本の教え通りにコードを記述してるつもりなんですが,うまくいきません。コンパイルもうまくいきtomcatでHTML画面からデータを送信してもサーブレットはうまく応えてくれません。どなたか教えてください。 (fromhtml_365.java) import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class fromhtml_365 extends HttpServlet{ public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,IOException{ res.setContentType("text/html; charset=shift_JIS"); PrintWriter out = res.getWriter(); out.println("<html><head>"); out.println("<title>サーブレットからパラメータを受信</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>受信したパラメータ</h1>"); out.println("<h2>"); out.println(req.getParameter("param")); out.println("</h2>"); out.println("</hody></html>"); } } (html_366.html) <HTML> <HEAD><TITLE>サーブレットにパラメータを送信</TITLE></HEAD> <BODY> <H1>サーブレットにパラメータを送信</H1> <FORM ACTION="/examples/servlet/fromhtml_365"> 送信パラメータ<INPUT TYPE="TEXT" NAME="param"><BR> <INPUT TYPE="SUBMIT" value="送信"> </FORM> </BODY> </HTML>

    • ベストアンサー
    • Java
  • eclipse servlet 404対処方法

    初めて質問させて頂く者です。宜しくお願いします。Java初心者です。 eclipse4.3のtomcatプロジェクトを使い、以下のServletコードを作成しました。 ブラウザアドレスバーに以下アドレスを入れて実行しましたが、HTTPステータス404が表示されます。 どのように改善したら良いかアドバイスをお願い致します。長文申し訳ございません。本当に困っています。 環境:windows8.1 eclipse4.3 ディレクトリ:jwapp(プロジェクト名) -test(パッケージ名) -First(ファイル名) 指定アドレス:localhost:8080/jwapp/servlet/test.First web.xmlファイルはWEB-INFの中に置いています。 記述は以下のとおりです。↓ <?xml version="1.0" encoding="ISO-8859-1"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"> <servlet> <servlet-name>first</servlet-name> <servlet-class>test.First</servlet-class> </servlet> <servlet-mapping> <servlet-name>first</servlet-name> <url-pattern>/first</url-pattern> </servlet-mapping> </web-app> Servletのコードは以下のとおりです。↓ package test; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class First01 extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException{ res.setContentType("text/html;charset=Shift_JIS"); PrintWriter out=res.getWriter(); out.println("<html)"); out.println("<head>"); out.println("<title>テスト</title>"); out.println("<h1>テスト</h1>"); out.println("</body>"); out.println("</heml>"); } }

    • ベストアンサー
    • Java
  • 画面遷移時のデータ遷移について

    Javaにも記載してしまったのですがこちらに記載すべきかと思い投稿させていただきました。 2重投稿になってしまうため削除しようとしたのですが24時間経たないと削除できませんでした。 24時間後に1つにしようと思います。 皆様のお力をお貸しください。 よろしくお願いします。 入力画面で入力した値を次の確認画面で表示したいと思っているんですがどのようにしたらよいでしょうか? web.xmlでは定義してあります。 入力前のJSPは作成しました。 入力後のJSPをどのようにしたらいいでしょうか? また入力画面のJSPは変更する必要があるでしょうか? --------------------------------------------- package monndai; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Monsyo_NewFileDate extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { RequestDispatcher reqDis = null; try { System.out.println(); //表示JSP決定 reqDis = req.getRequestDispatcher("/jsp/Monsyo_newFileDate.jsp"); //forward reqDis.forward(req,res); } catch (Exception e) { System.out.println("err"); e.printStackTrace(); req.setAttribute("exception", e); reqDis = req.getRequestDispatcher("/jsp/error.jsp"); reqDis.forward(req, res); } } } --------------------------------------------- package monndai; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Monsyo_NewFileInputData extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { RequestDispatcher reqDis = null; try { System.out.println(); //表示JSP決定 reqDis = req.getRequestDispatcher("/jsp/Monsyo_newFileInputData.jsp"); //forward reqDis.forward(req,res); } catch (Exception e) { System.out.println("err"); e.printStackTrace(); req.setAttribute("exception", e); reqDis = req.getRequestDispatcher("/jsp/error.jsp"); reqDis.forward(req, res); } } } --------------------------------------------- <%@page language="java" %> <%@page contentType="text/html;charset=EUC-JP"%> <% String returnPath0 = null; String returnPath1 = null; %> <html> <head> <script language="JavaScript"> <!--//  function checkLength(obj, maxlen) {   if(obj.value.length > maxlen) {    obj.disabled = true;    obj.value = obj.value.substring(0,maxlen);   }   obj.disabled = false;   obj.focus(); // BackSpace防止  } function sendRequest(path) { document.fr.action = path; document.fr.submit(); } --> </script> </head> <title>新問処発行</title> <body> <form name="fr" onSubmit="true" method="POST" > <div align="left"> <h3> 新問処発行</h3> <br> <日付> (XXXX/XX/XX)<br> <input type="text" align="left" maxlength="10" name=" " size="15" > <br> <タイトル>(100文字以内)<br> <textarea rows="5" cols="60" name="title" onkeyup="checkLength(this, 100);" style="ime-mode:active"></TEXTAREA> <br> <% returnPath0 = "sendRequest('/mondai/Monsyo_NewFileInputDataServlet')"; returnPath1 = "sendRequest('/mondai/Monsyo_ToppageServlet')"; %> <br> <input type="button" value="入力" onClick="<%= returnPath0 %>"/> <input type="button" value="戻る" onClick="<%= returnPath1 %>"/> </div> </form> </body> </html> ---------------------------------------------

  • 画面遷移時のデータ遷移について

    文字数制限があったので短くして投稿させていただきます。 入力画面で入力した値を次の確認画面で表示したいと思っているんですがどのようにしたらよいでしょうか? web.xmlでは定義してあります。 入力前のJSPは作成しました。 入力後のJSPをどのようにしたらいいでしょうか? また入力画面のJSPは変更する必要があるでしょうか? --------------------------------------------- package monndai; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Monsyo_NewFileDate extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { RequestDispatcher reqDis = null; try { System.out.println(); //表示JSP決定 reqDis = req.getRequestDispatcher("/jsp/Monsyo_newFileDate.jsp"); //forward reqDis.forward(req,res); } catch (Exception e) { System.out.println("err"); e.printStackTrace(); req.setAttribute("exception", e); reqDis = req.getRequestDispatcher("/jsp/error.jsp"); reqDis.forward(req, res); } } } --------------------------------------------- package monndai; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Monsyo_NewFileInputData extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { RequestDispatcher reqDis = null; try { System.out.println(); //表示JSP決定 reqDis = req.getRequestDispatcher("/jsp/Monsyo_newFileInputData.jsp"); //forward reqDis.forward(req,res); } catch (Exception e) { System.out.println("err"); e.printStackTrace(); req.setAttribute("exception", e); reqDis = req.getRequestDispatcher("/jsp/error.jsp"); reqDis.forward(req, res); } } } --------------------------------------------- <%@page language="java" %> <%@page contentType="text/html;charset=EUC-JP"%> <% String returnPath0 = null; String returnPath1 = null; %> <html> <head> <script language="JavaScript"> <!--//  function checkLength(obj, maxlen) {   if(obj.value.length > maxlen) {    obj.disabled = true;    obj.value = obj.value.substring(0,maxlen);   }   obj.disabled = false;   obj.focus(); // BackSpace防止  } function sendRequest(path) { document.fr.action = path; document.fr.submit(); } --> </script> </head> <title>新問処発行</title> <body> <form name="fr" onSubmit="true" method="POST" > <div align="left"> <h3> 新問処発行</h3> <br> <日付> (XXXX/XX/XX)<br> <input type="text" align="left" maxlength="10" name=" " size="15" > <br> <タイトル>(100文字以内)<br> <textarea rows="5" cols="60" name="title" onkeyup="checkLength(this, 100);" style="ime-mode:active"></TEXTAREA> <br> <% returnPath0 = "sendRequest('/mondai/Monsyo_NewFileInputDataServlet')"; returnPath1 = "sendRequest('/mondai/Monsyo_ToppageServlet')"; %> <br> <input type="button" value="入力" onClick="<%= returnPath0 %>"/> <input type="button" value="戻る" onClick="<%= returnPath1 %>"/> </div> </form> </body> </html> ---------------------------------------------

  • forwardの前に

    http://www.techscore.com/tech/J2EE/Servlet/5-3.html のサイトに 「forwardの前に出力すると例外が発生する」 とあるんですが、試しにやってみたんですが、 例外は発生しませんでした。 なぜでしょうか? resp.setContentType("text/html; charset=EUC-JP"); PrintWriter pw = resp.getWriter(); pw.println("<form method=\"'get'\">"); pw.println("<input type=\"submit\" value=\"ボタン\">"); pw.println("</form>"); RequestDispatcher rd = req.getRequestDispatcher("/other/"); rd.forward(req,resp); こんなソースなんですけど。。

    • ベストアンサー
    • Java
  • 【Servletのエラーについて教えて下さい!】

    こんにちわ。いつもありがとうございます。 サーブレットをコンパイル後、実行するとHTTPのPOSTメソッドは、このURLではサポートされていません。 と表示されます。 前のJSPからはmethod="POST"にて送信しているのですが・・・ すみませんが、ご教授下さい! ソースは以下となります。 よろしくお願い致します! import javax.servlet.http.*; import java.sql.*; import java.io.*; public class EditingServlet extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException { /*フィールドの宣言*/ Connection conn = null; res.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = res.getWriter(); out.println("<html><head></head><body>"); String Str = req.getParameter( "Str" ); try { String user = "ID", pwd="PW"; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url="jdbc:sqlserver://10.121.67.247:1433;DatabaseName=Name"; /*JDBC URL*/ conn = DriverManager.getConnection(url,user,pwd); Statement stmt = conn.createStatement(); stmt.executeUpdate("UPDATE T_Strfer SET フラグ ='1' WHERE id='"+ Str +"'"); out.println("データを更新しました!<br>"); } catch (ClassNotFoundException e) { out.println("クラスが見つかりません。"); } catch (SQLException e) { out.println("データの更新に失敗しました。 "); } finally { try { if (conn != null) { conn.close(); } } catch (SQLException e) {} } out.println("</body></html>"); out.close(); } }

    • ベストアンサー
    • Java
  • セッションタイムアウトになった時

    やりたいことは 1)セッション情報を取り出す 2)取り出した値を使ってDBに書き込みする 3)セッション情報を破棄する です。 http://oshiete1.watch.impress.co.jp/qa455453.html ほぼここの方と同じです。 ここの方はうまくいったようなのですが・・・ 初心者で悩んでいます。よろしくお願いいたします。 HttpSessionBindingListener セッションが切れた(valueUnbound)時 getAttribute("aaa")で "1111111"←ユーザーIDを取得したい。 req_.getSession().getAttribute("aaa");で取得できません。 よろしくお願いします。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; /** セッション開始終了処理のテストサーブレット **/ public class SessionServlet extends HttpServlet implements HttpSessionBindingListener { HttpServletRequest req_; HttpServletResponse res_; public void valueBound(HttpSessionBindingEvent arg0) { System.out.println("valueBound"); } public void valueUnbound(HttpSessionBindingEvent arg0) { System.out.println(req_.getSession().getAttribute("aaa")); System.out.println("valueUnBound"); } public void service (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { req_=req; res_=res; HttpSession session1 = req.getSession(); res.setContentType("text/html; charset=Shift_JIS"); req.setCharacterEncoding("Shift_JIS"); PrintWriter out = res.getWriter(); // パラメータの取得 String act = req.getParameter("act"); // ログイン処理 if (act == null) { // セッション変数の作成、設定 SessionServlet data = new SessionServlet(); session1.setAttribute("aaa", "1111111"); session1.setAttribute("data", data); // セッション開始画面の表示 out.println("<html><body>"); out.println("<h1>セッション開始</h1>"); out.println("<form method=\"POST\" action=\"SessionServlet?act=lo\">"); out.println("<input type=\"submit\" value=\"logout\">"); out.println("</form>"); out.println("</body></html>"); out.close(); // ログアウト処理 } else { // セッション終了画面の表示 out.println("<html><body>"); out.println("<h1>セッション終了</h1>"); out.println("</body></html>"); out.close(); // セッションの無効化 session1.invalidate(); } } }

  • javax.servlet は存在しませんと出ます。

    JAVA初心者です。 Tomcat5.0をインストールしてサーブレットをコンパイルしようとするのですが以下のようなコメントが出て上手くいきません。 PATHの設定が原因だと思うのですがインターネットで色々調べたのですが分かりません。PATHの意味がいまいち分かっていませんがよろしくお願い致します。 システム環境変数は CATALINA_HOME C:\Program Files\Apache Software Foundation\Tomcat 5.0 JAVA_HOME C:\Program Files\Java\jdk1.6.0_15 ユーザー変数は 変数名 path 変数値 c:\j2sdk1.4.2\bin エラー内容が c:\javasrc>javac HelloServlet.java HelloServlet.java:5: パッケージ javax.servlet は存在しません。 import javax.servlet.*; ^ HelloServlet.java:6: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.*; ^ HelloServlet.java:8: シンボルを見つけられません。 シンボル: クラス HttpServlet public class HelloServlet extends HttpServlet{ ^ HelloServlet.java:10: シンボルを見つけられません。 シンボル: クラス HttpServletRequest 場所 : HelloServlet の クラス public void doGet(HttpServletRequest req,HttpServletResponse res) ^ HelloServlet.java:10: シンボルを見つけられません。 シンボル: クラス HttpServletResponse 場所 : HelloServlet の クラス public void doGet(HttpServletRequest req,HttpServletResponse res) ^ HelloServlet.java:11: シンボルを見つけられません。 シンボル: クラス ServletException 場所 : HelloServlet の クラス throws IOException,ServletException { ^ エラー 6 個 になります。

  • アラートボックスが表示されません。

    はじめまして。 初めて質問させていただきます。 JavaServletでテキストボックスとボタンを置き、submitすると下に何個でも追記できるプログラムを作りました。 そこに送信時、テキストボックスが空の場合「空です」のアラートボックスが表示され、送信が中断される機能を追加しようと思っています。 下記のようにコーディングした場合、テキストボックス内の状態に関わらず、アラートボックスが表示されません。色々試したところ、入力の有無に関わらず、ボタンを押すたびにアラートボックスが表示されたり、今回のように全く表示されなかったりします。 ちなみに下記がコーディング内容です。 大変お手数かけますが、解決方法をご教示いただけると幸いです。 ※WebアプリケーションサーバはTomcatを用いて、アドレスは http://localhost:8080/study/servlet/alerttest としています。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; /** * 送信時にテキストボックスが空の場合"空です"のアラートボックスが * 示され、送信を中断させるようにする。 */ public class alerttest extends HttpServlet { // doGetメソッドをオーバーライド public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // ボディ部を出力するためのオブジェクト生成 PrintWriter out = response.getWriter(); // リクエストパラメータの文字エンコーディング名をセット response.setContentType("text/html; charset=Shift_JIS"); out.println("<html>"); out.println("<head>"); out.println("<title>alerttest</title>"); out.println("<script type='text/javascript'>"); out.println("<!--"); out.println("function startAlert()"); out.println("{"); out.println("var naiyou = document.getElementsByName('moziretsu');"); out.println("if(naiyou == '')"); out.println("{"); out.println("alert('空です');"); out.println("}"); out.println("}"); out.println("// --></script>"); out.println("</head>"); out.println("<body>"); out.println("<FORM action='/study/servlet/alerttest' method='GET'>"); out.println("<INPUT type='text' name='moziretsu'>"); out.println("<INPUT type='submit' value='クエリ送信' onclick='startAlert()'><BR>"); // 入力パラメータの取得 String moziretsuPrm = request.getParameter("moziretsu"); Object moziretsuObj = moziretsuPrm; // セッションオブジェクトの取りだし HttpSession session = request.getSession(); // セッションにオブジェクトの追加 if(moziretsuPrm != null) { session.setAttribute(moziretsuPrm,moziretsuObj); } // セッション属性の一覧を出力 Enumeration names = session.getAttributeNames(); while(names.hasMoreElements()) { String key = (String)names.nextElement(); out.println(key + "<br>"); } out.println("</body>"); out.println("</html>"); } }