可以覆盖jsp_service()方法吗?

时间:2013-06-04 05:55:06

标签: jsp servlets

我知道jsp_service()方法无法被覆盖,但我的一位朋友说我们可以在JSP中使用scriptlet来覆盖该方法,并且可以在该方法中做任何我们需要的事情。

任何人都可以解释这是真的吗?

2 个答案:

答案 0 :(得分:9)

不是不是真的。

获取示例JSP:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
    </body>
</html>

如果检查此JSP的生成的Servlet。您会发现包含HTML代码的_jspService方法为out.write

为什么?

因为我们在JSP中编写的代码将被放置在生成的servlet类的_jspService()中(来自JSP).means _jspService()已经被我们所淹没。所以如果我们试图覆盖{{ 1}}它将给出关于方法_jspService()已经定义的编译错误。

阅读更多why jspService() cannot be overridden?

答案 1 :(得分:1)

无论我们在scriplet中写什么,都会将jsp_service()方法转换为生成的Servlet。因此,要覆盖此方法,您只需在scriplet中编写代码即可。但是,您无法手动覆盖此方法。这将导致编译失败。