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

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

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

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

Eclipse

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

Q&A

解決済

1回答

5986閲覧

java 簡易チャット サーブレットについて

khr0404

総合スコア43

Java

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

Eclipse

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

0グッド

0クリップ

投稿2016/05/17 07:37

###前提・実現したいこと

名前と内容をテキストフィールドに書き込み投稿ボタンを押すと下に
投稿番号、名前、内容が表示されるようなサーブレットを書きたいのですがうまくいきません。
実行するとトップのページは表示されるのですが内容を入力して投稿を押しても何も変わらないままです。
javaを勉強中なのですがjspは使わずサーブレットだけで作りたいです。

どのように訂正したらいいでしょうか。
ご教授お願いします。

###サーブレット

java

1 2 3import java.io.IOException; 4import java.io.PrintWriter; 5import java.util.ArrayList; 6 7import javax.servlet.ServletContext; 8import javax.servlet.ServletException; 9import javax.servlet.annotation.WebServlet; 10import javax.servlet.http.HttpServlet; 11import javax.servlet.http.HttpServletRequest; 12import javax.servlet.http.HttpServletResponse; 13 14 15 16@WebServlet("/Chat") 17public class Chat extends HttpServlet { 18 19 20 /** 21 * 22 */ 23 private static final long serialVersionUID = 1L; 24 25 26 public Chat() { 27 28 super(); 29 30 } 31 32 33 @Override 34 protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { 35 36 this.doPost( request, response ); 37 } 38 39 40 41 @SuppressWarnings("unused") 42 @Override 43 protected void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { 44 45 response.setContentType( "text/html;charset=UTF-8" ); //HTML出力 46 request.setCharacterEncoding( "UTF-8" ); 47 48 49 ArrayList<Chatclass> chatList = new ArrayList<>(); //ArrayListの生成 50 51 ServletContext chatapp = this.getServletContext(); //ServletContextインスタンスの取得 52 53 54 String name = ""; 55 String body; 56 String setting; 57 58 if ( chatapp.getAttribute( "chatList" ) != null ) { 59 chatList = (ArrayList<Chatclass>) chatapp.getAttribute( "chatList" ); //アプリケーションスコープからインスタンスを取得 60 61 name = request.getParameter( "Name" ); 62 body = request.getParameter( "Body" ); 63 setting = request.getParameter( "setting" ); 64 65 if ( request.getParameter( "Name" ) != "" && request.getParameter( "Body" ) != "" && request.getParameter( "Name" ) != null && request.getParameter( "Body" ) != null ) { 66 chatList.add( new Chatclass( name, body ) ); 67 68 } 69 } 70 int number = 5; 71 if ( request.getParameter( "num" ) != null ) { 72 number = Integer.parseInt( request.getParameter( "num" ) ); 73 74 } 75 76 77 PrintWriter out = response.getWriter(); 78 out.println( "<html>" ); 79 out.println( "<head>" ); 80 out.println( "<title>Chat</title>" ); 81 out.println( "</head>" ); 82 out.println( "<body>" ); 83 out.println( "<h1>簡易チャット</h1>" ); 84 85 out.println( "<form action='/TomcatTest/Chat' method='post'>" ); 86 87 out.println( "名前 : <input type=text name=\"name\" size=15>" ); 88 out.println( "<br>" ); 89 out.println( "<input type=text name=\"body\" size=30>" ); 90 91 out.println( "<input type=submit value=\"投稿\" name=do >" ); 92 out.println( "<input type=submit value=\"再読み込み\" name=reload>" ); 93 out.println( "<br>" ); 94 out.println( "表示件数:<input type ='number' name='num' value ='5' min='1' max='30' step='1'>行" ); 95 out.println( "<input type ='submit' value ='設定' name='setting' >" ); 96 out.println( "</form>" ); 97 98 System.out.println( "dd" ); 99 System.out.println( chatList.size() ); 100 101 for ( int i = 0; i < chatList.size(); i++ ) { 102 System.out.println( "ss" ); 103 out.println( ( chatList.size() - i ) + "" + chatList.get( chatList.size() - i ).getName() + "" + chatList.get( chatList.size() - i ).getBody() ); 104 System.out.println( "mm" ); 105 if ( i == number - 1 ) { 106 break; 107 108 } 109 } 110 out.println( "</body>" ); 111 out.println( "</html>" ); //HTMLを終了 112 chatapp.setAttribute( "chatList", chatList ); //アプリケーションスコープにインスタンスを保存 113 114 115 } 116} 117 118

###クラス

public class Chatclass { private String name = ""; private String body = ""; public Chatclass( String name, String body ) { this.name = name; this.body = body; } public String getBody() { return body; } public String getName() { return name; } }

###補足情報(言語/FW/ツール等のバージョンなど)
java
eclipse
Tomcat

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

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

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

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

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

guest

回答1

0

ベストアンサー

HTMLでの<input>タグのname属性と、受け取るservlet側でのgetAttributeの指定が異なることで、想定しているように動かないようです。

  • <input>タグのname属性: name
  • servletのgetAttribute指定: Name

※大文字、小文字の問題

まずは上記の指定をそろえてみると前進するかと思います。
またeclipseではデバッグ実行(ステップ実行)という機能があり、処理中の変数の中身などが処理中に確認できます。こちらの機能を利用するとよりデバッグがしやすいかと思います。

投稿2016/05/17 11:54

takyafumin

総合スコア2335

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

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

khr0404

2016/05/18 05:11

takyafuminさん  回答ありがとうございます。 大文字小文字の間違いと記述ミスがありました。 デバッグがあまり使い方がわからなくほとんど使っていなかったのでこれを機に 勉強しデバッグを利用しながら勉強していきます。
takyafumin

2016/05/18 05:20

eclipseのデバッグ機能はとても便利で強力です。 使い方を覚えると開発やデバッグがとても早くなりますのでおすすめですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問