gpt4 book ai didi

java - html 文件内内联后端代码

转载 作者:太空宇宙 更新时间:2023-11-04 12:39:53 25 4
gpt4 key购买 nike

每当我在 JSP 中编码并且内联 Java 代码如下时:

  <%
double num = Math.random();
if (num > 0.95) {
%>
<h2>You'll have a luck day!</h2><p>(<%= num %>)</p>
<%
} else {
%>
<h2>Well, life goes on ... </h2><p>(<%= num %>)</p>
<%
}
%>

这似乎让人们发疯,他们会发表评论,例如:

Why are you using technology that is 20 years old?

This is not manageable code

You Should be using Servlets

You should be using JSTL.

Even JSTL is no longer a Good Practice.

然而,当涉及到其他语言,例如 Python (Django) 和 C# (ASP.NET) 时,它似乎完全没问题。以下片段来自几个月前的教程。

所以这是怎么回事?只有 Java 找到了正确管理代码的方法,而其他语言却对 20 年前的技术袖手旁观?或者 Java 开发人员对完全可以接受的编码方式 react 过度?

{% for x in range(5) %}
<h1>Hello World</h1>
{% endfor %}

在 Razor 中,当您启动新项目时初始化 ASP.NET MVC 时,cshtml 页面具有内联 C# 代码。例如如下:

@{ var theMonth = DateTime.Now.Month; }
<p>The numeric value of the current month: @theMonth</p>

注意:请注意,我并不是在问如何避免在 JSP 中编写 Java 代码。我问为什么后端编码在其他语言(而不是 Java)中“不是问题”。

最佳答案

问题不仅仅是脚本。

问题在于表示和业务逻辑的分离。

当然,演示文稿(您的模板)需要逻辑,例如条件部分和重复值的循环,但数据(业务逻辑)的收集/准备属于用纯 Java/C#/Python 编写的操作处理程序,而不是嵌入(隐藏)在演示文稿模板中。

对于 Java 和 JSP,JSP 模板支持 scriptlet,但它也支持标记库,这基本上不推荐使用 scriptlet,以至于 scriptlet 经常被禁止(编码策略)。

对于其他模板语言,没有两种执行条件和循环逻辑的方法,您可以使用可用的方法。当这是唯一的方法时,您不能“禁止”这样做,但您仍然应该将该逻辑限制为纯粹的表示逻辑。

例如C#,或者更确切地说 ASP.NET,鼓励与 code-behind model 相同。 :

ASP.NET's code-behind model marks a departure from Classic ASP in that it encourages developers to build applications with separation of presentation and content in mind.

因此,对于 JSP,JSTL 应该足够强大,可以完成演示所需的任何操作。所有其他逻辑应该位于操作处理程序中。因此,永远(很少)需要它来编写小脚本。

关于java - html 文件内内联后端代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36926446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com