我知道该jsp_service()
方法不能被覆盖,但我的一个朋友说我们可以在 JSP 中使用 scriptlet 来覆盖该方法,并且可以在该方法中做我们需要的任何事情。
谁能解释这是真的吗?
不是它不是真的。
取一个示例 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。您会发现_jspService
包含 HTML 代码的方法为out.write
为什么 ?
由于我们在 JSP 中编写的代码将被放置在_jspService()
生成的 servlet 类(来自 JSP)_jspService()
中。意味着我们已经限制了它。因此,如果我们试图覆盖_jspService()
它,则会给出关于方法_jspService()
已定义的编译错误。
我们在 scriplet 中写入的任何内容都会转换为jsp_service()
生成的 Servlet 的方法。所以,要覆盖这个方法,你可以简单地用 scriplet 编写代码。但是,您不能手动覆盖此方法。会导致编译失败。