从0开始学Java——JSP和Servlet——jsp转servlet出错的三个典型场景
2015-10-20 18:59
337 查看
由于jsp终究是要转换为servlet的java文件,然后再编译为.class文件,最后才执行,那么在这过程的任何一个步骤都可能有问题,主要包括三个方面,下面逐一分析:
一、JSP转换为Servlet的java源码时
因为上面的这个jsp转java、再转class的过程是在运行期执行来做的,也就是客户第一次请求该jsp页面的时候做的,所以如果jsp页面中有语法错误,使得容器不知如何把jsp转换为servlet的java文件时,比如
<%@page contentType="html/text" buffer="16" %>
这里指定buffer的语法有误,应该包含单位,如果客户请求该页面,就会出现类似如下的错误,从异常信息可以定位到错误源码的位置。
初学者应该尽量选用具有jsp语法检查功能的开发工具来做开发。
二、将servlet源码编译为.class文件的时候
比如在jsp中使用了某个类,但是在部署服务器上忘了放该类的jar包了,这样在初次请求该jsp的时候,虽然该jsp可以转译完成,但是编译时会报错,比如在tomcat中会有类似于下面的错误提示,这个错误比较容易人, 使用tomcat的时候,如果出现unable to compile,就是编译期的错误。
三、Servlet载入容器进行服务的时候发生错误。
此时Servlet已经编译成功了,但是在运行时由于某种未捕获的异常,比如NullPointerException就是最常见的错误。
一般来说这种错误会在界面上表现为an exception occured processing jsp page。这种一般就是运行时错误。
四、错误处理
如果jsp页面不做处理,那么容器就会捕捉这些异常,让像上面这样显示出来。
如果我们想要针对某个页面,或者针对某个特殊类型的异常做处理,则可以在jsp页面和web.xml文件中做一些配置,下面仅给出两个例子,不想详细展开说》
1)指定页面发生错误时,转到另外一个错误处理页面 errorPage, isErrorPage配合使用
....
2)在web.xml文件中配置,指定异常发生时
3)指定html错误码发生时
一、JSP转换为Servlet的java源码时
因为上面的这个jsp转java、再转class的过程是在运行期执行来做的,也就是客户第一次请求该jsp页面的时候做的,所以如果jsp页面中有语法错误,使得容器不知如何把jsp转换为servlet的java文件时,比如
<%@page contentType="html/text" buffer="16" %>
这里指定buffer的语法有误,应该包含单位,如果客户请求该页面,就会出现类似如下的错误,从异常信息可以定位到错误源码的位置。
初学者应该尽量选用具有jsp语法检查功能的开发工具来做开发。
二、将servlet源码编译为.class文件的时候
比如在jsp中使用了某个类,但是在部署服务器上忘了放该类的jar包了,这样在初次请求该jsp的时候,虽然该jsp可以转译完成,但是编译时会报错,比如在tomcat中会有类似于下面的错误提示,这个错误比较容易人, 使用tomcat的时候,如果出现unable to compile,就是编译期的错误。
三、Servlet载入容器进行服务的时候发生错误。
此时Servlet已经编译成功了,但是在运行时由于某种未捕获的异常,比如NullPointerException就是最常见的错误。
一般来说这种错误会在界面上表现为an exception occured processing jsp page。这种一般就是运行时错误。
四、错误处理
如果jsp页面不做处理,那么容器就会捕捉这些异常,让像上面这样显示出来。
如果我们想要针对某个页面,或者针对某个特殊类型的异常做处理,则可以在jsp页面和web.xml文件中做一些配置,下面仅给出两个例子,不想详细展开说》
1)指定页面发生错误时,转到另外一个错误处理页面 errorPage, isErrorPage配合使用
....
2)在web.xml文件中配置,指定异常发生时
3)指定html错误码发生时
相关文章推荐
- java编程思想-多态
- JAVA设计模式(11) —<结构型>组合模式(Composite)
- 学习笔记03-java常用类
- 基于PHPnow搭建Eclipse开发环境
- Spring注解的基础用法
- Java阻塞IO与非阻塞IO
- 进制转换之原理实现(Java)
- Java 冒泡、选择、二分法排序
- 学习笔记02-java内部类
- java BigInteger,BigDecimal学习
- 【java】解析excel文档(兼容全版本)
- java系统学习(十六) --------JDBC及其应用
- java系统学习(十六) --------JDBC及其应用
- java 线程创建时间
- java中的BigInteger(很好很强大)(转)
- JAVA开发--游戏24点
- 第三章 DispatcherServlet详解 ——跟开涛学SpringMVC
- JAVA开发--U盘EXE恢复工具
- 修改Spring-task 定时时间
- MyEclipse使用JAX-WS 2.0生成WebService报错,无法生成WSDL文件