![](/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.