JSP基础语法-指令(directive)

JSP基础语法

   3.5、指令(directive)
      语法:<%@指令名 属性名=属性值 属性名=属性值..... %>
      作用:为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分

      * page指令在同一个jsp页面当中可以编写多个,大部分情况下都是出现在jsp页面的顶部。【这不是必须的】

      3.5.1、page指令  <%@page  %>

         * import属性(翻译生成java语言中的import语句)
            <%@page import=”java.util.Date,java.util.ArrayList”%>
            
         * contentType属性:设置响应的内容类型以及字符编码方式
            例1:【其实这个属性主要是用来设置响应的内容类型,捎带着可以设置字符编码方式】
                      <%@page contentType="text/html; charset=UTF-8" %>
                被翻译为:
                    response.setContentType("text/html;charset=UTF-8");

            例2:指定JSP页面响应内容类型
                    <%@page contentType="text/html"%>
                    
         * pageEncoding属性:专门用来设置响应时采用的响应的字符编码方式。
            <%@page pageEncoding="UTF-8"%>
            
         * session属性(指定当前JSP页面是否可以使用session这个内置对象)
            <%@page session="false"%>  session内置对象不可用:表示访问当前jsp页面的时候,不获取session,也就意味着在当前jsp页面当中不能使用九大内置对象之一:session。
            <%@page session="true"%> session内置对象可用(缺省的):表示访问当前jsp页面的时候,获取session,如果获取不到session对象会新建session对象,保证内置对象session可以使用
            
         * errorPage属性:设置指定当前JSP页面发生错误之后跳转的资源路径。

         * isErrorPage属性:设置当前JSP页面当中可以使用内置对象exception
            isErrorPage="true":表示exception内置对象可以使用
            isErrorPage="false":表示exception内置对象不可以使用
            默认值:isErrorPage="false"
                        
            内置对象exception表示刚刚发生的异常,捕获到该异常之后,该异常对象的内存地址赋值给了exception引用。
            exception这个内置对象引用直接指向了JVM堆内存中的异常对象。
            
         * isELIgnored属性指定当前页面中如果有EL表达式是否忽略,true表示忽略,false表示不忽略

1.jsp代码:

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


	
		page指令-01页
	
	

	<%-- errorPage属性用来设置当前jsp出现异常之后跳转的页面 --%>
	<%@page errorPage="/2.jsp" contentType="text/html; charset=UTF-8"%>
	
	<%
		System.out.println("执行 page指令-01页 代码!!!");
		String s = null;
		s.toString();
	%>
	
	<%-- 表达式代码被翻译到service方法内部,service方法上有两个参数request和response,可以直接拿来使用 --%>
		<%="request=" + request%>
	<%--
		JSP中有九大内置对象,可以在JSP中直接拿来使用:
			pageContext
			request
			session
			application
			
			response
			out
			
			exception
			
			config
			
			page
	
	--%>
	
	<%-- 在service方法之外不能使用九大内置对象 --%>
	<%--
		<%!
			public void m1(){
				String username = request.getParameter("name");
			}
		 %>
	--%>
		
	

2.jsp异常页代码:

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

<%@page pageEncoding="UTF-8" %>
	


	
		page指令-02错误页
	
	

		<%--
			<%@page import="java.util.Date" %>
			<%@page import="java.text.SimpleDateFormat" %>
		--%>
		<%--
			<%@page import="java.util.*,java.text.*" %>
		--%>
		<%@page import="java.util.Date,java.text.SimpleDateFormat" %>
		<%-- 输出系统当前时间 --%>
		<%
			System.out.println("执行 page指令-02错误页 代码!!!");
			Date nowTime = new Date();
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
			String strTime = sdf.format(nowTime);
		%>
		系统当前时间:<%=strTime %>
		
		
====================================================
<%-- <%@page session="false" %> --%> <%@page session="true" %> session:<%=session %>
====================================================
<%-- isErrorPage属性用来设置当前jsp页面当中是否可以使用内置对象exception --%> <%@page isErrorPage="true" %> 亲,出错了哦!联系管理员吧! <% //打印异常追踪信息,将异常信息输出到控制台 //exception是九大内置对象之一 exception.printStackTrace(); %> <%--isErrorPage=true后,请求转发进这个页面会报HTTP 500 原因在于Eclipse使用的默认浏览器是IE,IE会默认输出“友好的”错误信息(即你上面所显示的页面)。 这种情况只需进入IE浏览器,点击“设置”--Internet选项--“高级”里面,然后 取消勾选 ”显示友好的HTTP错误信息”选项。 --%>>

 ————————————————

      3.5.2、include指令  <%@include  %>
         <%@include file="filePath"%>
         include指令表示静态包含,例如在a.jsp中编写了<%@include file="b.jsp"%>,就表示将a.jsp翻译之后的java源程序和b.jsp翻译生成的java源程序合并在一起,然后将其编译生成一个.class文件。我们通常采用这种方式做到页面的重复使用,例如web站点中每一个页面都有相同的头和相同的尾,我们可以单独将头和尾定义成单独的jsp文件,在我们使用的时候直接使用include引入即可,这样可以大大减少重复代码。但是需要引起注意的是,两个java源程序合并成一个java源程序,必须保证这两个java源程序中没有相同变量的定义。因为在同一个域中变量名是不能重名的。

            * include指令的语法格式:
                <%@include file="/2.jsp"%> 路径:和url-pattern是相同的
                
            * include指令的作用:
                
                假设这10个jsp文件当中都有一块相同的部分,在每一个jsp文件当中都去编写这块相同的代码,将来在修改的时候,维护的时候需要修改10个位置,维护成本高。
                    
                可以将这块相同的部分单独的抽取出来,放到一个独立的jsp文件当中,在某个需要这段代码的jsp文件当中使用include指令进行包含,将来修改的时候只需要修改这个独立的jsp文件即可,维护成本降低。
                    
                代码得到了复用。
                
            * include指令的执行原理:
                1.jsp使用include指令包含2.jsp之后,在jsp文件翻译生成java源代码阶段将2.jsp包含进来,两个jsp最终翻译生成一个java源文件,最终编译生成一个class字节码文件。这种包含可以称为静态包含或者叫做静态联编。【编译期包含】
                    
                注意:1.jsp包含2.jsp的时候使用静态包含的话,它们是共享同一个service方法的。可见静态联编可以让两个jsp文件共享同一个局部变量。但是需要注意的是,使用静态联编的时候两个jsp文件当中定义的局部变量的名称不能重名。
            
            * 什么时候选择静态包含?
                负责包含的jsp页面和被包含的jsp页面当中有重名的局部变量不能使用静态包含。

1.jsp代码:

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


	
		include指令
	
	
		<%--
			<%=i %>
		--%>
		
			<%@include file="/2.jsp" %>
		
序号 代号 部队
<%=i %> <%-- 注意:1.jsp包含2.jsp的时候使用静态包含的话,它们是共享同一个service方法的。可见静态联编可以让两个jsp文件共享同一个局部变量。但是需要注意的是,使用静态联编的时候两个jsp文件当中定义的局部变量的名称不能重名。 String username = "lili"; --%>

2.jsp被包含代码:

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

<%!
	private String name = "admin";
%>

<%
	int i = 10;
	String username = "lili";
%>

	1
	刀锋
	八一


	2
	智能链接
	十一

 ————————————————

      3.5.3、taglib指令   <%@taglib   %>
         为了让JSP看起来更加的专业(只做页面展示),减少jsp页面中java代码的数量,我们引入了标签库,使用了标签库之后JSP程序中不再出现太多的java程序了,这样JSP页面看起来主要工作就是页面展示。大家设想在JSP页面中有大量的java程序暴露,那维护起来是很困难的。
 ————————————————

你可能感兴趣的:(JSP)