我对jsp有一些疑问,
我有一些方法可以说方法的名称是getStaffDetail并且是在staffDetail.jsp文件中编写的 在staffDetail.jsp下面的代码
<%!
public StaffDetails getStaffDetail(int staffId) throws SQLException{
//Request to db
//process the result set
//return StaffDetail
}
%>
并且通过使用include指令
调用此方法在personPage.jsp文件中使用personPage.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编程的新手
答案 0 :(得分:2)
嗯,在jsp中编写scriptlet或在jsp中导入java类没有性能问题!
在这两种情况下,您的jsp将自动转换为servlet(通过jsp容器),然后servlet最终将被编译为字节代码!这将在部署应用程序时发生一次,之后没有jsp,没有scriptlet,没有el表达式,只有编译后的字节代码才能在JVM中运行。
由于其他原因,不建议使用Scpritlet,主要与应用程序的可读性和可维护性有关。表演没有任何意义!
根据我的经验,我可以告诉你,大多数调试在scriptlet jsp页面中都太难了!如果你的应用程序在scriptlet中疯狂,你就死定了!大多数情况下,会看到一个空白页面,没有错误信息或没有足够的线索可以钻取!!!
答案 1 :(得分:0)
问题的答案就在于此。您不应该在JSP中使用任何Java代码。结果是,JSP中的Java代码越少,就越好。
这与性能无关。方法是一种方法,JSP被编译为类似于您自己的类的类,并由同一个JVM运行。这里重要的是干净的设计,可维护性,责任分离,易于记录,重用和调试代码。
答案 2 :(得分:0)
当你在jsp页面中编写java时,JVM会在运行时将代码编译成servlet而不是字节代码,然后处理请求,当在java类中编写代码时,类是当它部署在Web服务器上时编译成.class(byte)。然后JVM将在运行时处理该类。对于JVM,ClassName.class的处理比.jsp快得多。但这不是性能问题,因为它可以忽略不计。 另外,最好在Java类中编写所有代码,因为它在XSS或跨站点脚本编写时更安全。
答案 3 :(得分:0)
如果你想测量一些代码执行的时间(以纳秒为单位):
<%
long startTime = System.nanoTime();
%>
<%
// ... the code being measured ...
%>
<%
long estimatedTime = System.nanoTime() - startTime;
// out estimatedTime
%>
您可能会在统计上发现一些差异,但要考虑的是最小的。无论结果如何,建议单独使用Java代码。