使用Java servlet的Java序列化类对象

使用Java servlet的Java序列化类对象,java,tomcat,servlets,serialization,Java,Tomcat,Servlets,Serialization,我目前有一个类项目,需要在Tomcat上部署一个简单的银行web应用程序。打开应用程序后,我们将看到一个HTML文件,其中包含一个表单,供用户提交用户名或创建新帐户。这必须通过使用Java servlet来完成,其中映射是在web.xml中完成的 我遇到的问题是合并可序列化对象。在我的例子中,可序列化对象类是Accounts。在servlet中,我需要知道如何操作它们(创建、存储、删除和检索) 这是我引用的Account.java。 //将从中创建对象的类 //然后作为参数传递。 导入java

我目前有一个类项目,需要在Tomcat上部署一个简单的银行web应用程序。打开应用程序后,我们将看到一个HTML文件,其中包含一个表单,供用户提交用户名或创建新帐户。这必须通过使用Java servlet来完成,其中映射是在web.xml中完成的

我遇到的问题是合并可序列化对象。在我的例子中,可序列化对象类是Accounts。在servlet中,我需要知道如何操作它们(创建、存储、删除和检索)

这是我引用的Account.java。

//将从中创建对象的类
//然后作为参数传递。
导入java.io.Serializable;
公共类帐户实现可序列化
{
私人国际帐户;
私家姓;
私有字符串名;
私人双平衡;
公共帐户(int acctNo、字符串sname、字符串fnames、双bal)
{
acctNum=acctNo;
姓氏=斯奈姆;
名字=fnames;
余额=余额;
}
public int getAcctNum()
{
返回容器;
}
公共字符串getName()
{
报税表(姓名+姓氏);
}
公共双getBalance()
{
收益余额;
}
公共双支取(双倍金额)
{
如果(金额0)
余额+=金额;
}
}
下面是一个我将使用的Javaservlet示例。

import java.io.*;
导入javax.servlet.*;
导入javax.servlet.http.*;
公共类FirstServlet扩展了HttpServlet
{
public void doPost(HttpServletRequest请求,
HttpServletResponse(响应)
抛出IOException、ServletException
{
response.setContentType(“text/HTML”);
字符串user=request.getParameter(“usrname”);
PrintWriter out=response.getWriter();
/*
out.println(“”);
out.println(“”);
println(“简单Servlet”);
out.println(“”);
out.println(“”);
out.println(“


”); println(“一个简单的Servlet”); out.println(“”); out.println(“”); */ out.print(“简单Servlet


一个简单Servlet

用户名:“+user+”); out.flush(); } }
编辑如果您只想将数据提交到servlet,可以按如下所述操作。请注意,这是一种单向通信,因为HTML只能提交请求,但无法解析甚至接收任何返回的结果。这就是为什么您需要使用Javascript/jQuery来发送和检索请求,或者从使用HTML改为使用可以与servlet一起工作的JSP

HTML

下面的原始答案

这种情况下的一种方法是将表单放在HTML文件中,在提交表单或其他用户操作时,使用jQuery向后端servlet发送Post或Get(取决于操作)请求

servlet接收HttpServletRequest对象中发送给它的所有数据,因此可以读取和处理使用jQuery发送的数据

为了帮助来回封送数据,我建议您在后端使用,并以JSON格式发送所有数据。这将允许您非常轻松地序列化和反序列化对象

可以有一个servlet接收数据和操作类型,并将数据路由到特定操作。或者,您可以为每个操作使用一个servlet


您没有提到数据库,但您也需要它。

您好!欢迎来到StackOverflow!请对你的问题说得更具体些。你犯了什么错误?到目前为止你都试了些什么?谢谢!:)对于我们的项目,我们没有使用任何数据库。这一切都是关于抽象一个Web服务器,我们在其中使用servlet和cookie添加状态。我不想带任何其他语言进来。这是一个学校项目。我们有一个初始HTML文件,其中servlet映射到web.xml中。所有servlet都是.java文件。其他任何内容都将超出范围。@lli我想在这种情况下,您唯一的选择是将表单提交到servlet,然后解析所有输入并手动创建对象。@lli我已更新了答案,以提供一个示例,但请阅读有关HTML和servlet之间通信的说明。谢谢更新。我理解HTML和servlet之间的交互,但我要解决的问题主要是创建一个java可序列化对象(上面的Account.java)并在我的servlet代码中使用它。我希望能够接受表单输入并创建一个帐户,并显示我拥有的所有帐户。您是否尝试实现我发布的示例?就像我说的HTML和Java是单向的,所以除非使用JSP页面或Javascript请求,否则“显示所有帐户”是行不通的
//Class from which objects will be created 
//and then passed as arguments.

import java.io.Serializable;

public class Account implements Serializable
{
        private int acctNum;
        private String surname;
        private String firstNames;
        private double balance;

        public Account(int acctNo, String sname, String fnames, double bal)
        {
                acctNum = acctNo;
                surname = sname;
                firstNames = fnames;
                balance = bal;
        }

        public int getAcctNum()
        {
                return acctNum;
        }

        public String getName()
        {
                return (firstNames + " " + surname);
        }

        public double getBalance()
        {
                return balance;
        }

        public double withdraw(double amount)
        {
                if (amount <= balance)
                        return amount;
                else
                        return 0;
        }

        public void deposit(double amount)
        {
                if (amount > 0)
                        balance += amount;
        }
}
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class FirstServlet extends HttpServlet
{
    public void doPost(HttpServletRequest request,
                        HttpServletResponse response)
            throws IOException,ServletException
    {
        response.setContentType("text/HTML");

        String user = request.getParameter("usrname");
        PrintWriter out = response.getWriter();
        /*
        out.println("<HTML>");
        out.println("<HEAD>");
        out.println("<TITLE>Simple Servlet</TITLE>");
        out.println("</HEAD>");
        out.println("<BODY>");
        out.println("<BR><BR><BR>");
        out.println("<CENTER><H1> A Simple Servlet </H1></CENTER>");
        out.println("</BODY>");
        out.println("</HTML>");
        */
        out.print("<html><head><title>Simple Servlet</title></head><body><br><br><br><CENTER><H1> A Simple Servlet </H1><br><br>Username: "+ user +"</CENTER></body></html>");
        out.flush();
    }
}
<form method="post or get" action="/web_context/servlet_mapping">
    <!-- inputs and buttons -->
</form>
public class TestServlet extends HttpServlet {

    private static final long serialVersionUID = -3247638875724522260L;

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // use these to get the form inputs
        request.getParameterMap();
        request.getParameter("some_parameter");

        // process parameters

        // create any objects

        // perform actions on object
    }

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // same thing here
    }
}