关于java:关于在JSP中使用scriptlet

about using scriplets in JSP

本问题已经有最佳答案,请猛点这里访问。

我刚接触JSP。我使用JSP创建了一个Web应用程序。

我在JSP脚本中编写了Java代码(EDOCX1,0)。对于数据库连接,我也采用了同样的方式。例子:

1
2
3
4
5
6
7
8
9
10
11
12
   html code;
  <%
    database connectivity code;

  %>

     some jquery code;

 <%

    again database connectivity code;
 %>

但有些人告诉我,它有一个很大的缺点。"通过使用Scriptlet声明,一次只能有一个人使用您的网站而不会发生冲突"我做得对吗?以这种方式构建Web应用程序是正确的方法吗?


这是个坏主意,但这并不是因为一次只能有一个人使用这个网站。这是个坏主意,因为代码将变得难以维护。数据库连接代码应该与视图逻辑分开。也许把它放在一个servlet中(理想情况下它会被抽象到某个持久层中)。servlet将从数据库中获取数据,并使其可供JSP呈现。


如果您在脚本中放入的代码会导致这种情况发生,JSTL、Struts等都会生成Java代码,就像JSP脚本生成的代码一样。

也就是说,使用scriptlet被认为是一种糟糕的实践,因为它会导致复杂的代码。尝试使用JSTL使用bean,而将Java逻辑放在它们中。您的JSP看起来会更好,并且更容易维护。


和servlet一样,JSP也被转换成servlet,然后被编译,所以无论您在JSP声明块(即<%! ... %>中声明什么,都将直接在转换后的servlet中声明。至于servlet,在整个服务器生命周期中只有一个servlet实例,并且只有一个服务方法是由该实例中新创建的线程调用的。因此,如果同时发生请求,它们可能会更改相同的数据成员,并可能导致意外的结果。