jsp和el表达式

一、JSP

    1、jsp简介    

        Java 服务器页面 (Java Server Page ,JSP) 以扩展名 .jsp 保存

        jsp可以有效地控制动态内容生成
        可以在JSP里面使用 Java 编程语言和类库

        JSP中的HTML 代码用于表示页面,而 J其中的ava 代码用于访问动态内容

    2、jsp指令

        jsp中有三大指令:page、include、taglib最为常用

        ①page指令

        a、page指令的pageEncoding    

            pageEncoding指定当前JSP页面的编码。

        b、page指令的contentType    

            contentType属性与response.setContentType()方法的作用相同。它会完成两项工作,一是设置响应字符流的编码,二是设置content-type响应头。

    当设置了pageEncoding,而没设置contentType时,contentType的默认值为pageEncoding

             当设置了contentType,而没设置pageEncoding时, pageEncoding的默认值与contentType

    也就是说,当pageEncoding和contentType只出现一个时,那么另一个的值与出现的值相同。如果两个都不出现,那么两个属性的值都是ISO-8859-1。所以通过我们至少设置它们两个其中一个

        c、page的import属性

            使用page指令的import属性可以导包到JSP内,比如

            <%@ page import=”java.util.*”%>

        d、page指令的errorPage和isErrorPage

       使用page指令的errorPage来指定自己的错误页。也就是自定义错误页面,例如:<%@page errorPage=”xxx.jsp”%>。这时,在当前JSP页面出现错误时,会请求转发到xxx.jsp页面。

a.jsp
<%@ page import="java.util.*" pageEncoding="UTF-8"%>
<%@ page  errorPage="b.jsp" %>
b.jsp
<%@ page pageEncoding="UTF-8"%>
<html>
  <body>
   <h1>出错啦!</h1>
  </body>
</html>
    在上面代码中,如果a.jsp抛出异常,会请求转发到b.jsp。

    当客户端浏览器收到的响应码为200,表示请求成功。如果希望客户端得到500,那么需要指定b.jsp为错误页面

b.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page  isErrorPage="true"[设置b.jsp页面为错误页,在错误页中就可以使用exception隐藏对象了。
注意:一旦转发到错误页,那么Tomcat会把状态码设置为500,而不在是200了。] %>
<html>
  <body>
   <h1>出错啦!</h1>
	<%=exception.getMessage() %>
  </body>
</html>

    当isErrorPage为true时,说明当前jsp为错误页面,即专门处理错误的页面。那么在这个页面中就可以使用内置对象execption。其他页面是不能使用这个内置对象的。

        ②include指令

        include指令表示静态包含。目的是把多个jsp合并成一个jsp文件

        include指令只有一个熟悉:file,指定要包含的页面。比如 <%@include file=”b.jsp”%>

        也就是说经过编译,最终只会生成一个.class文件

        ③taglib指令

        在JSP页面中使用第三方的标签库时,需要使用taglib指令来“导包”。例如:

        <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

       其中prefix表示标签的前缀,这个名称可以随便起。uri是由第三方标签库定义的,所以你需要知道第三方定义的uri。

    3、jsp内置对象

        在JSP中无需创建就可以使用的9个对象,它们是:

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

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

             page:当前JSP页面的“this”,即当前对象;

             pageContext:页面上下文对象。

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

             request:HttpServletRequest类的对象;

             response:HttpServletResponse类的对象;

             application:ServletContext类的对象;

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

    4、jsp动作标签

        JSP动作标签是JavaWeb内置的动作标签,它们是已经定义好的动作标签,我们可以拿来直接使用。

        a、<jsp:include>

            动态包含,每个jsp会编译为各自的.class文件,而不是一个

        b、<jsp:forward>

            forward标签的作用是请求转发!forward标签的作用与RequestDispatcher.forward()方法相同    

二、EL

    1、EL的格式

        EL的格式:${}

        比如${1+2}

    2、关闭EL

        如果希望整个JSP忽略EL表达式,需要将page指令中指定isELIgnored=true

        如果希望忽略某个EL表达式,可以在EL表达式之前添加\,比如\${1+2}

    3、EL不显示null

        当EL表达式的值为null时,会在页面上显示空白,即什么都不显示。

猜你喜欢

转载自blog.csdn.net/yanghan1222/article/details/80386816