繁体   English   中英

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

[英]Java Serialized Class Objects with Java Servlets

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

我遇到麻烦的部分是合并可序列化的对象。 就我而言,可序列化的对象类是Accounts。 在servlet中,我需要知道如何操作它们(创建,存储,删除和检索)。

这是我正在引用的Account.java。 Account.java

//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;
        }
}

这是我将使用的Java servlet的示例。 FirstServlet.java

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();
    }
}

编辑如果只想向Servlet提交数据,则可以按照以下说明进行操作。 请注意,这是一种单向通信,因为HTML只能提交请求,而不能解析甚至接收不到任何结果。 这就是为什么您需要使用Javascript / jQuery发送和检索请求,或者从使用HTML更改为使用可以与Servlet一起使用的JSP的原因。

HTML

<form method="post or get" action="/web_context/servlet_mapping">
    <!-- inputs and buttons -->
</form>

Servlet的

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
    }
}

下面的原始答案

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

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

为了帮助来回送数据,建议您在后端使用Gson库 ,并以JSON格式发送所有数据。 这将使您非常容易地序列化和反序列化对象。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM