Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(テキストボックス追記)
閲覧数:985
掲示板(テキストボックス追記)
名前
匿名
題名 テキストボックス追記
質問内容

質問を評価する
(0ポイント)
ブラウザ上でテキストボックスを作り
文字を追記していくというのをやっています
なかなかうまく表示されないので
どこがわるいのか
どういう風にすればいいか
アドバイスお願いします

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.*;
import javax.servlet.http.*;

public class Web extends HttpServlet{
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
        
        String param = request.getParameter("aaa");
        
        HttpSession session = request.getSession(false);
        
        if(param!=null){
            session.setAttribute("param",param);
        }
        
        response.setContentType("text/plain; charset=Shift_JIS");
        //文字化けしないようにShift_JIS指定
        PrintWriter out = response.getWriter();
        //
        out.println("<html>");
        out.println("<form>");
        out.print("<input type='text' name=aaa>");
        out.println("<input type='submit' value=クエリ送信>");

        request.setCharacterEncoding("Shift_JIS");
        HttpSession mozi = request.getSession();
        Enumeration names=mozi.getAttributeNames();
        while(names.hasMoreElements()){
            String kkk=(String)names.nextElement();
            out.println(mozi.getAttribute(kkk)+"<br>");
        }
        out.println("</html>");
    
    
    }
}
質問日時 2013-04-01 17:07:36
名前
匿名
回答内容

回答を評価する
(0ポイント)
Servletで追記はできんよ。
実行される順番を考えてみよう。
回答日時 2013-04-01 17:29:00
名前
匿名
回答内容

回答を評価する
(0ポイント)
質問者です
追記はできないのですか・・・
セッションで一覧表示ってことですよね??

順番少し見直してみます
回答日時 2013-04-01 17:54:35
名前
匿名
回答内容

回答を評価する
(0ポイント)
あ。
ボタンを押したら送信しないでテキストボックスに追記した
いんだと誤解した。
テキストボックスに入れたものを送信するたびに追記して出
したいのか。

セッションに入れてるのが最初だけだからだね。
取ってるEnumerationもセッションに例えば"param1" 
"param2"…と入れたときに、それらを順番に取るものだな。
回答日時 2013-04-01 20:09:09
名前
匿名
回答内容

回答を評価する
(0ポイント)
質問者です。
テキストボックスの下に追記していきたい感じです。
前の要素は残るようなんですが
下に追記して足していくってのがまだうまくいかない感じです。
もう少しがんばってみます。よければアドバイスお願いします。
回答日時 2013-04-02 09:29:48
名前
匿名
回答内容

回答を評価する
(0ポイント)
2つ前の入力値を1つ前の入力値で上書きしてるからでは
回答日時 2013-04-02 10:51:29
名前
匿名
回答内容

回答を評価する
(0ポイント)
質問者です
上書きですか・・・
根本的に理解が足りてないようです・・・
流れをもう一度考えて 勉強してみます
回答日時 2013-04-02 11:30:16
名前
匿名
回答内容

回答を評価する
(0ポイント)
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.*;
import javax.servlet.http.*;

public class Aa extends HttpServlet{
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
        
        response.setContentType("text/plain; charset=Shift_JIS");
        //文字化けしないようにShift_JIS指定
        
        request.setCharacterEncoding("Shift_JIS");
       
        
        String param = request.getParameter("aaa");
        
        HttpSession session = request.getSession();
        
        if(param!=null){
            session.setAttribute("aaa",param);
        }
        
       
        PrintWriter out = response.getWriter();
        //出力
        out.println("<html>");
        out.println("<form>");
        out.println("<form method=get action=../Aa>");
        out.print("<input type='text' name=aaa>");
        out.println("<input type='submit' value=クエリ送信>");

        
        
        Enumeration names=session.getAttributeNames();
        
        while(names.hasMoreElements()){
            String kkk=(String)names.nextElement();
            out.println(kkk+"<br>");
        }
        out.println("</html>");
    
    
    }
}
回答日時 2013-04-02 11:46:16
名前
匿名
回答内容

回答を評価する
(0ポイント)
>session.setAttribute("param",param);
これって何をしているか分かりますか?

>names.hasMoreElements()
ここでどんな内容が返ってくるのを期待していますか?


2013-04-01 20:09:09の匿名さんの回答にヒントがあるの
ですけど・・・
回答日時 2013-04-02 11:49:54
名前
匿名
回答内容

回答を評価する
(0ポイント)
質問者です

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.*;
import javax.servlet.http.*;

public class Aa extends HttpServlet{
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
        
        response.setContentType("text/plain; charset=Shift_JIS");
        //文字化けしないようにShift_JIS指定
        
        request.setCharacterEncoding("Shift_JIS");
       
        
        String param = request.getParameter("aaa");
        
        HttpSession session = request.getSession();
        
        if(param!=null){
            session.setAttribute("aaa",param);
        }
       
       
        PrintWriter out = response.getWriter();
        //出力
        out.println("<html><body>");
      
        out.println("<form method=get action=../studyB/Aa>");
        out.print("<input type='text' name=aaa>");
        out.println("<input type='submit' value=クエリ送信>");

        
       
        Enumeration names=session.getAttributeNames();
        
        while(names.hasMoreElements()){
            String kkk=(String)names.nextElement();
            out.println(kkk+"<br>");
        }  
        out.println("</form>");
        out.println("</body></html>");

と少しなおしてみたのですが まだうまくはいきません・・・
>session.setAttribute("param",param);
これって何をしているか分かりますか?

セッションに登録のようなものと認識してます

>names.hasMoreElements()
ここでどんな内容が返ってくるのを期待していますか?


セッションがなくなるまで trueを返していただきたいです

ひとつしか登録できてないってことでしょうか・・??
回答日時 2013-04-02 12:03:11
名前
匿名
回答内容

回答を評価する
(0ポイント)
コードを書くことも大事ですが、APIの仕様も学びましょう

http://www.javaroad.jp/servletjsp/sj_servlet6.htm

ここのサイトのページですが、落ち着いて最初から読んでみてください。
特に自分が使っているメソッドの部分。
回答日時 2013-04-02 12:10:39
名前
匿名
回答内容

回答を評価する
(0ポイント)
質問者です

なんとか下に追記して表示させることができました
しかし 一番下に追記していきたいのですが
昇順?降順?とも違った並びで表示されたり
同じものは入力できなかったりしています
何度もすいません
アドバイスお願いします

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.*;
import javax.servlet.http.*;

public class Aa extends HttpServlet{
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
        
        response.setContentType("text/plain; charset=Shift_JIS");
        //文字化けしないようにShift_JIS指定
        
        request.setCharacterEncoding("Shift_JIS");
       
        
        String param = request.getParameter("aaa");
        
        HttpSession session = request.getSession();
       
      
        if(param!=null){
            session.setAttribute(param,"aaa");
       
        }
       
       
        PrintWriter out = response.getWriter();
        //出力
        out.println("<html><body>");
      
        out.println("<form>");
        out.print("<input type='text' name=aaa>");
        out.println("<input type='submit' value=クエリ送信><br>");

        
       
        Enumeration names=session.getAttributeNames();
        //get・・すべてのセッション取得
        //enumerationは 繰り返しに必要
        while(names.hasMoreElements()){
            String kkk=(String)names.nextElement();
            out.println(kkk+"<br>");
        }  
        out.println("</form>");
        out.println("</body></html>");
    
    
    }
}
回答日時 2013-04-02 13:52:25

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道