JSP的学习二(指令)

Posted 曹军

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP的学习二(指令)相关的知识,希望对你有一定的参考价值。

一:page指令

1.JSP的指令

  放在<%@ 指令 属性=“值”%>

  主要有page,include,tablib。

 

2.page指令

  用于定义JSP页面的各种属性,作用于是JSP的整个页面。建议,page指令放在JSP的起始位置。

  language:JSP可以使用的语言。

  extends:“package.class”

  import: ALT+/ 导包

  session:true或者false,说明当前JSP是否可以使用session。

  errorPage: 当前的页面出现错误,可以跳转到errorPage后面值的页面,例如=“/error.jsp”,就会跳转到根目录下的error.jsp。同时,在错误页面error.jsp中加上下面的指令,就可以使用exception,调用API,exception.getMessage()得到出错的原因。内部是转发机制。

  isErrorPage:不建议这个页面被直接访问,WEB-INF下的文件不能通过浏览器直接访问,但是可以通过请求转发去访问,所以,errorPage="/WEB-INF/error.jsp"。

  contentType:指定当前页面的响应类型,实际调用的是response.setContentType("text/html ; charset=UTF-8");

  pageEncoding: 指定JSP页面的字符编码,通常情况下该值和contentType中的charSet一致。

  isELIgnored:页面是否可以使用EL表达式,一般为true。

 

3.关于isErrorPage  

  如果不在出错页面配置这个指令,也可以在web.xml中配置,如下:

  <error-page>

    <error-code>500</error-code>

    <location>/WEB-INF/error.jsp</location>

  <error-page>

  或者:  

  <error-page>

    <exception-type>java.lang.ArithmeticException</exception-type>

    <location>/WEB-INF/error.jsp</location>

  <error-page>

 

二:include指令

1.静态包含

#a.jsp

  ¥其中,file引入的文件是相对路径。

  ¥如果是/,则表示web应用程序的根目录,不是站点根目录,否则表示当前文件。

 1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 2     pageEncoding="ISO-8859-1"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <h2>AAAAAAAAAA</h2>
11     <%@ include file="b.jsp" %>
12 </body>
13 </html>

#b.jsp

 1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 2     pageEncoding="ISO-8859-1"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <h2>BBBBBBBBBBB</h2>
11 </body>
12 </html>

#结果

  

 

2.注意

  在a.jsp中定义的变量,可以在b.jsp中直接使用

 

三:JSP标签

1.Action标签

  在JSP中还提供了一种称之为Action的元素,使用这些元素可以完成各种通用的JSP页面功能。

  Action采用XML元素的语法格式。

  都使用jsp作为前缀,并且全部采用小写,例如,<jsp:include>

 

2.<jsp:include>

  动态引入。

#a.jsp

 1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 2     pageEncoding="ISO-8859-1"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <h2>AAAAAAAAAA</h2>
11     <%--<%@ include file="b.jsp" %> --%>
12     <jsp:include page="b.jsp"></jsp:include>
13 </body>
14 </html>

 

3.注意

  生成两个Servlet源文件

 

4.<jsp:forward>

  用于把请求转发给另外一个资源。

  <jsp:forward page=""></...>

 

5.程序(相当与转发)

  相当于:

  <% request.getRequestDispatcher("/include/b.jsp").forward(request,response); %>

 1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 2     pageEncoding="ISO-8859-1"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <h2>AAAAAAAAAA</h2>
11     <%--<%@ include file="b.jsp" %> --%>
12     <%--<jsp:include page="b.jsp"></jsp:include> --%>
13     <jsp:forward page="/include/b.jsp"></jsp:forward>
14 </body>
15 </html>

 

6.区别

  jsp:forward可以使用jsp:param子标签,同样jsp:include也可以传递参数。

#a.jsp

 1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 2     pageEncoding="ISO-8859-1"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <h2>AAAAAAAAAA</h2>
11     <%--<%@ include file="b.jsp" %> --%>
12     <%--<jsp:include page="b.jsp"></jsp:include> --%>
13     
14     <jsp:forward page="/include/b.jsp">
15         <jsp:param value="tom" name="username"/>
16     </jsp:forward>
17 </body>
18 </html>

#b.jsp

 1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 2     pageEncoding="ISO-8859-1"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <h2>BBBBBBBBBBB</h2>
11     <%=request.getParameter("username") %>
12 </body>
13 </html>

#效果

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

  

 

  

以上是关于JSP的学习二(指令)的主要内容,如果未能解决你的问题,请参考以下文章

JSP的学习二(指令)

Java——JSP/九大内置对象/四大域对象

JSP--指令元素

JSP基础

JSP学习笔记-JSP原理,基本语法和指令

如何在运行时加载的 jsp 中包含 html 片段?