我是JSP编程新手,正在为家庭成员编写Web应用程序。在我学习的过程中,我听到很多关于JSP如何用于表示和Servlet是用于业务逻辑的信息。我的问题基本上是关于多远,当我使用JSTL将是不好的做法。下面是一个例子:我有一个我的应用程序的登录页面,并且我正在使用c:if的自定义函数连接到我的java类来处理表单。这会被认为是不好的MVC实践,或者,因为我只是从EL引用我的逻辑代码,这是JSP的合法用法吗?JSP和MVC最佳实践
回答
你的问题包含了很多什么是最佳实践,它引发了很多意见和辩论,这在本论坛中通常会被忽视。一般来说,JSP是MVC中的“V”视图,应该用来呈现由“M”odel提供的数据,这将是您的Java代码。 “C”型推车经常分散在M和V之间(邀请更多的辩论,抱歉)。
您在JSP中放置的任何逻辑都无法查看给定的数据并决定如何呈现它,并将其移至模型。您的登录页面应仅收集凭证并将其呈现给模型,模型将依次以“无效”作出响应并重新申请凭据(或完全失败),或者如果有效,则转到下一页。在实践中,恕我直言,你不应该放置很多操作数据的代码(除了格式化之外) - 创建表格条目,包装链接等。不应该(恕我直言)查询数据库,执行计算等,在JSP中 - 让模型做到这一点。
正如duffymo所言,JSP是旧的,但它们仍然有效。我建议你也考虑AngularJs(ng)(在阅读关于V1 v。V2的争议之后)。
JSP是一种过时的技术,只有很少的软件仍在使用它。但如果你想使用它,我建议你使用Oracle Coding Standards。这个页面应该给你一个你应该做什么和不应该做什么的清晰概念。
JSP的最佳实践是完全不使用JSP。我会试着解释为什么并且要清楚。
首先,我必须解释一些根本就没有JSP连接的东西,但它可以帮助您理解JSP技术的确切问题。
在函数式编程中有一个术语 - 纯函数。这意味着它没有副作用。另外,这样的功能确保了对于每次使用相同输入的调用,它总是返回相同的输出总是。 在OOP函数中不纯。它可能有副作用。它使我们的生活更加复杂。但重要的是,这些副作用只能发生在您的功能WITHIN。你可以调试它。或多或少是根据您的控制。
让我们想象一下我们写在JSP作为一个函数f与输入功能,我和输出端0:
O f(I)
与JSP的第一个问题是,它有副作用,这种副作用会发生不仅在你的功能
f
里面,还可以从外面影响它。一个简单的例子:您使用tiles
技术,您的jsp页面被用作tile模板中的组件。此模板的另一个组件使用getOutputstream()
方法并写入此输出流。但是应用程序可以在任何给定的响应中调用getOutputStream或getWriter,但不允许这两者都执行。 JSP引擎使用getWriter,所以你不能调用getOutputStream。而你在你的JSP页面工作得很好,当它是孤独的:java.lang.IllegalStateException:getOutputStream方法()已经被调用,这种响应
getOutputStream() has already been called for this response
- 使用函数可以显式输入参数。输入始终清晰。此外,您可以使用常量,或者,如果您的功能有副作用,则可以使用其他服务来获取要处理的数据。但它总是在你的功能之内,并且或多或少处于控制之下。使用JSP页面,您根本没有这种控制。输入数据可以与不同的servlet/web组件进行会话,输入的数据可以通过servlet和很多if语句放入请求范围。您必须首先调查此servlet的逻辑。当您创建“Hello World!”程序时,这种额外的复杂性并不明显,但是当您维护这些页面时,这会让您发疯,这是几年前写的。
- 我想你已经读过混合输出和逻辑不是一个好主意。 JSP允许人们这样做。因为它“非常方便”。
- 你不能在你的jsp页面中测试逻辑。或者这会让它变得更加困难。
您可以说正确使用jsp技术和应用最佳实践可解决大部分问题。是。同意。但它永远不会摆脱它的内部缺陷和复杂性。你总是必须检查,真的开发者是否遵循最佳实践?我们的日子里有更好,更好的技术。
注意:唯一的例外或用例,当我亲自使用它:用于本地化。您没有从服务器获取所有消息。您不想让服务器逐一获取本地化的字符串。例如,您希望获得一批值,这些值将用于您的Web表单。使用JSP + JS,您可以非常轻松地进行解析。
- 1. MVC最佳实践
- 2. MVC最佳实践问题
- 3. NSURLConnection MVC最佳实践
- 4. 最佳实践ASP.NET MVC 3
- 5. asp.net mvc viewdata最佳实践
- 6. ASP.NET MVC的最佳实践
- 7. ASP.NET MVC RenderAction最佳实践
- 8. ASP.Net MVC Cookies最佳实践
- 9. MVC ViewBag最佳实践
- 10. Sencha Touch MVC最佳实践
- 11. Zend Framework JOIN和MVC最佳实践
- 12. Spring + JSP url构建最佳实践
- 13. 是否有“最佳实践”为JSP中
- 14. 针对JSP的最佳设计实践
- 15. MVC实体分离的最佳实践
- 16. MVC实现/最佳实践问题
- 17. 最佳实践
- 18. 最佳实践
- 19. 最佳实践
- 20. 最佳实践:
- 21. 最佳实践
- 22. 最佳实践
- 23. 最佳实践
- 24. 最佳实践
- 25. 最佳实践
- 26. 最佳实践
- 27. 最佳实践
- 28. 最佳实践
- 29. 最佳实践
- 30. 最佳实践
JSP是一种较老的技术,是对Microsoft Active Server Pages的20世纪90年代的回应。更现代的方法是使用HTML5,CSS3和JavaScript查看网页; REST服务; HTTP servlets /控制器与客户端进行交互。 – duffymo
所以你会建议不要使用它们? –
请不要接受这个建议。 HTML5,CSS3和JavaScript都很棒,但对于动态Java Web应用程序根本无法帮到你。听起来就像你建立一个Java Web应用程序。使用JSP。否则,你会限制你可以做的事情。 – Shaggy