我们知道 JSP转换为Servlet,Servlet用于Buisines逻辑,JSP用于视图等。。但从理论上讲,您可以使用servlet完成JSP所做的大部分工作。反之亦然。
但是您可以使用Servlet而不是使用JSP实现任何功能,反之亦然吗?
我在一次采访中回答了这个问题,但是经过大量的谷歌搜索后没有找到任何答案。
答案 0 :(得分:5)
但有没有什么可以用Servlet实现而不用JSP实现,反之亦然?
从技术上讲, 只能实现 。
从功能上讲,遵循MVC设计模式并在servlet和JSP中的视图部分实现控制器部分时,可维护性存在巨大差异。 Servlet API提供了更清晰的抽象,可以挂钩特定的HTTP方法,并在将任何位写入响应之前控制请求/响应。反过来,JSP是响应的部分,它可以使某些任务更难实现,例如在发生异常时更改响应。
答案 1 :(得分:2)
两者之间存在一些微妙的差异:
生命周期不同,JSP被转换为文档形式(从JSP文件形式),然后转换为Java类文件(.java文件)。从这里开始,它们被视为servlet(编译等)。
JSP还具有Serv范围无法使用的Page范围。
就可重用性而言,JSP与Servlet不同。 JSP可以使用TagFile和TagLibraries作为可重用的逻辑单元,这是servlet无法做到的。
答案 2 :(得分:0)
唯一的区别是JSP可以由文档编写者编写,他们不了解Java。
除此之外没有差异。
答案 3 :(得分:0)
虽然技术上没有任何东西阻止你这样做,但是当没有用户界面时使用jsp会让我觉得这是徒劳的教训。 servlet不仅可以用于提供网页,还可以通过Apache HttpClient和Spring remoting之类的东西作为简单的远程处理机制。
答案 4 :(得分:0)
所说的(技术上没有任何servlet可以做的,JSP不能,反之亦然)是真的,但我相信面试官正在寻找的答案是 JSP只适合用于文本输出,而 servlet可以轻松输出文本或二进制数据。
答案 5 :(得分:0)
据我所知,JSP专门针对HTTPprotocol。我们无法将jsp用于任何其他协议实现。 但是协议特定的servlet我们可以创建只是继承(实现/扩展)对应的基本协议clasess。 在正常情况下(HTTP协议实现),我们也可以通过JSP实现servlet给出的所有舒适性。