![](/img/trans.png)
[英]If jsp generated class extends HttpServlet, how come we can extend it with one more class using extend tag?
[英]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應用程序的基本組合
如果您有一個resultSet並想要呈現它,請將必須呈現的信息加載到Collection(我喜歡List)並將其設置在適當的范圍內(會話,頁面,請求,很可能不是應用程序)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.