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