JSP终究会转译为Servlet, 所以错误可能发生在3个时候:
- JSP转换为Servlet源代码时.
如果在JSP页面中编写了一些错误语法, 而使得容器在转译JSP时不知道该如何将那些语法转译为Servlet的.java文件, 就会发生错误.
例如, 在page指令元素中指定了错误的选项, 如buffer属性指定错误:
<%@ pagecontentType=”text/html” buffer=”16”%>
实际上 指定buffer属性时必须指定单位, 如”16Kb”.
- Servlet源代码进行编译时.
如果JSP语法没有问题, 则容器可以将JSP转译为Servlet的.java程序, 接着就会尝试将.java文件编译为.class文件. 如果此时编译器因为某个原因而无法完成编译, 则会出现编译错误.
例如, JSP中使用了某些类, 但部署至服务器时, 忘了将相关的类也部属上去, 使得初次请求JSP时, 虽然转译可以完成, 但编译时就会出错.
- Servlet载入容器进行服务但发生运行时错误.
如果Servlet进行编译成功, 接下来就可以载入容器开始执行, 但仍有可能在运行时由于找不到某个资源, 程序逻辑上的问题而发生错误. 例如最常见的NullPointerException就是一个例子.
Jan 14th, 2016