首页 > Web开发 > 详细

黑马day06 jsp错误页面&九大隐式对象

时间:2015-06-21 09:24:12      阅读:287      评论:0      收藏:0      [点我收藏+]

一.如果一个页面指定了errorPage="指定错误页面" ,当这个页面出错的时候就会跳转到指定的页面进行友好的提示给用户。

1. 本6.jsp只有一行代码1/0这行代码会抛出异常,因此会跳转到指定的error页面。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="/error.jsp"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  
    
    <title></title>
    
	<meta http-equiv=" pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	
  </head>
  
  <body>
    <%=1/0 %>
  </body>
</html>
2.error.jsp友好提示页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  
    
    <title></title>
    
	<meta http-equiv=" pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	
  </head>
  
  <body>
    亲,服务器出错了!
  </body>
</html>
3.访问6.jsp发现会跳转到error.jsp 其实底层是请求转发。

技术分享

4.我们也可以指定全局错误页面在web.xml文件中

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>	
  <error-page>
  	<error-code>500</error-code>
  	<location>/index.jsp</location>
  </error-page>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
如果页面没有指定错误页面就会执行全局错误页面...

二.九大隐士对象

90%可能面试的时候会被问到因此必须会默写。

 page
          config
          application
          response
          request
          session
          out
          exception
          pageContext
          
          
          out
            相当于是response.getWriter得到PrintWriter
            out和response.getWriter获取到的流不同在于,在于这个out对象本身就具有一个缓冲区.利用out写出的内容,会先缓冲在out缓冲区中,直到out缓冲区满了或者整个页面结束时out缓冲区中的内容才会被写出到response缓冲区中,最终可以带到浏览器页面进行展示
            page指令中的

             [buffer="none | 8kb | sizekb" ]可以用来禁用out缓冲区或设置out缓冲区的大小,默认8kb 
             [ autoFlush="true | false"]用来设置当out缓冲区满了以后如果在写入数据时out如何处理,如果是true,则先将满了的数据写到response中后再接受新数据,如果是false,则满了再写入数据直接抛异常 


            在jsp页面中需要进行数据输出时,不要自己获取response.getWriter,而是要使用out进行输出,防止即用out又用response.getWriter而导致输出顺序错乱的问题
          
          pageContext
            (1)可以作为入口对象获取其他八大隐式对象的引用
                getException方法返回exception隐式对象 
                getPage方法返回page隐式对象
                getRequest方法返回request隐式对象 
                getResponse方法返回response隐式对象 
                getServletConfig方法返回config隐式对象
                getServletContext方法返回application隐式对象
                getSession方法返回session隐式对象 
                getOut方法返回out隐式对象
            (2)域对象,四大作用域的入口,可以操作四大作用域中的域属性
                
                作用范围: 当前jsp页面
                生命周期: 当对jsp页面的访问开始时,创建代表当前jsp的PageContext,当对当前jsp页面访问结束时销毁代表当前jsp的pageContext
                作用:在当前jsp中共享数据
                
                    public void setAttribute(java.lang.String name,java.lang.Object value)
                    public java.lang.Object getAttribute(java.lang.String name)
                    public void removeAttribute(java.lang.String name
)


                    public void setAttribute(java.lang.String name, java.lang.Object value,int scope)
                    public java.lang.Object getAttribute(java.lang.String name,int scope)
                    public void removeAttribute(java.lang.String name,int scope)
                    
                    PageContext.APPLICATION_SCOPE
                    PageContext.SESSION_SCOPE
                    PageContext.REQUEST_SCOPE
                    PageContext.PAGE_SCOPE 


                    findAttribute方法 -- 搜寻四大作用域中的属性,如果找到则返回该值,如果四大作用域中都找不到则返回一个null,搜寻的顺序是从最小的域开始向最大的域开始寻找
                    
            (3)提供了请求转发和请求包含的快捷方法
                pageContext.include("/index.jsp");
         pageContext.forward("/index.jsp");

案例:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  
    
    <title></title>
    
	<meta http-equiv=" pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	
  </head>
  
  <body>
    <%
    //pageContext.setAttribute("name", "李卫康");
    //request.setAttribute("name", "翁宗顺");
    //session.setAttribute("name", "韩玮");
    application.setAttribute("name", "王超");
     %>
     <%=pageContext.findAttribute("name") %>
  </body>
</html>
pageContext.findAttribute()会现在当前页面,page,request,session,application域逐一查找。若找到就不继续查找..

技术分享


黑马day06 jsp错误页面&九大隐式对象

原文:http://blog.csdn.net/u014010769/article/details/46576051

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!