• Jsp学习(二)


    内置对象

    1、定义

    • JSP内置对象是Web容器创建的一组对象,不使用new关键字创建,就可以直接使用。
    • 在xxx_jsp.java 文件中对内置对象做了声明,由容器实现和管理,在所有的Jsp页面中都能使用内置对象,内置对象在JSP初始化时生成。

    JSP的9个标准内置对象

    1、application

    • 是 ServletContext 类型

    2、request

    • 是HttpServletRequest类型

    3、response

    • 是HttpServletResponse类型

    4、page

    • 和this是同一个对象
    • 是一个servlet

    5、session

    • 是HttpSession类型

    6、config

    • 是ServletConfig类型
    • 在web.xml中配置初始化参数(使用jsp-file标签制定特定的jsp页面):
                
      <servlet>
          <servlet-name>JspConfig</servlet-name>
          <jsp-file>指定要使用config的jsp的页面</jsp-file>
          <init-param>
              <param-name>name</param-name>
              <param-value>Edward</param-value>
          </init-param>
      </servlet>
      
      <servlet-mapping>
          <servlet-name>JspConfig</servlet-name>
          <url-pattern>/config.do</url-pattern>
      </servlet-mapping>        

    测试案例:

    <%@ page language = "java" pageEncoding = "UTF-8" %>
    <%@ page contentType = "text/html; charset= UTF-8"%>

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>config</title> </head> <body> <h3> InitParameter : <%=config.getInitParameter( "name") %>
      </h3> 

    </body>
    </html>
    <?xml version="1.0" encoding="UTF-8"?>
    
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
        id="WebApp_ID" version="3.1">
    
        <servlet>
            <servlet-name>config.do</servlet-name>
            <jsp-file>/builtin/config.jsp</jsp-file>
            <init-param>
                <param-name>name</param-name>
                <param-value>罗玉凤</param-value>
            </init-param>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>config.do</servlet-name>
            <url-pattern>/config.do</url-pattern>
        </servlet-mapping>
    
    </web-app>
    <?xml version="1.0" encoding="UTF-8"?>
    
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
        id="WebApp_ID" version="3.1">
    
        <servlet>
            <servlet-name>config.do</servlet-name>
            <jsp-file>/builtin/config.jsp</jsp-file>
            <init-param>
                <param-name>name</param-name>
                <param-value>罗玉凤</param-value>
            </init-param>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>config.do</servlet-name>
            <url-pattern>/config.do</url-pattern>
        </servlet-mapping>
    
    </web-app>
    <%@ page language = "java" pageEncoding = "UTF-8" %>
    <%@ page contentType = "text/html; charset= UTF-8"%>
    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSP的9个标准内置对象</title> </head> <body> <h3>JSP的9个标准内置对象</h3> <ul> <li><a href="">application</a> <ol> <li> <%out.println(application); %></li> <li> <%= application %></li> <li> application 是否是 ServletContext 类型: <%=application instanceof ServletContext%></li> </ol> </li> <li><a href="">request</a> <ol> <li> <%=request %></li> <li> request 是否是 HttpServletRequest 类型: <%=request instanceof HttpServletRequest%></li> </ol> </li> <li><a href="">response</a> <ol> <li> <%= response %> </li> <li> response 是否是 HttpServletResponse 类型: <%= response instanceof HttpServletResponse %> </li> </ol> </li> <li><a href="">session</a> <ol> <li> <%=session %> </li> <li> session 是否是 HttpSession 类型: <%= session instanceof HttpSession %> </li> </ol> </li> <li><a href="">pageContext</a> <ol> <li> <%= pageContext %> </li> <li> pageContext 是否是 PageContext 类型: <%= pageContext instanceof PageContext %></li>
              <li><a href="<%= request.getContextPath()%> /builtin/pageContext.jsp">pageContext</a></li> </ol> </li> <li><a href="">out</a> <ol> <li> <%=out %> </li> <li> out 是否是 JspWriter 类型: <%=out instanceof JspWriter %></li> </ol> </li> <li><a href="javascript:;">config</a> <ol> <li> <%= config %> </li> <li> config 是否是 ServletConfig 类型: config instanceof ServletConfig %> </li> <li><a href="<%= request.getContextPath()%> /builtin/config.jsp">config ( jsp )</a></li> <li><a href="<%= request.getContextPath()%>/config.do">config ( servlet ) </a></li> </ol> </li> <li><a href="">exception</a> <ol> <li> <a href="<%= request.getContextPath() %>/throw.jsp">throw</a> </li> </ol> </li> <li><a href="">page</a> <ol> <li> <%= page %> </li> <li> page 和 this 是否是 同一个对象: <%=page == this %> </li> <li> page 是否是 一个 Servlet : <%=page instanceof Servlet %> </li> </ol> </li> </ul> </body> </html>

    运行结果如下:

    JSP页面配置其实也是在web.xml文件中的进行,JSP被当成Servlet配置,为Servlet配置参数使用init-param元素,config内置对象就可以接受param-name和param-value分别指定参数名和参数值。 

    7、out

    • 是JspWriter类型
    • JspWriter直接继承了Writer

    8、exception

    • 对于要处理异常的页面,需要声明这是一个错误指令页面
    <%@ page isErrorPage = "true" %>
    • 在可能发生异常的页面,需要制定错误处理页面
    <%@ page errorPage= "catch.jsp"%>
    • 针对特定的错误页面处理:

    在web.xml中配置(针对特定错误代码或者异常类型)

    <error-page>
        <error-code>错误代码</error-code>
        <exception-type>异常类型</exception-type>
        <location>发生错误去的页面</location>
    </error-page>

    测试案例:

    <%@ page language = "java" pageEncoding = "UTF-8" %>
    <%@ page contentType = "text/html; charset= UTF-8" %>
    <%@ page errorPage= "catch.jsp"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>throw</title> </head> <body> <h3>在可能发生异常的页面中使用 &lt;%@ page errorPage="catch.jsp" %&gt; 指定错误处理页面 </h3> <h3> <%=100 / 0 %> </h3> </body> </html>
    <%@ page language = "java" pageEncoding = "UTF-8" %>
    <%@ page contentType = "text/html; charset= UTF-8" %>

    <%@ page isErrorPage = "true" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>exception</title> </head> <body> <h3>对于要负责处理异常的页面,首先需要通过指令声明这是一个错误处理页面</h3> <h3>只有声明了 &lt;%@ page isErrorPage="true" %&gt; 的页面才会有 exception 对象存在</h3> <h3> exception : <%= exception %></h3> <h3> exception message : <%=exception.getMessage()%></h3> </body> </html>

    运行结果如下:

    内部发生的是forward操作,浏览器地址没有发生改变

     404页面处理测试案例:

        <error-page>
            <error-code>404</error-code>
            <location>/builtin/404.jsp</location>
        </error-page>·
    <%@ page language = "java" pageEncoding = "UTF-8" %>
    <%@ page contentType = "text/html; charset= UTF-8" %>

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>404</title> </head> <body> <h1>404</h1> <h3>你所访问的页面被外星人劫持了</h3> </body> </html>

    9、pageContext

    • 是PageContext类型(PageContext是JspContext的子类)
    • 可以通过pageContext获得其他内置对象

    测试案例:

    <%@ page language = "java" pageEncoding = "UTF-8" %>
    <%@ page contentType = "text/html; charset= UTF-8" %>
    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>pageContext</title> </head> <body> <h4> application:<%=pageContext.getServletContext()%> </h4> <h4> request:<%=pageContext.getRequest()%> </h4> <h4> response:<%=pageContext.getResponse() %> </h4> <h4> session:<%=pageContext.getSession()%> </h4> <h4> config:<%=pageContext.getServletConfig() %> </h4> <h4> page:<%=pageContext.getPage()%> </h4> <h4> out:<%=pageContext.getOut()%> </h4> <h4> exception:<%=pageContext.getException()%> </h4> <hr> <h4> Eexpresssion Language:<%=pageContext.getExpressionEvaluator()%> </h4>
    </body> </html>

    转载请于明显处标明出处

    https://www.cnblogs.com/AmyZheng/p/9129504.html

  • 相关阅读:
    JavaScript HTML DOM
    Java数组声明、初始化
    如何破解MyEclipse 10.x
    SpringBoot框架中解决日期展示问题
    spring boot集成mybatis-plus插件进行自定义sql方法开发时报nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
    Spring boot启动时报 java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long错误
    springboot 配置mybatis打印sql
    解决使用Navicat等工具进行连接登录mysql的1130错误,无法使用Ip远程连接的问题(mysql为8.0版本)
    解决使用Navicat等工具进行连接登录mysql的1521错误,(mysql为8.0版本)
    【转载】VUE的背景图引入
  • 原文地址:https://www.cnblogs.com/AmyZheng/p/9129504.html
Copyright © 2020-2023  润新知