我知道jsp_service()
方法无法被覆盖,但我的一位朋友说我们可以在JSP中使用scriptlet来覆盖该方法,并且可以在该方法中做任何我们需要的事情。
任何人都可以解释这是真的吗?
答案 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()
已经定义的编译错误。
答案 1 :(得分:1)
无论我们在scriplet中写什么,都会将jsp_service()
方法转换为生成的Servlet。因此,要覆盖此方法,您只需在scriplet中编写代码即可。但是,您无法手动覆盖此方法。这将导致编译失败。