3

我有一些关于jsp的问题,

我有一些方法可以说方法的名称是 getStaffDetail 并且写在 staffDetail.jsp 文件中的代码下面的 staffDetail.jsp

<%!
    public StaffDetails getStaffDetail(int staffId) throws SQLException{
        //Request to db
        //process the result set
        //return StaffDetail
    }
%>

这个方法是在 personPage.jsp 文件中使用的,方法是使用 include 指令调用它

个人页面.jsp

<%@ include file = "/path/staffDetail.jsp">

<%
    StaffDetails sd = getStaffDetail(1234);
    String stafName = sd.getStfName();
    String stfAddress = sd.getStfAddress();
    //and the rest...
%>

或者我应该在 java 类中编写这段代码,例如 StaffDetail.class

package packageName

import DBAccess;

public class StaffDetail{   

    //Request to db
    //process the result set
    //Setter n getter in this class 
}

在 personPage.jsp

<@ page import = "package.StaffDetail">

<%
    StaffDetail sdInClass = new StaffDetail();//
    sdInClass.getStfName();
    sdInClass.getStfAddress();
%>

代码完全一样,唯一的区别是我没有把方法放在jsp文件中,而是放在类中

我想问一下哪个性能更好。

p/s 我知道我们作为 java web 程序员不鼓励在 jsp 文件中使用 scriplet,但由于某种原因,我无法将所有 scriplet 转换为 EL。我能做的至少是将方法转换为类文件。对不起,我是java编程新手

4

4 回答 4

3

那么,在jsp中编写scriptlet或在jsp中导入java类都没有性能问题!

在这两种情况下,您的 jsp 将自动转换为 servlet(通过 jsp 容器),然后 servlet 最终将编译为字节码!这将在部署应用程序时发生一次,之后没有 jsp、没有 scriptlet、没有 el 表达式,只有编译后的字节码会在你的 JVM 中运行。

出于其他原因不鼓励使用 Scriptlet,主要与应用程序的可读性和可维护性有关。性能什么的都没有!

根据我的经验,我可以告诉你,在 scriptlet jsp 页面中,大多数调试太难了!如果您的应用程序在 scriptlet 中出现异常,您就死定了!大多数时候,会看到一个空白页,没有错误消息或没有足够的线索来钻取!!!

于 2013-05-26T18:00:34.210 回答
0

当你在jsp页面中编写java时,JVM会在运行时将代码编译成servlet而不是字节码,然后处理请求,当在java类中编写代码时,类被编译成.部署在 Web 服务器上时的类(字节)。然后 JVM 将在运行时处理该类。对于 JVM,ClassName.class 的处理比 .jsp 快得多。但这不是性能问题,因为它可以忽略不计。此外,最好在 Java 类中编写所有代码,因为它在 XSS 或跨站点脚本方面更安全。

于 2013-05-26T18:45:52.510 回答
0

答案就在问题中。JSP 中不应该有任何 Java 代码。推论是 JSP 中的 Java 代码越少越好。

但这与性能无关。方法就是方法,JSP 被编译成类,就像你自己的类一样,由同一个 JVM 运行。这里重要的事情是干净的设计、可维护性、职责分离、易于记录、重用和调试代码。

于 2013-05-26T17:58:32.017 回答
0

如果你想测量一些代码需要多长时间执行(以纳秒为单位):

<% 
    long startTime = System.nanoTime(); 
%>

<%
    // ... the code being measured ...
%>

<%  
    long estimatedTime = System.nanoTime() - startTime;
    // out estimatedTime
%>

您可能会在统计上发现一些差异,但需要考虑的差异很小。不管结果如何,建议将 Java 代码分开。

于 2013-05-26T19:22:40.523 回答