2017-05-05 32 views
0

我目前有一個類項目,我需要在Tomcat上部署一個簡單的銀行Web應用程序。打開應用程序後,我們應該將其帶到一個HTML文件中,該文件包含一個表單,供用戶提交用戶名或讓他們創建一個新帳戶。這必須通過使用Java servlet完成,其中映射在web.xml中完成。帶Java Servlets的Java序列化類對象

我遇到麻煩的部分是包含可序列化的對象。就我而言,可序列化的對象類是Accounts。在servlets中,我需要知道如何操作它們(創建,存儲,刪除和檢索)。

這是我引用的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(); 
    } 
} 
+1

您好!歡迎來到StackOverflow!請更具體地說明你的問題。你遇到了什麼錯誤?你到目前爲止嘗試過什麼?謝謝! :) –

回答

0

編輯如果你只是想將數據提交到你可以做到這一點,如下所述的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 library並以JSON格式發送所有數據。這將允許你很容易地序列化和反序列化你的對象。

您可以有一個接收數據和操作類型並將數據路由到特定操作的servlet。或者您可以爲每個操作都有一個servlet。

你沒有提到數據庫,但你也需要這樣做。

+0

對於我們的項目,我們沒有使用任何數據庫。這完全是關於通過使用servlet和cookie來添加狀態的Web服務器的抽象。我不喜歡帶任何其他語言。這是一個學校項目。我們有一個初始的HTML文件,servlet在web.xml中映射。所有的servlet都是。java文件。其他任何事情都會超出範圍。 – lli

+0

@lli我想在這種情況下,您唯一的選擇是將表單提交給servlet,然後解析所有輸入並手動創建對象。 – tima

+0

你介意給出一些這樣的例子代碼嗎? – lli