簡體   English   中英

如何使JSP頁面擴展抽象HttpServlet

[英]How to make JSP page extend abstract HttpServlet

我正在開發一個可以處理數據庫中多個表的Web應用程序。 設計要求指定每個表都有自己的頁面可供使用。 在大多數情況下,服務器端代碼的很大一部分在所有頁面中是相同的,頁面特定的東西主要處理特定表的sql(並且它們都具有不同的結構,BTW)。

所以我認為組織代碼是明智的,這樣所有常用方法都在一個共享位置,只留下JSP頁面上的唯一實現。

我試圖創建的結構是有一個抽象的超類,我們稱之為MyServlet ,它擴展了HttpServlet 我的每個JSP頁面都擴展了這個超類。

但是,當我去測試時,我的頁面現在無法加載HTTP 405 Method not allowed錯誤。

出於安全/商業原因,我不能簡單地復制和粘貼我的代碼,但我可以發布一般結構。 我的Servlet類看起來像這樣:

public abstract class MyServlet extends HttpServlet
{
     public void someMethod()
     {
          abstractMethod();
     }

     protected abstract void abstractMethod();
}

我的jsp是這樣的:

<%@ extends="package.MyServlet" %>
<%! 
     public void abstractMethod()
     {
          someCode;
     }
%>
<% someMethod() %>

我應該指出MyServlet沒有實現doGet()doPost() 我假設JSP頁面本身是HttpServlet擴展,他們為這些方法提供了實現,但我也知道錯誤405的發生是因為至少doGet()不存在。

是否發生了錯誤,因為我沒有實現doGet() ,如果是這樣,我如何實現它以使它適用於我的JSP頁面? 或者是否有其他原因導致我收到此錯誤?

你能在一些實用程序類中創建你的方法然后包含它,而不是擴展它嗎?

<%@ page import="org.foo.HelperClass, org.foo.StaticHelper" %>
 <%! 
 HelperClass helper = new HelperClass();
 %>
 Helper Stuff: <%= helper.someMethod() %><br/>
 Static Stuff: <%= StaticHelper.someStaticMethod() %>

這會實現你的目標嗎?

我喜歡servlet和JSP Web應用程序的基本組合

  1. 業務代碼(包括數據庫訪問)位於servlet(或servlet調用的業務層)中。
  2. JSP專門用於呈現數據和檢索用戶輸入。

如果您有一個resultSet並想要呈現它,請將必須呈現的信息加載到Collection(我喜歡List)並將其設置在適當的范圍內(會話,頁面,請求,很可能不是應用程序)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM