JSP到Servlet的关系

时间:2010-07-07 20:52:16

标签: java jsp architecture servlets

书籍中有很多很多例子,互联网上有关如何将Servlet用作JSP的例子。但我想知道使用它们的最佳方式是什么,并注重良好的架构。

Servlet与JSP之间是否存在一对一的关系?像ASP.NET“Code-Behind”页面一样?

或者更像ASP.NET MVC,一个Servlet控制多个动作,并转发到多个视图?

这是关于纯Java EE开发的问题。请不要简单地建议另一个框架。

4 个答案:

答案 0 :(得分:5)

  

Servlet与JSP之间是否存在一对一的关系?像ASP.NET“Code-Behind”页面一样?

取决于。对于一个可能有3到5页的小型网站来说,它是可以负担得起的,但是高于它会产生很多样板代码,当你以合理的方式自己重构所有重复的代码时,你几乎会以自己开发的MVC框架结束。 / p>

  

或者更像ASP.NET MVC,使用单个Servlet控制多个操作,并转发到多个视图

当有一个相当不错的Web应用程序时,这是更值得推荐的。 ASP.NET MVC的Java版本就是JSF(JavaServer Faces)。它是一个纯Java EE提供的基于组件的MVC框架,它提供FacesServlet作为唯一的控制器,这样你最终只能得到一个Javabean类作为 model 和JSP(或最近)的Facelets页面为 view 。 Facelets的?是的,从JSF 2.0开始,复古JSP已被Facelets替换为默认视图技术。 Facelets是基于XHTML的。

如果您想要移植一个控制器servlet,请检查front controller pattern。您可以在this answer中找到另一个基本启动示例。

另见:

答案 1 :(得分:2)

这个怎么样?我在我的一个学校项目中做到了这一点:

alt text http://img576.imageshack.us/img576/3064/mvci.jpg

这是我基于对servlet和JSP的理解的假设。 我希望得到您的意见和想法,以改善这一点。

答案 2 :(得分:1)

不,从Servlet到JSP的一对一关系并不是绝对必要的,因为它们是不同的东西。

我个人喜欢使用Servlet作为控制器,然后在处理HTTP REQUEST之后,使用一个或多个JSP页面呈现响应(HTML)。 ASP.NET“Code-Behind”不适用,因为CODE-BEHIND与其对应的ASPX文件是一对一关系。 AFAIK,你不能用不同的ASPX页面渲染一个ASP.NET“代码”。

无论如何,这不是一个简单的问题,但根据我的经验,只有简单的旧Servlets + JSP方法通常比其他任何框架(Struts,JSF和其他许多框架)更清晰,更简单,更少错误。 / p>

答案 3 :(得分:0)

  • JSP是servlet(伪装)。每个jsp都被转换并编译为servlet。查看tomcat的/ work目录以获取exmaple
  • JSP是一种视图技术 - 即它们使编写可重用页面变得更容易
  • JSP只应用于显示常规servlet预先计算的结果,放在请求/会话中,并转发到相应的jsp。