我写了一个Servlet小程序,如下:
实现的功能就是在页面上有一个输入框,一个按钮。
点按钮,可以把输入框的内容显示在页面上。
现在问题是,我想把多次的结果都显示在叶面上,应该怎么修改啊。
试了好多次都没有成功。
import javax.servlet.http.*; 
import java.io.*;
import javax.servlet.*; 
import java.util.*;public class B25_HelloWeb extends HttpServlet
{
    public void init(ServletConfig config) throws ServletException
    {
        super.init(config);
    }
    
    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
    {
        response.setContentType("text/html"); 
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC\"-//W3C//DTD HTML 4.0 " + 
        "Transitional//EN\">\n" + 
        "<HTML>\n" + 
        "<HEAD><TITLE>B25_HelloWeb</TITLE></HEAD>\n" + 
        "<BODY>\n");
        out.println("<form action=http://localhost:8080/B25_HelloWeb method=post>");
        out.println("<input type=\"text\" name="+"\"name\">");
        out.println("<input type=\"submit\" name="+"\"name\">");
        out.println("<br>");
        Enumeration parameters = request.getParameterNames();
        String param = null;
        while(parameters.hasMoreElements())
        {
            param = (String)parameters.nextElement();
            out.println(request.getParameter(param));
        }
        out.println("</BODY></HTML>"); 
        out.close();
    }    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
    {
       response.setContentType("text/html"); 
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC\"-//W3C//DTD HTML 4.0 " + 
        "Transitional//EN\">\n" + 
        "<HTML>\n" + 
        "<HEAD><TITLE>B25_HelloWeb</TITLE></HEAD>\n" + 
        "<BODY>\n");
        out.println("<form action=http://localhost:8080/B25_HelloWeb method=post>");
        out.println("<input type=\"text\" name="+"\"name\">");
        out.println("<input type=\"submit\" name="+"\"name\">");
        out.println("<br>");
        Enumeration parameters = request.getParameterNames();
        String param = null;
        while(parameters.hasMoreElements())
        {
            param = (String)parameters.nextElement();
            out.println(request.getParameter(param));
        }
        out.println("</BODY></HTML>"); 
        out.close();
    }}
据个例子,就是:
我先在输入框内输入1,点提交,页面上会显示1。
我在输入2,在1的后面会出现2。
。。

解决方案 »

  1.   

    自己再顶一下!
    看着代码长
    其实满简单的
    就是以前没做过SERVLET相关的
    不是很清楚
      

  2.   


    那你得把输入的东西存起来,比如存到一个ArrayList里
    然后把这个list对象放到session里,每次从session里取出list对象
    循环列出list中的内容另外doPost 里可以调用一下doGet 不用写2次重复代码
      

  3.   

    楼上的大哥,拿我想问一下哈
    怎么把list对象放到session里阿
    sevlet我真的是刚开始学习
    不是很懂啊!
      

  4.   

    session.setAttribute("otherList",list);
      

  5.   

    package studyB;import javax.servlet.http.*; 
    import java.io.*;
    import javax.servlet.*; 
    import java.util.*;
    import java.util.ArrayList;
    import java.util.List;public class B26_HelloWeb extends HttpServlet
    {
        public void init(ServletConfig config) throws ServletException
        {
            super.init(config);
        }
        
        public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
        {
            response.setContentType("text/html"); 
            PrintWriter out = response.getWriter();
            out.println("<!DOCTYPE HTML PUBLIC\"-//W3C//DTD HTML 4.0 " + 
            "Transitional//EN\">\n" + 
            "<HTML>\n" + 
            "<HEAD><TITLE>B26_HelloWeb</TITLE></HEAD>\n" + 
            "<BODY>\n");
            out.println("<form name=\"B26\" action=http://localhost:8080/B26_HelloWeb method=post>");
            out.println("<input type=\"text\" name="+"\"enter\" size=\"10\">");  
            out.println("<button  ONCLICK=\"funSubmit(1);\">submit</button>");
            out.println("<br>");
            out.println("<%function funSubmit(int i)");
            out.println("{");
            out.println("B26.submit;");
            out.println("return true;");
            out.println("} %>");
            Enumeration parameters = request.getParameterNames();
            String param = null;
            List list = new ArrayList();
            while(parameters.hasMoreElements())
            {
                param = (String)parameters.nextElement();
                list.add(request.getParameter(param));
            }
            int length = list.size();
            int i;
            for(i = 0; i < length; i++)
            {
                out.println(list.get(i).toString());
            }
            HttpSession session = request.getSession();
            session.setAttribute("list",list);
            out.println("</BODY></HTML>"); 
            out.close();
        }    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
        {
            doGet(request,response);
        }
    }我已经按照上面大哥的意思吧程序改成这个样子了,编译可以通过,怎么就是不出结果呢。
    是不是我的理解错了呢!!!
      

  6.   

    没有大哥来帮忙了啊!!自己又弄不出来!!!!怎么办啊!!!!!!!难道学不成java了!!!好伤心啊!!!!!!!有什么好办法吗?!!!
      

  7.   

    http是一种无状态协议,你的程序一次只提交了一个值,所以一次只能显示一个。要想把上次的提交的值也显示出来,必须把上次的值再次提交。可以使用隐藏域提交。使用list根本没有用的。
      

  8.   

    现在倒好,还出现分歧了!!
    前面说list,后面说隐藏域提交
    实在不知道该怎么做了啊!!
      

  9.   

    <input type="hidden" name="name" value="要显示的结果">
      

  10.   

    List list=request.getAttribute("list");
    if(list==null)
      list=new ArrayList();
    list.add("");
    request.setAttribute("list",list);
      

  11.   

    String str=request.getParameter(param);
    List list=request.getAttribute("list");
    if(list==null)
      list=new ArrayList();
    if(str!=null)
      list.add(str);
    request.setAttribute("list",list);
    for(list)//显示
      

  12.   

    使用什么并不是很重要,不过数据肯定是要提交的.可以把数据放在request提交,当然也可以通过session。import javax.servlet.http.*; 
    import java.io.*;
    import javax.servlet.*; 
    import java.util.*;public class B26_HelloWeb extends HttpServlet
    {
        public void init(ServletConfig config) throws ServletException
        {
            super.init(config);
        }
        
        public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
        {
            response.setContentType("text/html"); 
            PrintWriter out = response.getWriter();
            out.println("<!DOCTYPE HTML PUBLIC\"-//W3C//DTD HTML 4.0 " + 
            "Transitional//EN\">\n" + 
            "<HTML>\n" + 
            "<HEAD><TITLE>B25_HelloWeb</TITLE></HEAD>\n" + 
            "<BODY>\n");
            out.println("<form action=http://localhost:8080/examples/servlet/B26_HelloWeb method=post>");
            out.println("<input type=\"text\" name="+"\"name\">");
            out.println("<input type=\"submit\" name="+"\"name\">");
            out.println("<br/>");
            String str=request.getParameter("name");
            List list=(List) request.getSession().getAttribute("list");
            if(list==null)
                list=new ArrayList();
            if(str!=null)
                list.add(str);
            request.getSession().setAttribute("list", list);
            for(int i = 0; i < list.size();i++) {
                out.println("<br/>");
                out.println(list.get(i));
            }        out.println("</BODY></HTML>"); 
            out.close();
        }    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
        {
            doGet(request,response);    }}