JSP基础语法-指令(directive)

灰太狼 2024-04-17 18:19 199阅读 0赞

JSP基础语法

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

  1. \* page指令在同一个jsp页面当中可以编写多个,大部分情况下都是出现在jsp页面的顶部。【这不是必须的】
  2. 3.5.1page指令 <%@page %>
  3. \* import属性(翻译生成java语言中的import语句)
  4. <%@page import=”java.util.Date,java.util.ArrayList”%>
  5. \* contentType属性:设置响应的内容类型以及字符编码方式
  6. 1:【其实这个属性主要是用来设置响应的内容类型,捎带着可以设置字符编码方式】
  7. <%@page contentType="text/html; charset=UTF-8" %>
  8. 被翻译为:
  9. response.setContentType("text/html;charset=UTF-8");
  10. 2:指定JSP页面响应内容类型
  11. <%@page contentType="text/html"%>
  12. \* pageEncoding属性:专门用来设置响应时采用的响应的字符编码方式。
  13. <%@page pageEncoding="UTF-8"%>
  14. \* session属性(指定当前JSP页面是否可以使用session这个内置对象)
  15. <%@page session="false"%> session内置对象不可用:表示访问当前jsp页面的时候,不获取session,也就意味着在当前jsp页面当中不能使用九大内置对象之一:session
  16. <%@page session="true"%> session内置对象可用(缺省的):表示访问当前jsp页面的时候,获取session,如果获取不到session对象会新建session对象,保证内置对象session可以使用
  17. \* errorPage属性:设置指定当前JSP页面发生错误之后跳转的资源路径。
  18. \* isErrorPage属性:设置当前JSP页面当中可以使用内置对象exception
  19. isErrorPage="true":表示exception内置对象可以使用
  20. isErrorPage="false":表示exception内置对象不可以使用
  21. 默认值:isErrorPage="false"
  22. 内置对象exception表示刚刚发生的异常,捕获到该异常之后,该异常对象的内存地址赋值给了exception引用。
  23. exception这个内置对象引用直接指向了JVM堆内存中的异常对象。
  24. \* isELIgnored属性指定当前页面中如果有EL表达式是否忽略,true表示忽略,false表示不忽略

1.jsp代码:

  1. <%@page contentType="text/html; charset=UTF-8" %>
  2. <html>
  3. <head>
  4. <title>page指令-01页</title>
  5. </head>
  6. <body>
  7. <%-- errorPage属性用来设置当前jsp出现异常之后跳转的页面 --%>
  8. <%@page errorPage="/2.jsp" contentType="text/html; charset=UTF-8"%>
  9. <%
  10. System.out.println("执行 page指令-01页 代码!!!");
  11. String s = null;
  12. s.toString();
  13. %>
  14. <%-- 表达式代码被翻译到service方法内部,service方法上有两个参数requestresponse,可以直接拿来使用 --%>
  15. <%="request=" + request%>
  16. <%--
  17. JSP中有九大内置对象,可以在JSP中直接拿来使用:
  18. pageContext
  19. request
  20. session
  21. application
  22. response
  23. out
  24. exception
  25. config
  26. page
  27. --%>
  28. <%-- service方法之外不能使用九大内置对象 --%>
  29. <%--
  30. <%!
  31. public void m1(){
  32. String username = request.getParameter("name");
  33. }
  34. %>
  35. --%>
  36. </body>
  37. </html>

2.jsp异常页代码:

  1. <%--
  2. <%@page contentType="text/html; charset=UTF-8" %>
  3. --%>
  4. <%@page contentType="text/html" %>
  5. <%@page pageEncoding="UTF-8" %>
  6. <html>
  7. <head>
  8. <title>page指令-02错误页</title>
  9. </head>
  10. <body>
  11. <%--
  12. <%@page import="java.util.Date" %>
  13. <%@page import="java.text.SimpleDateFormat" %>
  14. --%>
  15. <%--
  16. <%@page import="java.util.*,java.text.*" %>
  17. --%>
  18. <%@page import="java.util.Date,java.text.SimpleDateFormat" %>
  19. <%-- 输出系统当前时间 --%>
  20. <%
  21. System.out.println("执行 page指令-02错误页 代码!!!");
  22. Date nowTime = new Date();
  23. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
  24. String strTime = sdf.format(nowTime);
  25. %>
  26. 系统当前时间:<%=strTime %>
  27. <br>====================================================<br>
  28. <%--
  29. <%@page session="false" %>
  30. --%>
  31. <%@page session="true" %>
  32. session:<%=session %>
  33. <br>====================================================<br>
  34. <%-- isErrorPage属性用来设置当前jsp页面当中是否可以使用内置对象exception --%>
  35. <%@page isErrorPage="true" %>
  36. 亲,出错了哦!联系管理员吧!
  37. <%
  38. //打印异常追踪信息,将异常信息输出到控制台
  39. //exception是九大内置对象之一
  40. exception.printStackTrace();
  41. %>
  42. <%--isErrorPage=true后,请求转发进这个页面会报HTTP 500
  43. 原因在于Eclipse使用的默认浏览器是IEIE会默认输出“友好的”错误信息(即你上面所显示的页面)。
  44. 这种情况只需进入IE浏览器,点击“设置”--Internet选项--“高级”里面,然后 取消勾选 ”显示友好的HTTP错误信息”选项。
  45. --%>>
  46. </body>
  47. </html>

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

  1. 3.5.2include指令 <%@include %>
  2. <%@include file="filePath"%>
  3. include指令表示静态包含,例如在a.jsp中编写了<%@include file="b.jsp"%>,就表示将a.jsp翻译之后的java源程序和b.jsp翻译生成的java源程序合并在一起,然后将其编译生成一个.class文件。我们通常采用这种方式做到页面的重复使用,例如web站点中每一个页面都有相同的头和相同的尾,我们可以单独将头和尾定义成单独的jsp文件,在我们使用的时候直接使用include引入即可,这样可以大大减少重复代码。但是需要引起注意的是,两个java源程序合并成一个java源程序,必须保证这两个java源程序中没有相同变量的定义。因为在同一个域中变量名是不能重名的。
  4. \* include指令的语法格式:
  5. <%@include file="/2.jsp"%> 路径:和url-pattern是相同的
  6. \* include指令的作用:
  7. 假设这10jsp文件当中都有一块相同的部分,在每一个jsp文件当中都去编写这块相同的代码,将来在修改的时候,维护的时候需要修改10个位置,维护成本高。
  8. 可以将这块相同的部分单独的抽取出来,放到一个独立的jsp文件当中,在某个需要这段代码的jsp文件当中使用include指令进行包含,将来修改的时候只需要修改这个独立的jsp文件即可,维护成本降低。
  9. 代码得到了复用。
  10. \* include指令的执行原理:
  11. 1.jsp使用include指令包含2.jsp之后,在jsp文件翻译生成java源代码阶段将2.jsp包含进来,两个jsp最终翻译生成一个java源文件,最终编译生成一个class字节码文件。这种包含可以称为静态包含或者叫做静态联编。【编译期包含】
  12. 注意:1.jsp包含2.jsp的时候使用静态包含的话,它们是共享同一个service方法的。可见静态联编可以让两个jsp文件共享同一个局部变量。但是需要注意的是,使用静态联编的时候两个jsp文件当中定义的局部变量的名称不能重名。
  13. \* 什么时候选择静态包含?
  14. 负责包含的jsp页面和被包含的jsp页面当中有重名的局部变量不能使用静态包含。

1.jsp代码:

  1. <%@page contentType="text/html; charset=UTF-8"%>
  2. <html>
  3. <head>
  4. <title>include指令</title>
  5. </head>
  6. <body>
  7. <%--
  8. <%=i %>
  9. --%>
  10. <table border="1px" align="center" width="50%">
  11. <tr>
  12. <th>序号</th>
  13. <th>代号</th>
  14. <th>部队</th>
  15. </tr>
  16. <%@include file="/2.jsp" %>
  17. </table>
  18. <%=i %>
  19. </body>
  20. </html>
  21. <%--
  22. 注意:1.jsp包含2.jsp的时候使用静态包含的话,它们是共享同一个service方法的。可见静态联编可以让两个jsp文件共享同一个局部变量。但是需要注意的是,使用静态联编的时候两个jsp文件当中定义的局部变量的名称不能重名。
  23. String username = "lili";
  24. --%>

2.jsp被包含代码:

  1. <%@page contentType="text/html; charset=UTF-8"%>
  2. <%!
  3. private String name = "admin";
  4. %>
  5. <%
  6. int i = 10;
  7. String username = "lili";
  8. %>
  9. <tr align="center">
  10. <td>1</td>
  11. <td>刀锋</td>
  12. <td>八一</td>
  13. </tr>
  14. <tr align="center">
  15. <td>2</td>
  16. <td>智能链接</td>
  17. <td>十一</td>
  18. </tr>

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

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

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

发表评论

表情:
评论列表 (有 0 条评论,199人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JSP基础语法

    **注:本文点进链接中例子的JSP文件都在项目目录下(即WEB-INF上级目录下,与WEB-INF同一级)*** 运行原理及本质 1.用户在浏览器地址栏上输入htt...