[英]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.