由于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错误码发生时
 

从0开始学Java——JSP和Servlet——jsp转servlet出错的三个典型场景的更多相关文章

  1. 从0开始学Java——JSP&Servlet——Tomcat和Apache的区别

    从<JSP & Servlet 学习笔记>的第一章,了解到web容器:“Web容器是Servlet/jsp唯一认得的http服务器”. 在Java中,容器的类型有多种,这里要说的是 ...

  2. Rhythmk 一步一步学 JAVA(7): jsp 自定义标签

    1.实现Tag接口: TagSupport类实现了Tag接口,为我们提供了4个重要的方法(见表6-5). 1.1. TagSupport类中的常用方法           int doStartTag ...

  3. Rhythmk 一步一步学 JAVA(6): JSP 语法学习笔记

    1.修改JSP页面模版: 找到MyEclips安装目录,搜索“Jsp.vtl”,找到该文件修改编码,以及一些不需要用到的代码. 2.查找项目生成的Servlet文件路径: 查看当前项目父级目录搜索 . ...

  4. 菜鸟学Java(四)——JSP内置对象

    学习JavaWeb就离不开JSP,而学习JSP又不得不了解它常用的九个内置对象.今天来做一个简单介绍. request Request封装了用户提交的信息,通过调用Request相应的方法可以获取封装 ...

  5. 0基础学Java快速扫盲指南,月入2W的基础

    学Java,掌握一些基本的概念是第一步,本文简单为大家介绍一些扫盲级别的内容,希望帮助小白快速入门. 一.基本概念 JVM:java虚拟机,负责将编译产生的字节码转换为特定机器代码,实现一次编译多处执 ...

  6. 从0开始学Java——从jsp到servlet转换的各种辅助元素介绍

    1. 指示元素,<%@指示元素 [属性=值]* %> 其中指示元素包括page, include, 和tablib三个. 其中  属性=值 可以有多对. 其中page用来告知容器如何转译目 ...

  7. 从0开始学Java——JSP&Servlet——HttpServletRequest相关的几个路径信息

    在HttpServletRequest中有几个获取路径的接口:getRequestURI/getContextPath/getServletPath/getPathInfo 这些接口互相之间有什么区别 ...

  8. 从0开始学java——JSP&Servlet——web容器搜索class的路径顺序

    在web应用程序如果要用到某个类,会按照如下的顺序来搜索: 1)在WEB-INF/classes目录下搜索: 2)如果该目录下没有,则会到WEB-INF/lib目录下的jar文件中搜索: 3)如果还没 ...

  9. 从0开始学Java——JSP&Servlet——如何部署web应用程序

    web容器要求应用程序部署时,需要像下面这样组织其目录结构: 手动去创建这样的目录结构还是挺麻烦的,所幸我们有开发工具,所以可以像下面这样来部署一个web项目. 1)确认程序代码已经完成: 2)在ec ...

随机推荐

  1. Mac上的软件的一些对开发者有用的使用技巧(持续更新)

    内容大纲: Google浏览器设置开发者模式 正文: 1.Google浏览器设置开发者模式

  2. IOS之--UI进阶--多控制器管理第一天

    01-项目中常见的文件(LaunchScreen) Xcode5 框架是苹果事先已经导入进去的.在项目的结构当中就能够看到导入的框架. Xcode6 会自动导入一些觉见的框架.在项目结构当中,看不到已 ...

  3. PHP实例学习之————MVC架构模式分析与设计

      写博客,不容易,你们的评论和转载,就是我的动力, 但请注明出处,隔壁老王的开发园:http://www.cnblogs.com/titibili 2016年1月31日 18:53 作者:Ygirl ...

  4. Profiling MySQL queries from Performance Schema

    转自:http://www.percona.com/blog/2015/04/16/profiling-mysql-queries-from-performance-schema/ When opti ...

  5. cocos2d-x之加法计算器

    bool HelloWorld::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getIn ...

  6. cocos2d-x之action初试

    bool HelloWorld::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getIn ...

  7. Lighttpd

    一.简介 Lighttpd 是一个德国人领导的开源Web服务器软件,其根本的目的是提供一个专门针对高性能网站,安全.快速.兼容性好并且灵活的web server环境.具有非常低的内存开销,cpu占用率 ...

  8. android自定义radiobutton样式文字颜色随选中状态而改变

    主要是写一个 color selector 在res/建一个文件夹取名color res/color/color_radiobutton.xml <selector xmlns:android= ...

  9. 探索 OpenStack 之(12):cinder-api Service 处理 HTTP Request 的过程分析

    本文是上一篇 探索 OpenStack 之(11):cinder-api Service 启动过程分析 以及 WSGI / Paste deploy / Router 等介绍> 的后续篇. os ...

  10. [转]ionic $state.go passed $stateParams

    本文转自:http://stackoverflow.com/questions/19516771/state-go-toparams-not-passed-to-stateparams If you ...