• JSP(2)


    JSP指令是给JSP引擎用的,即给服务器用的。作用是告诉服务器,该如何处理JSP中除了指令之外的内容。包括page、include、taglib三种

    基本的语法格式:<%@ 指令名称 属性1="值1" 属性2="值2" ....%>

    1、page指令

    page指令最简单的使用方式:<%@ page pageEncoding="UTF-8"%> 但myEclipse中的JSP模板中自动加入java.util.*包

    JSP只能只编译一次就可以到处使用

    pageEncoding原理 - 小易


    作用是定义JSP页面的各种属性,有如下属性:

    (1)language : 指示JSP页面中使用脚本语言。默认值为java(其他脚本语言如:asp、php)

    (2)import:导入JSP中的Java脚本使用到的类或包。(如同Java中的import语句)

    ==> JSP引擎自动导入以下包中的类:javax.servlet.*; javax.servlet.http.*; javax.servlet.jsp.*;

    ==> 注意:一个import属性可以导入多个包,用逗号分隔

    (3)pageEncoding : 通知引擎读取JSP时采用的编码(因为要翻译)。还有contentType属性的作用

    ==> pageEncoding的实现原理:


    ==> 从上一节的.java的代码中可以看出在翻译后的文件中有输出了一句response.setContentType("text/html;charset=UTF-8");

    (4)contentType : 指定当前页面的MIME类型,作用与Servlet中的response.setContentType()作用完全一致

    ==> contentType="text/html;charset=utf-8" 最终的效果是在翻译后的文件中有输出了一句response.setContentType("text/html;charset=UTF-8");

    (5)sessioin : 指示JSP页面是否创建HttpSession对象。默认值是true,创建

    (6)errorPage : 指示当前页面出错后转向(转发)的页面。若其值即目标页面如果以"/"(当前应用)开头就是绝对路径(不加项目名)

    ==> 配置全局错误提示页面,在web.xml中使用以下两种方法设置

    	若出现java.lang.Exception就转到error.jsp
    	<error-page>
    		<exception-type>java.lang.Exception</exception-type>
    		<location>/error.jsp</location>
    	</error-page>
    	-------------------------------------------------
    	若出现404错误(找不到页面)就转到404.jsp
    	<error-page>
    		<error-code>404</error-code>
    		<location>/404.jsp</location>
    	</error-page>
    

    (7)isErrorPage : 指示当前页面是否产生Exception对象。若产生就可以使用这个Exception对象对错误进行查看处理

    (8)buffer : 指示JSP用的输出流的缓存大小。默认值是8Kb。若值为none则没有缓存

    (9)autoFlush : 自动刷新输出流的缓存。默认为true,即缓存满后就刷新数据

    (10)isELIgnored : 是否忽略EL表达式。${1+1}。默认值是false

    (11)extends : 指示JSP对应的Servlet类的父类。一般不要修改

    (12)isThreadSafe : 指示页面是否是线程安全的(过时了)。默认是true

    ==> true:不安全的

    ==> false:安全的。指示JSP对应的Servlet实现SingleThreadModel接口

    2、include指令

    (1)静态包含:使用include指令

    ==> 作用:包含其他的组件

    ==> 语法:<%@include file=""%> file指定要包含的目标组件。路径如果以"/"(当前应用)开头就是绝对路径

    ==> 原理:把目标页面的内容通过out.print输出到源页面的service方法中

    (2)动态包含:使用的jsp动作

    ==> 语法:<jsp:include page=""/> 路径如果以"/"(当前应用)开头就是绝对路径

    (3)说明:开发中尽量使用静态包含,因为动态包含每次访问的时候都会执行一次,而静态包含只编译一次就可以一直使用

    ==> 分析:静态包含是两个jsp文件只编译成一个.class文件;而动态包含是,两个jsp文件编译成各自的.class文件,然后这两个class文件在tomcat服务器中进行整合,最终输出结果

    3、taglib指令

    作用:引入外部的标签

    语法:<%@taglib uri="标签名称空间" prefix="前缀"%> 如:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

    4、实例

    (1)errorPage和isErrorPage实例

    	1a.jsp中的部分代码:
    	<%@ page pageEncoding="UTF-8" errorPage="/jspzhiling/1b.jsp"%>
    	<body>
    		表达式1/0是否有错?
    		<% 
    			out.print(1/0);
    		%>
    	</body>
    	-----------------------------
    	1b.jsp中的部分代码:
    	<%@ page pageEncoding="UTF-8" isErrorPage="true"%>
    	<body>
    		这是错误页面,如果1a.jsp发生错误,就跳转到此页面<br />
    		错误信息是:
    		<%
    			out.print(exception.getMessage());
    		%>
    	</body>
    	-----------------------------
    	访问http://127.0.0.1:8080/testJsp/jspzhiling/1a.jsp
    	结果:(可知页面显示1b.jsp的内容,但是浏览器的地址没有改变)
    	这是错误页面,如果1a.jsp发生错误,就跳转到此页面
    	错误信息是: / by zero
    


    (2)include实例

    	2a.jsp中的部分代码:
    	1<%@ include file="/jspzhiling/2c.jsp"%>
    	--------------------------------------------------
    	2b.jsp中的部分代码:
    	1<jsp:include page="/jspzhiling/2c.jsp"></jsp:include>
    	--------------------------------------------------
    	2c.jsp中的部分代码:
    	<body>
    		2
    	</body>
    	--------------------------------------------------
    	访问http://127.0.0.1:8080/testJsp/jspzhiling/2a.jsp和http://127.0.0.1:8080/testJsp/jspzhiling/2b.jsp
    	结果都为:
    	12
    






  • 相关阅读:
    cdn与http缓存
    EntityFramework、Dapper vs 草根框架性能
    docker10件事
    TCP的阻塞和重传
    ngCookies模块
    Net Core- 配置组件
    获取synchronized锁中的阻塞队列中的线程是非公平的
    Java线程并发中常见的锁--自旋锁 偏向锁
    byte为什么要与上0xff(转)
    Tair是一个高性能,分布式,可扩展,高可靠的key/value结构存储系统(转)
  • 原文地址:https://www.cnblogs.com/oldinaction/p/5167463.html
Copyright © 2020-2023  润新知