[原创]java WEB学习笔记14:JSP的9 个隐含对象 及 JSP 的基本语法

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用

内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。

本人互联网技术爱好者,互联网技术发烧友

微博:伊直都在0221

QQ:951226918

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.JSP的9个隐式对象: 参考HttpJspBase  ,源码为tomcat源码

  1)对象存在的位置

 1 public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
 2 throws java.io.IOException, javax.servlet.ServletException {
 3
 4 final javax.servlet.jsp.PageContext pageContext;
 5 javax.servlet.http.HttpSession session = null;
 6 final javax.servlet.ServletContext application;
 7 final javax.servlet.ServletConfig config;
 8 javax.servlet.jsp.JspWriter out = null;
 9 final java.lang.Object page = this;
10
11   //...
12
13 }

  2)对象的使用 

    ①使用位置<% %> 中编写java代码,可以使用 : request ,  response ,  pageContext ,  session , application , page  ,out  ,config  ,(exception)

request
HttpServletRequest对象
 响应请求
response 
HttpServletResponse对象
在JSP页面中几乎不会调用response的任何方法
pageContext 
PageContext对象  
页面上下文。可以从该对象获取到其他8个隐含对象,也可以从中获取到当前页面的其他信息。自定义标签
session 
HttpSession对象
代表浏览器和服务器的一次回话
application 
ServletContext对象
代表当前 WEB 应用,是 ServletContext 对象
config  
ServletConfig对象
 代表当前JSP对应的Servlet 的ServletConfig 对象(几乎不用)
out  
JspWriter对象

 调用out.println() 可以直接把字符串打印到浏览器
page  
final java.lang.Object page = this
 指向当前的JSP 对应的Servlet 对象的引用, 但为Object 类型,只能调用 Object 类的方法(几乎不用)
exception  
<%@ page isErrorPage="true" %> 只有在JSP 页面中声明了才可以使用此对象

2.JSP的基本语法:

  1)JSP模版元素:JSP页面中的静态HTML内容称之为JSP模版元素。在静态的HTML内容之中可以嵌套JSP的其他各种元素来产生动态内容和执行业务逻辑

    JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观  

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 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=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10
11 </body>
12 </html>

  

  2)JSP表达式:

  ① 提供了将一个java变量或表达式的计算结果输出到客户端的简化方式,它将要输出的变量或表达式直接封装在<%= 和 %>之中;

  ② JSP表达式中的变量或表达式的计算结果将被转换成一个字符串,然后被插入进整个JSP页面输出结果的相应位置处;

  ③ JSP表达式中的变量或表达式后面不能有分号(;),JSP表达式被翻译成Servlet程序中的一条out.print(…)语句。

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ page import="java.util.Date"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 </head>
10 <body>
11     <!-- JSP表达式:可以将页面的一个对象输出到客户端的浏览器上 -->
12     <%=new java.util.Date()%>
13
14     <%
15         Date date = new Date();
16         out.println(date);
17     %>
18
19 </body>
20 </html>

  3)JSP脚本片断

  ①JSP脚本片断(scriptlet)是指嵌套在<% 和 %>之中的一条或多条Java程序代码;

  ②在JSP脚本片断中,可以定义变量、执行基本的程序运算、调用其他Java类、访问数据库、访问文件系统等普通Java程序所能实现的功能;

  ③在JSP脚本片断可以直接使用JSP提供的隐式对象来完成WEB应用程序特有的功能;

  ④JSP脚本片断中的Java代码将被原封不动地搬移进由JSP页面所翻译成的Servlet的_jspService方法中,所以,JSP脚本片断之中只能是符合Java语法要求的程序代码,除此之外的任何文本、HTML标记、其他JSP元素都必须在脚本片断之外编写;

  ⑤JSP脚本片断中的Java代码必须严格遵循Java语法,例如,每条命令执行语句后面必须用分号(;)结束;

  ⑥在一个JSP页面中可以有多个脚本片断(每个脚本片断代码嵌套在各自独立的一对<% 和 %>之间),在两个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素

  ⑦多个脚本片断中的代码可以相互访问,犹如将所有的代码放在一对<%%>之中的情况;*

  ⑧在脚本片断中可以使用条件、循环、选择等流程控制语句来创建其周围的其他元素的执行逻辑,因此,在编写JSP页面时应考虑各个元素之间的先后顺序和相互关系,特别是将循环、条件判断等语句分布在若干个脚本片断中编写时对其邻近的其他JSP元素产生的影响

  

 1 <%@page import="com.jason.javaweb.Person"%>
 2 <%@ page language="java" contentType="text/html; charset=UTF-8"
 3     pageEncoding="UTF-8"%>
 4
 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 6 <html>
 7 <head>
 8 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 9 <title>hello</title>
10 </head>
11 <body>
12
13     <%
14         String moneyStr = request.getParameter("money");
15         int money = Integer.parseInt(moneyStr);
16
17         if (money >= 1000) {
18     %>
19     高收入啊!!!!!
20     <%
21         } else {
22     %>
23     太低了
24
25     <%
26         }
27     %>
28
29
30 </body>
31 </html>

  4)JSP声明(了解, 基本不使用)

  ①JSP声明将Java代码封装在<%!和 %>之中,它里面的代码将被插入进Servlet的_jspService方法的外面,所以,JSP声明可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法

  ②多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中;

  ③JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象;

  

 1 <%!
 2 static { System.out.println("loading Servlet!"); }
 3 private int globalVar = 0;
 4 public void jspInit()
 5 {
 6     System.out.println("initializing jsp!");
 7 }
 8 %>
 9 <%!
10 public void jspDestroy()
11 {
12     System.out.println("destroying jsp!");
13 }
14 %>
15 <%
16     int localVar = 0;
17 %>
18 globalVar:<%= ++globalVar %><br>
19 localVar:<%= ++localVar %>

  5)JSP注释

  ①JSP注释的格式: <%-- 注释信息 --%>

  ②JSP引擎在将JSP页面翻译成Servlet程序时,忽略JSP页面中被注释的内容。

  

1     <%-- 这个就是jsp的注释格式,
2
3         JSP引擎在将JSP页面翻译成Servlet程序时,忽略JSP页面中被注释的内容 --%>

 

3.总结

1)掌握JSP的原理

2)掌握隐式对象:pageContext , request  ,  session , application  page  ,out  ,config  ,(exception),response 

3)jsp的语法: jsp表达式,jsp脚本,jsp注释jsp声明,jsp模板

时间: 2024-12-06 15:07:22

[原创]java WEB学习笔记14:JSP的9 个隐含对象 及 JSP 的基本语法的相关文章

[原创]java WEB学习笔记05:Servlet中的ServletConfig对象

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

[原创]java WEB学习笔记6:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记95:Hibernate 目录

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记36:Java Bean 概述,及在JSP 中的使用,原理

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

[原创]java WEB学习笔记16:JSP指令(page,include),JSP标签(forwar,include,param)

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

[原创]java WEB学习笔记13:JSP介绍(背景,特点,原理)

JSP介绍:(理解) 1)JSP背景 ①在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变: ②如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的静态内容也需要程序员用Java程序代码产生,整个Servlet程序的代码将非常臃肿,编写和维护都将非常困难: ③对大量静态内容的美工设计和相关HTML语句的编写,并不是程序员所要做的工作,程序员对此也不一定在行.网页美工设计和制作人员不懂Java编程,更是无法来完成这样的工作: ④为了弥补 Servle

[原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

[原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------