Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自servlet的返回向量_Java_Html_Servlets_Vector - Fatal编程技术网

Java 来自servlet的返回向量

Java 来自servlet的返回向量,java,html,servlets,vector,Java,Html,Servlets,Vector,我必须做一个HTML页面,有两个文本框,一个用于名称,另一个用于amount,然后有一个小部件,让我选择我创建的账户类型,储蓄或支票,然后是一个发送按钮,这些信息将被发送到servlet。servlet必须根据帐户类型创建一个对象,然后将其保存在向量,然后servlet需要使用向量上的信息和第一页中的相同小部件响应HTML文本区域,以便插入另一个帐户,当您插入另一个servlet时,您必须将信息发送到同一个servlet,然后执行相同的工作。但是在HTML文本区域中必须出现第一个帐户和我刚刚创建

我必须做一个HTML页面,有两个文本框,一个用于名称,另一个用于amount,然后有一个小部件,让我选择我创建的账户类型,储蓄或支票,然后是一个发送按钮,这些信息将被发送到servlet。servlet必须根据帐户类型创建一个对象,然后将其保存在
向量
,然后servlet需要使用
向量
上的信息和第一页中的相同小部件响应HTML文本区域,以便插入另一个帐户,当您插入另一个servlet时,您必须将信息发送到同一个servlet,然后执行相同的工作。但是在HTML文本区域中必须出现第一个帐户和我刚刚创建的帐户,以此类推

问题是我可以做所有这些,但我不能做的是显示向量的所有信息,因为某种原因,我只是得到了我刚刚在文本区域创建的帐户

下面是servlet代码。注意,
toString()
返回存储在
向量上的所有信息,并且
addAccount()
将帐户添加到
向量中

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ServletPrincipal extends HttpServlet {
    public void doPost(HttpServletRequest request,
                       HttpServletResponse response)
    throws ServletException, IOException {

        response.setContentType("text/html");

        PrintWriter out = response.getWriter();

        String nombre = request.getParameter("nom");
        String monto = request.getParameter("mon");
        String tipo = request.getParameter("fgcghch");


        double montoi = Double.parseDouble(monto);
String a="ah";
String b="che";

AccountsLedger objeto = new AccountsLedger();

if(a.equals(tipo)){

    SavingsAccount cnt1= new SavingsAccount(nombre, montoi, 2);

    objeto.addAccount(cnt1);

    objeto.toString();
    out.println("<textarea rows='20' cols='20'>"+objeto.toString()+"</textarea>");
    out.print("<form action='ServletPrincipal' method='post'><input type='text' name='nom'><input type='text' name='mon'>");
    out.println("<select name='fgcghch'><option value='ah'>Ahorro</option><option value='che'>Cheque</option></select>");
    out.println("<input type='submit' name='boton'></form>");
    }
if(b.equals(tipo)){


CheckingAccount cnt= new CheckingAccount(nombre, montoi);



objeto.addAccount(cnt);
String y = objeto.toString();
out.println("<textarea rows='2' cols='20'>"+y+"</textarea>");
    out.print("<form action='ServletPrincipal' method='post'><input type='text' name='nom'><input type='text' name='mon'>");
    out.println("<select name='fgcghch'><option value='ah'>Ahorro</option><option value='che'>Cheque</option></select>");
    out.println("<input type='submit' name='boton'></form>");


}




    }
}
import java.io.*;
导入javax.servlet.*;
导入javax.servlet.http.*;
公共类ServletPrincipal扩展了HttpServlet{
public void doPost(HttpServletRequest请求,
HttpServletResponse(响应)
抛出ServletException、IOException{
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
字符串nombre=request.getParameter(“nom”);
字符串monto=request.getParameter(“mon”);
字符串tipo=request.getParameter(“fgcghch”);
double montoi=double.parseDouble(monto);
字符串a=“ah”;
字符串b=“che”;
AccountsLedger objeto=新AccountsLedger();
如果(a等于(tipo)){
SavingsAccount cnt1=新的SavingsAccount(nombre,montoi,2);
对象添加帐户(cnt1);
objeto.toString();
out.println(“+objeto.toString()+”);
输出。打印(“”);
out.println(“A支票”);
out.println(“”);
}
如果(b等于(tipo)){
CheckingAccount cnt=新的CheckingAccount(nombre,montoi);
目标账户(cnt);
字符串y=objeto.toString();
out.println(“+y+”);
输出。打印(“”);
out.println(“A支票”);
out.println(“”);
}
}
}

您所要做的就是在doPost方法之前创建对象accountledget

首先,不要使用Vector,使用ArrayList。它的工作原理是相同的,但不在方法上使用同步关键字,这实际上对性能是一件好事。事实上,两个线程访问一个数组的情况非常罕见,如果它们访问了数组,那么synchronized关键字对于集合类来说是毫无用处的

第二,考虑如果你想在这里写一个servlet或者JSP是否更好。JSP基本上是一个由内而外的servlet,因此如果HTML多于Java,那么它就有意义了

第三,使用现代Java迭代ArrayList非常简单,因此,如果目的是创建一个字符串以插入HTML,那么可以这样做:

ArrayList<String> values = // ... built somewhere
StringBuilder sb = new StringBuilder();
for (String v : values) {
  sb.append(v);
}
out.println(sb.toString());
ArrayList值=/。。。建在某处
StringBuilder sb=新的StringBuilder();
用于(字符串v:值){
某人附加(v);
}
out.println(sb.toString());

如果我正确理解您的问题,您需要为多个请求保留
对象。现在,为每个请求创建一个新的请求。不要为此使用servlet的成员(servlet需要是无状态的),但可以使用会话

而不是

AccountsLedger objeto = new AccountsLedger();
使用


我是迷路的代码也没有太大帮助,因为它不是自文档。有没有机会澄清功能需求?它需要保存账户信息,向量可以保存支票账户和储蓄账户。首先是一个html页面,其中包含我在开始时指定的小部件,然后该信息被发送到servlet(在那里的servlet),它必须创建对象并保存它,然后返回一个html页面,其中包含方法toString()返回的信息,以及我在开始时提到的小部件,所以我可以插入另一个帐户,然后返回第一个帐户和我刚刚创建的帐户的信息。我知道这不是最好的解释,但我真的很累,我可以睁大眼睛。@david:也许你应该在睡觉的时候回来。你在这里期待帮助,所以不尽可能好地问这个问题可能被认为是不尊重。我很乐意为所有三段给你+3,但是,唉,我不能(+1)首先:这不是什么leet#irc频道。请用真实的语言。第二,“我”可能是你的意思,而不是“你”,毕竟这是你的问题,不是我们的问题。是的,但在哪里?看看我的答案。那么很抱歉,你不必粗鲁。
HttpSession session = request.getSession();
AccountsLedger objeto = (AccountsLedger)session.getAttribute("objeto");
if (objeto == null) {
  objeto = new AccountsLedger();
  session.setAttribute("objeto", objeto);
}