精华内容
下载资源
问答
  • jsp九大内置对象

    2018-10-30 20:18:20
    帮助了解JSP九大内置对象,对jsp就打内置对象知识提高
  • JSP九大内置对象

    万次阅读 多人点赞 2019-02-28 15:52:26
    JSP提供了由容器实现和管理的内置对象,也可以称之为隐含对象,由于JSP使用Java作为脚本语言,所以JSP将具有强大的对象处理能力,并且可以动态创建Web页面内容。但Java语法在使用一个对象前,需要先实例化这个对象,...

    JSP提供了由容器实现和管理的内置对象,也可以称之为隐含对象,由于JSP使用Java作为脚本语言,所以JSP将具有强大的对象处理能力,并且可以动态创建Web页面内容。但Java语法在使用一个对象前,需要先实例化这个对象,这其实是一件比较烦琐的事情。JSP为了简化开发,提供了一些内置对象,用来实现很多JSP应用。在使用JSP内置对象时,不需要先定义这些对象,直接使用即可。

    在JSP中一共预先定义了9个这样的对象,分别为request、response、session、application、out、pageContext、config、page和exception。

     

    1、request对象

    request对象封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息、系统信息、请求方式和请求参数等。通过request对象提供的相应方法可以处理客户端浏览器提交的HTTP请求中的各项参数。

    request对象的常用方法:

    1.1 访问请求参数

    我们知道request对象用于处理HTTP请求中的各项参数。在这些参数中,最常用的就是获取访问请求参数。当我们通过超链接的形式发送请求时,可以为该请求传递参数,这可以通过在超链接的后面加上问号“?”来实现。注意这个问号为英文半角的符号。

    如果要同时指定多个参数,各参数间使用与符号“&”分隔即可。

    示例:在页面中定义超链接。

    <a href="delete.jsp?id=1">删除</a>

    在delete.jsp页面中,可以通过request对象的getParameter()方法获取传递的参数值。

    <%
        String id = request.getParameter("id");  //获取id参数的值
    %>

    示例:编程学员注册功能。要求提交注册信息后,显示学员输入的数据。

    (1)注册页面 reginput.jsp。

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>学员注册</title>
        <meta name="author" content="pan_junbiao的博客">
        <style>
            .txtBox{
                padding: 3px;
                width: 300px;
                font-size: 16px;
            }
        </style>
    </head>
    <body>
    <div align="center">请输入注册信息
        <form name="form1" method="post" action="reginfo.jsp">
            <table border="0" align="center">
                <tr>
                    <td>用户姓名:</td>
                    <td><input type="text" name="name" value="pan_junbiao的博客" class="txtBox" /></td>
                </tr>
                <tr>
                    <td>博客地址:</td>
                    <td><input type="text" name="blog" value="https://blog.csdn.net/pan_junbiao" class="txtBox"/></td>
                </tr>
                <tr>
                    <td>备注信息:</td>
                    <td><input type="text" name="remark" value="您好,欢迎访问 pan_junbiao的博客!" class="txtBox"/></td>
                </tr>
                <tr>
                    <td>兴趣爱好:</td>
                    <td>
                        <input type="checkbox" name="interests" value="足球"  />足球
                        <input type="checkbox" name="interests" value="篮球"  />篮球
                        <input type="checkbox" name="interests" value="羽毛球"  />羽毛球
                        <input type="checkbox" name="interests" value="乒乓球"  />乒乓球
                    </td>
                </tr>
                <!-- 以下是提交、取消按钮 -->
                <tr>
                    <td>
                        <input type="submit" value="提交" />
                    </td>
                    <td>
                        <input type="reset" value="取消" />
                    </td>
                </tr>
            </table>
        </form>
    </div>
    </body>
    </html>

    (2)注册提交页面 reginfo.jsp。

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%
        request.setCharacterEncoding("UTF-8");          //设置请求编码
        String name = request.getParameter("name");     //获取用户名
        String blog = request.getParameter("blog");     //获取博客地址
        String remark = request.getParameter("remark"); //获取备注信息
    
        //获取兴趣爱好
        String[] interests = request.getParameterValues("interests");
        String interStr = "";
        if(interests != null)
        {
            for(String item : interests)
            {
                interStr += item + ";";
            }
        }
    %>
    
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>注册信息</title>
        <meta name="author" content="pan_junbiao的博客">
    </head>
    <body>
    用户姓名:<%= name %><br/>
    博客地址:<%= blog %><br/>
    备注信息:<%= remark %><br/>
    兴趣爱好:<%= interStr %>
    </body>
    </html>

    执行结果:

    (1)注册页面 reginput.jsp

    (2)注册提交页面 reginfo.jsp

     

    1.2 在作用域中管理属性

    在进行请求转发时,需要把一些数据传递到转发后的页面进行处理。这时,就需要使用request对象的setAttribute()方法将数据保存到request范围内的变量中。request对象的setAttribute()方法的语法格式如下:

    request.setAttribute(String name,Object object);

    在将数据保存到request范围内的变量中后,可以通过request对象的getAttribute()方法获取该变量的值,具体的语法格式如下:

    request.getAttribute(String name)

    1.3 获取cookie

    cookie的中文意思是小甜饼,然而在互联网上的意思与这就完全不同了。它和食品完全没有关系。在互联网中,cookie是小段的文本信息,在网络服务器上生成,并发送给浏览器的。通过使用cookie可以标识用户身份,记录用户名和密码,跟踪重复用户等。浏览器将cookie以key/value的形式保存到客户机的某个指定目录中。

    通过cookie的getCookies()方法即可获取到所有cookie对象的集合;通过cookie对象的getName()方法可以获取到指定名称的cookie;通过getValue()方法即可获取到cookie对象的值。另外将一个cookie对象发送到客户端使用了response对象的addCookie()方法。

    示例:通过cookie保存用户信息。

    (1)写入cookie对象页面 index.jsp。

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>写入cookie对象</title>
      <meta name="author" content="pan_junbiao的博客">
    </head>
    <body>
    <%
      //写入cookie对象
      request.setCharacterEncoding("UTF-8");  //设置请求的编码
      Cookie cookie = new Cookie("userCookie","您好,欢迎访问pan_junbiao的博客!");  //创建并实例化cookie对象
      cookie.setMaxAge(60*60*24*30);  //设置cookie有效期为30天
      response.addCookie(cookie);  //保存cookie对象
    %>
    
    <script type="text/javascript">window.location.href="deal.jsp"</script>
    </body>
    </html>
    
    
    

    (2)读取cookie值页面 deal.jsp。

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>读取cookie值</title>
        <meta name="author" content="pan_junbiao的博客">
    </head>
    <body>
    <%
        //读取cookie值
        Cookie[] cookies = request.getCookies();  //从request中获取cookie对象的集合
        String user = "";
        if(cookies != null)
        {
            //遍历cookie对象集合
            for(Cookie cookieItem : cookies)
            {
                if(cookieItem.getName().equals("userCookie"))
                {
                    user = cookieItem.getValue();  //读取cookie对象的的值
                }
            }
        }
    %>
    
    <h3>读取cookie值:</h3>
    用户信息:<%= user %>
    </body>
    </html>

    执行结果:

    1.4 解决中文乱码

    在上面的代码中我们为id参数传递了一个字符串类型的值“001”,如果将这个参数的值更改为中文,则在show.jsp就会发生大家都不愿意看到的问题——在显示参数值时中文内容变成了乱码。这是因为请求参数的文字编码方式与页面中的不一致所造成的,所有的request请求都是iso-8859-1的,而在此页面采用的是UTF-8的编码方式。要解决此问题,只要将获取到的数据通过String的构造方法使用指定的编码类型重新构造一个String对象即可正确地显示出中文信息。

    <body>
    	<a href="deal.jsp?name=张三&sex=男">解决中文乱码</a>
    </body>
    <body>
    	name参数的值为:<%=new String(request.getParameter("name").getBytes("iso-8859-1"),"UTF-8") %><br>
    	sex参数的值为:<%=request.getParameter("sex") %>
    </body>

    1.5 获取客户端信息

    通过request对象可以获取客户端的相关信息,如HTTP报头信息,客户信息提交方式、客户端主机IP地址、端口号等。

    request获取客户端信息的常用方法:

    示例:使用request对象的相关方法获取客户端信息。

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>使用request对象的相关方法获取客户端信息</title>
      <meta name="author" content="pan_junbiao的博客">
    </head>
    <body>
    客户提交信息的方式:<%=request.getMethod()%>
    <br>使用的协议:<%=request.getProtocol()%>
    <br>获取发出请求字符串的客户端地址:<%=request.getRequestURI()%>
    <br>获取发出请求字符串的客户端地址:<%=request.getRequestURL()%>
    <br>获取提交数据的客户端IP地址:<%=request.getRemoteAddr()%>
    <br>获取服务器端口号:<%=request.getServerPort()%>
    <br>获取服务器的名称:<%=request.getServerName()%>
    <br>获取客户端的主机名:<%=request.getRemoteHost()%>
    <br>获取客户端所请求的脚本文件的文件路径:<%=request.getServletPath()%>
    <br>获得Http协议定义的文件头信息Host的值:<%=request.getHeader("host")%>
    <br>获得Http协议定义的文件头信息User-Agent的值:<%=request.getHeader("user-agent")%>
    <br>获得Http协议定义的文件头信息accept-language的值:<%=request.getHeader("accept-language")%>
    <br>获得请求文件的绝对路径:<%=request.getRealPath("index.jsp")%>
    </body>
    </html>
    

    执行结果:

    1.6 显示国际化信息

    浏览器可以通过accept-language的HTTP报头向Web服务器指明它所使用的本地语言。request对象中的getLocale()和getLocales()方法允许JSP开发人员获取这一信息,获取的信息属于java.util.Local类型。java.util.Local类型的对象封装了一个国家和一种国家所使用的语言。使用这一信息,JSP开发者就可以使用语言所特有的信息作出响应。

    示例:页面信息国际化。

    <%
    	java.util.Locale locale = request.getLocale();
    	String str = "";
    	if(locale.equals(java.util.Locale.US))
    	{
    		str = "Hello, Welcome to pan_junbiao's blog!";
    	}
    	else if(locale.equals(java.util.Locale.CHINA))
    	{
    		str = "您好,欢迎访问 pan_junbiao的博客!";
    	}
    %>
    
    <%= str %>

     

    2、response对象

    response对象用于响应客户请求,向客户端输出信息。它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据类型,甚至是文件。response对象在JSP页面内有效。

    request对象的常用方法:

    方法 说明
    sendRedirect(String path) 将网页重定向到另一个页面。
    setHeader(String name, String value) 设置HTTP响应报头信息。

    2.1 重定向网页

    使用response对象提供的sendRedirect()方法可以将网页重定向到另一个页面。重定向操作支持将地址重定向到不同的主机上,这一点与转发不同。在客户端浏览器上将会得到跳转的地址,并重新发送请求链接。用户可以从浏览器的地址栏中看到跳转后的地址。进行重定向操作后,request中的属性全部失效,并且开始一个新的request对象。sendRedirect()方法的语法格式如下:

    response.sendRedirect(String path);

    参数说明:

    path:用于指定目标路径,可以是相对路径,也可以是不同主机的其他URL地址。

    示例:使用response对象提供的sendRedirect()方法重定向到登录页面。

    <%
    	response.sendRedirect("login.jsp");  //重定向到登录页面
    %>

    2.2 处理HTTP文件头

    通过response对象可以设置HTTP响应报头,其中,最常用的是禁用缓存、设置页面自动刷新和定时跳转网页。下面分别进行介绍。

    设置HTTP响应报头方法的语法格式如下:

    response.setHeader(String name, String value);

    2.2.1 禁用缓存

    在默认情况下,浏览器将会对显示的网页内容进行缓存,这样可以提高网页的显示速度。对于一些安全性要求比较高的网站,通常需要禁用缓存。

    示例:通过设置HTTP头的方式实现禁用缓存。

    <%
    	response.setHeader("Cache-Control", "no-store");
    	response.setDateHeader("Expires", 0);
    %>

    2.2.2 设置页面自动刷新

    通过设置HTTP头还可以实现页面的自动刷新。

    示例:使页面每隔10秒自动刷新一次。

    <%
    	response.setHeader("refresh", "10");
    %>

    2.2.3 定时跳转网页

    通过设置HTTP头还可以实现定时跳转页面功能。

    示例:使页面5秒后自动跳转到指定的网页。

    <%
    	response.setHeader("refresh", "5;URL=login.jsp");
    %>

    2.3 设置输出缓冲

    通常情况下,服务器要输出到客户端的内容不会直接写到客户端,而是先写到一个输出缓冲区,在计算机术语中,缓冲区被定义为暂时放置输入或输出资料的内存。实际上,缓冲区也可以这样理解:在一个粮库中,由于装缷车队的速度要快于传送带的传输速度,为了不造成装缷车队的浪费,粮库设计了一个站台,装缷车队可以先将运送的粮食缷到这个平台上,然后让传送机慢慢传送。粮库的这个站台就起到了缓冲的作用。

    response对象提供的对缓冲区进行配置的方法:

    方法 说明
    flushBuffer() 强制将缓冲区的内容输出到客户端。
    getBufferSize() 获取响应所使用的缓冲区的实际大小,如果没有使用缓冲区,则返回0。
    setBufferSize(int size) 设置缓冲区大小。
    reset() 清除缓冲区的内容,同时清除状态码和报头。
    isCommitted() 检查服务器端是否已经把数据写入到可客户端。

    示例:设置缓冲区的大小为32KB。

    <%
    	response.setBufferSize(32);
    %>

    说明:如果将缓冲区的大小设置为0KB,则表示不缓冲。

     

    3、session对象

    session在网络中被称为会话。由于HTTP协议是一种无状态协议,也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器并不保存相关的信息。为了弥补这一缺点,HTTP协议提供了session。通过session可以在应用程序的Web页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。但是,如果在一个会话中,客户端长时间不向服务器发出请求,session对象就会自动消失。这个时间取决于服务器,例如,Tomcat服务器默认为30分钟。不过这个时间可以通过编写程序进行修改。

    session对象的常用方法:

    示例:保存与获取session对象信息。

    <%
    	session.setAttribute("UserName", "pan_junbiao的博客");           //保存session对象
    	String userName = session.getAttribute("UserName").toString();  //获取session对象
    %>

    配置web.xml文件:

    如果使用的是Tomcat,可以向下面这样配置web.xml文件:

    <session-config>
    	<session-timeout>15</session-timeout>
    </session-config>

     超时以分钟为单位,Tomcat中的默认的超时时间是30分钟。

    Servlet中的getMaxInactiveInterval( ) 方法以秒为单位返回超时时间。如果在web.xml中配置的是15分钟,则getMaxInactiveInterval( ) 方法将会返回900。

     

    4、application对象

    application对象用于保存所有应用中的共有数据。它在服务器启动时自动创建,在服务器停止时销毁。当application对象没有被销毁时,所有用户都可以共享该application对象。与session对象相比,application对象的生命周期更长,类似于系统的“全局变量”。

    application对象的常用方法:

    方法 说明
    String getInitParameter(String name) 获取已命名的应用程序初始化参数值。
    Enumeration<String> getInitParameterNames() 获取所有已定义的应用程序初始化参数名的枚举。
    Enumeration<String> getAttributeNames() 获取所有application对象使用的属性名。
    Object getAttribute(String name) 从application对象中获取指定对象名。
    void setAttribute(String key,Object obj) 使用指定名称和指定对象在application对象中进行关联。
    void removeAttribute(String name) 从application对象中去掉指定名称的属性。

    4.1 访问应用程序初始化参数

    application对象提供了对应用程序初始化参数进行访问的方法。应用程序初始化参数在web.xml文件中进行设置,web.xml文件位于Web应用所在目录下的WEB-INF子目录中。在web.xml文件中通过<context-param>标记配置应用程序初始化参数。

    示例:在web.xml文件中配置连接MySQL数据库所需的url参数。

      <context-param>
      	<param-name>url</param-name>
      	<param-value>jdbc:mysql://127.0.0.1:3306/db_database</param-value>
      </context-param>
    </web-app>

    application对象提供了两种访问应用程序初始化参数的方法。

    4.1.1 getInitParameter(String name)方法

    String getInitParameter(String name)方法用于获取已命名的应用程序初始化参数值。

    示例:获取上面web.xml文件中配置的url参数的值。

    <%
    	String url = application.getInitParameter("url");
    %>

    4.1.2 getInitParameterNames()方法

    Enumeration<String> getInitParameterNames()方法获取所有已定义的应用程序初始化参数名的枚举。

    示例:使用getInitParameterNames()方法获取web.xml文件中定义的全部应用程序初始化参数,并通过循环输出。

    <%@ page import="java.util.*" %>
    <%
    	Enumeration<String> enume = application.getInitParameterNames();   //获取全部初始化参数
    	while(enume.hasMoreElements())
    	{
    		String name = enume.nextElement();                  //获取参数名
    		String value = application.getInitParameter(name);  //获取参数值
    		out.println(name + ":");  //输出参数名
    		out.println(value);        //输出参数值
    	}
    %>

    4.2 管理应用程序环境属性

    与session对象相同,也可以在application对象中设置属性。与session对象不同的是,session只是在当前客户的会话范围内有效,当超过保存时间,session对象就被收回;而application对象在整个应用区域中都有效。

    <%
    	application.setAttribute("UserName", "pan_junbiao的博客");           //保存application对象
    	String userName = application.getAttribute("UserName").toString();  //获取application对象
    %>

     

    5、out对象

    out对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用out对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

    5.1 向客户端输出数据

    out对象一个最基本的应用就是向客户端浏览器输出信息。out对象可以输出各种数据类型的数据,在输出非字符串类型的数据时,会自动转换为字符串进行输出。out对象提供了print()和println()两种向页面中输出信息的方法。

    5.1.1 print()方法

    示例:通过两种方式向客户端浏览器输出文字。

    <%
    	out.print("您好,pan_junbiao的博客");
    %>
    
    <%= "您好,pan_junbiao的博客" %>

    5.1.2 println()方法

    println()方法也可以用于向客户端浏览器输出信息,该方法输出内容后,还输出一个换行符。

    示例:使用println()方法向客户端浏览器输出文字。

    <pre>
    <%
        out.println("<b>使用println()方法向客户端浏览器输出文字:</b>");
        out.println("您好!");
        out.println("欢迎访问 pan_junbiao的博客");
        out.println("博客地址:https://blog.csdn.net/pan_junbiao");
    %>
    </pre>

    说明:使用println()方法输出内容要有换行的效果,需要同时使用HTML的<pre>标记括起来,否则无法显示换行效果。

    执行效果:

    5.2 管理响应缓冲

    out对象的另一个比较重要的功能就是对缓冲区进行管理。通过调用out对象的clear()方法可以清除缓冲区的内容。这类似于重置响应流,以便重新开始操作。如果响应已经提交,则会有产生IOException异常的负作用。out对象还提供了另一种清除缓冲区内容的方法,那就是clearBuffer()方法,通过该方法可以清除缓冲区的“当前”内容,而且即使内容已经提交给客户端,也能够访问该方法。除了这两个方法外,out对象还提供了其他用于管理缓冲区的方法。

    out对象用于管理缓冲区的方法如下:

    方法 说明
    clear() 清除缓冲区中的内容。
    clearBuffer() 清除当前缓冲区中的内容。
    flush() 刷新流。
    isAutoFlush() 检测当前缓冲区已满时是自动清空,还是抛出异常。
    getBufferSize() 获取缓冲区的大小。

     

    6、获取会话范围的pageContext对象

    获取页面上下文的pageContext对象是一个比较特殊的对象,通过它可以获取JSP页面的request、response、session、out、exception等对象。pageContext对象的创建和初始化都是由容器来完成的,JSP页面中可以直接使用pageContext对象。

    pageContext对象的常用方法:

    方法 说明
    forward(String relativeUrlPath)

    把页面转发给另一个页面。

    getAttribute(String name) 获取参数值。
    getAttributeNamesInScope(int scope) 获取某范围的参数名称的集合。
    getException() 获取exception对象。
    getRequest() 获取request对象。
    getResponse() 获取response对象。
    getSession() 获取session对象。
    getOut() 获取out对象。
    setAttribute(String name,Object value) 为指定范围内的属性设置属性值。
    removeAttribute(String name) 删除指定范围内的指定对象。

    说明:pageContext对象在实际JSP开发过程中很少使用,因为request和response等对象均为内置对象,如果通过pageContext对象来调用这些对象比较麻烦。

     

    7、读取web.xml配置信息的config对象

    config对象主要用于取得服务器的配置信息。当一个Servlet初始化时,容器把某些信息通过config对象传递给这个Servlet。开发者可以在web.xml文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。

    config对象的常用方法如下:

    方法 说明
    getServletContext() 获取Servlet上下文。
    getServletName() 获取Servlet服务器名。
    getInitParameter(String name) 获取服务器所有初始化参数名称。
    getInitParameterNames() 获取服务器中name参数的初始值。

     

    8、应答或请求的page对象

    page对象代表JSP本身,只有在JSP页面内才是合法的。page对象本质上是包含当前Servlet接口引用的变量,可以看作是this关键字的别名。

    page对象的常用方法如下:

    方法 说明
    getClass() 返回当前Object的类。
    hashCode() 返回该Object的哈希代码。
    toString() 把该Object类转换成字符串。
    equals(Object obj) 比较该对象和指定的对象是否相等。

    示例:创建index.jsp文件,在该文件中调用page对象的各方法,并显示返回结果。

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>page对象各方法的应用</title>
    <meta name="author" content="pan_junbiao的博客">
    </head>
    <body>
    <%!	Object object; 	//声明一个Object型的变量		%>
    <ul>
        <li>getClass()方法的返回值:<%=page.getClass()%></li>
        <li>hashCode()方法的返回值:<%=page.hashCode()%></li>
        <li>toString()方法的返回值:<%=page.toString()%></li>
        <li>与Object对象比较的返回值:<%=page.equals(object)%></li>
        <li>与this对象比较的返回值:<%=page.equals(this)%></li>
    </ul>
    </body>
    </html>

    执行结果:

     

    9、获取异常信息的exception对象

    exception对象用来处理JSP文件执行时发生的所有错误和异常,只有在page指令中设置 isErrorPage属性值为true的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。exception对象几乎定义了所有异常情况,在Java程序中,可以使用try...catch关键字来处理异常情况,如果在JSP页面中出现没有捕获到的异常,就会生成exception对象,并把exception对象传送到在page指令中定义的错误页面中,然后在错误页面中处理相应的exception对象。

    exception对象的常用方法如下:

    方法 说明
    getMessage() 返回exception对象的异常信息字符串。
    getLocalizedMessage() 返回本地化的异常错误。
    toString() 返回关于异常错误的简单信息描述。
    fillInStackTrace() 重写异常错误的栈行轨迹。

    示例:使用exception对象获取异常信息。

    (1)创建index.jsp文件,在该文件中,首先在page指令中定义errorPage属性值为error.jsp,即指定显示异常信息的页面。

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" errorPage="error.jsp" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>使用exception对象获取异常信息</title>
    <meta name="author" content="pan_junbiao的博客">
    </head>
    <body>
    <%
    	request.setAttribute("price", "12.5元");                                    //保存单价到request范围内的变量price中
    	float price = Float.parseFloat(request.getAttribute("price").toString());  //获取单价,并转换为float类型
    %>
    </body>
    </html>

    (2)编写error.jsp文件,将该页面的page指令的 isErrorPage属性值设置为true,并且输出异常信息。

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" isErrorPage="true" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>错误提示页面</title>
    <meta name="author" content="pan_junbiao的博客">
    </head>
    <body>
    错误提示为:<%= exception.getMessage() %>
    </body>
    </html>

    执行结果:

     

    展开全文
  • Jsp九大内置对象

    2016-11-30 20:40:13
    Jsp九大内置对象

    Jsp的九大内置对象~


    这些对象在JSP中无需创建就可以使用!

    (1)out(JspWriter):等同与response.getWriter(),用来向客户端发送文本数据;

    (2)config(ServletConfig):对应“真身”中的ServletConfig;

    (3)page(当前JSP的真身类型):当前JSP页面的“this”,即当前对象;

    (4)pageContext(PageContext):页面上下文对象,下面说;

    (5)exception(Throwable):只有在错误页面中可以使用这个对象;

    (6)request(HttpServletRequest):即HttpServletRequest类的对象;

    (7)response(HttpServletResponse):即HttpServletResponse类的对象;

    (8)application(ServletContext):即ServletContext类的对象;

    (9)session(HttpSession):即HttpSession类的对象,不是每个JSP页面中都可以使用,如果在某个JSP页面中设置<%@page session=”false”%>,说明这个页面不能使用  session。


    这里有一些问题需要注意:

    在这9个对象中有很多是极少会被使用的,例如:config、page、exception基本不会使用。


    在这9个对象中有两个对象不是每个JSP页面都可以使用的:exception、session。


    有没有在这之间发现四大域对象呢?是的,它们是,request,session,application和pageContext。


    之前说过pageContext,这里再说一下它的作用:

    (1)域对象功能:pageContext也是域对象,它的范围是当前页面。它的范围也是四个域对象中最小的!

    (2)代理其它域对象功能:可以使用pageContext来代理其它3个域对象的功能,也就是说可以使用pageContext向request、session、application对象中存取数据。

    (3)获取其他内置对象:一个pageContext对象等于所有内置对象,即1个当9个。这是因为可以使用pageContext对象获取其它8个内置对象。

    ———— JspWriter getOut():获取out内置对象;

    ———— ServletConfig getServletConfig():获取config内置对象;

    ———— Object getPage():获取page内置对象;

    ———— ServletRequest getRequest():获取request内置对象;

    ———— ServletResponse getResponse():获取response内置对象;

    ———— HttpSession getSession():获取session内置对象;

    ———— ServletContext getServletContext():获取application内置对象;

    ———— Exception getException():获取exception内置对象;

    展开全文
  • jsp 九大内置对象

    2020-03-28 15:55:23
    JSP九大内置对象1. jsp运行原理2. 九大内置对象2.1 pageContext2.2 request2.3 response2.4 session2.5 application2.6 config2.7 page2.8 out2.9 exception 1. jsp运行原理 每个jsp页面在第一被访问时,WEB容器都会...

    1. jsp运行原理

    每个jsp页面在第一被访问时,WEB容器都会把该jsp页面翻译成一个_jspServlet(实际上是一个servlet),然后按照servlet的调用方式进行调用,在调用的过程中,会传递或创建九大web内置对象。

    2. 九大内置对象

    在这里插入图片描述

    2.1 pageContext

    pageContext对象是JSP技术中最重要的一个对象,这个对象不仅封装了其他8个内置对象,自身还是一个容器,可以用于存储数据。

    • getException();
    • getPage();
    • getSession();
    • getRequest();
    • getResponse();
    • getServletConfig();
    • getServletContext();
    • getException();
    • setAttribute(String name,Object attribute);设置属性及属性值
    • getAttribute(String name);在指定范围内获取设置的属性值
    • removeAttribute(String name);删除属性
    • getAttributeScopt(String name);返回某属性的作用范围
    • forward(String relativeUrlPath);使当前页面重定向到另一页面
    • include(String relativeUrlPath);在当前位置引入另一文件
    • release();释放pageContext所占用的资源

    2.2 request

    request为一次请求范围内创建的对象。该对象封装了请求的各种信息。

    • getAttribute(String name);返回指定属性的值
    • setAttribute(String key,Object obj);设置属性的值
    • getAttributeNames();返回所有可用属性名的枚举
    • getParameterNames();返回可用参数名中的枚举
    • getParameterValues();返回包含参数name的所有值得数组
    • setCharacterEncoding();设置字符编码格式
    • getCharacterEncoding();返回字符编码格式
    • getContentType();返回请求体的MIME类型
    • getInputStream();返回请求中的二进制流
    • getProtocol();返回请求用的协议类型及版本号
    • getServerPort();返回服务器接受此请求所用的端口号

    2.3 response

    response对象包含了响应客户请求的有关信息。

    • getCharacterEncoding();返回响应用的是何种字符编码
    • getOutputStream();返回响应的一个二进制输出流
    • getWriter();返回一个向客户端输出字符的对象
    • setContentType(String type);设置响应的MIME类型
    • sendRedirect(String location);重定向客户端请求

    2.4 session

    session对象指客户端与服务端的一次会话,从客户端连接到服务器开始,知道断开连接为止。

    • setAttribute(String name,Object obj);设置属性的值
    • getAttribute(String name);返回属性值
    • getAttributeNames;返回可用参数名中的枚举
    • getCreationTime();返回session创建时间
    • getId();返回session创建的唯一ID号
    • getLastAccessedTime();返回此session里客户端最近一次请求时间
    • getMaxInactiveInterval();返回两次请求间隔多长时间此session被取消(ms)
    • getValueNames();返回一个包含此session中所有可用属性的数组
    • invalidate();取消session,使得session不可用

    2.5 application

    application作用范围是于服务器启动,知道服务器关闭,是一个全局变量,用户之间可以通过application进行数据共享。

    • getAttribute(String name);返回属性值
    • setAttribute(String name,Object obj);设置属性值
    • getAttributeNames();返回所有可用属性名的枚举
    • removeAttribute(String name);删除属性名及对应的属性值
    • getRealPath(String path);返回虚拟路径的真实路径
    • getContext(String s)返回指定webApplication的application对象
    • getMimeType(Stirg file);返回指定文件的MIME类型
    • getResource(String path);返回指定资源(文件及目录)的URL路径
    • getResourceAsStream(String path);返回指定资源的输入流
    • getRequestDispatcher(String s);返回指定资源的requestDispathcer对象
    • getServlets();返回所有servlet的枚举
    • getServlet(String name);返回指定名的servlet
    • getServletNames();返回所有servlet名的枚举

    2.6 config

    config对象是在一个servlet初始化时,准备一个传递信息的对象,此对象中包含了servlet初始化使用的参数以及服务器的有关信息。

    2.7 page

    page对象表示当前jsp页面对象,类似与java中的this指针,指向本身,是一个java.lang.Object类的实例

    2.8 out

    out对象是JspWriter类的实例,常用于向客户端输出内容。

    • write(T val);输出
    • clear();清空out缓冲区
    • flush();强制刷新
    • clear();关闭输出流

    2.9 exception

    异常处理对象,当页面运行报错,就产生了这个对象。如果要在jsp页面中使用该对象,需要将isErrorPage设置为true
    在这里插入图片描述

    • getMessage();返回描述异常的消息
    展开全文
  • JSP 九大内置对象

    2020-09-07 17:20:16
    JSP 九大内置对象 pageContext :只对当前jsp 页面有效,里面封装了基本的request 和session 的对象 Request :对当前请求进行封装 Session :浏览器会话对象,浏览器范围内有效 Application :应用程序对象,对整个...

    JSP 九大内置对象

    pageContext :只对当前jsp 页面有效,里面封装了基本的request 和session 的对象
    Request :对当前请求进行封装
    Session :浏览器会话对象,浏览器范围内有效
    Application :应用程序对象,对整个web 工程都有效
    Out :页面打印对象,在jsp 页面打印字符串
    Response :返回服务器端信息给用户
    Config :单个servlet 的配置对象,相当于servletConfig 对象
    Page :当前页面对象,也就是this
    Exception :错误页面的exception 对象,如果指定的是错误页面,这个就是
    异常对象

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,887
精华内容 1,154
关键字:

jsp九大内置对象