[原创]java WEB学习笔记14:JSP的9 个隐含对象 及 JSP 的基本语法
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用
内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。
本人互联网技术爱好者,互联网技术发烧友
微博:伊直都在0221
QQ:951226918
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.JSP的9个隐式对象: 参考HttpJspBase ,源码为tomcat源码
1)对象存在的位置
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException { final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this; //... }
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 | 调用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模版元素定义了网页的基本骨架,即定义了页面的结构和外观
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> </body>
</html>
2)JSP表达式:
① 提供了将一个java变量或表达式的计算结果输出到客户端的简化方式,它将要输出的变量或表达式直接封装在<%= 和 %>之中;
② JSP表达式中的变量或表达式的计算结果将被转换成一个字符串,然后被插入进整个JSP页面输出结果的相应位置处;
③ JSP表达式中的变量或表达式后面不能有分号(;),JSP表达式被翻译成Servlet程序中的一条out.print(…)语句。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.Date"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- JSP表达式:可以将页面的一个对象输出到客户端的浏览器上 -->
<%=new java.util.Date()%> <%
Date date = new Date();
out.println(date);
%> </body>
</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元素产生的影响
<%@page import="com.jason.javaweb.Person"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>hello</title>
</head>
<body> <%
String moneyStr = request.getParameter("money");
int money = Integer.parseInt(moneyStr); if (money >= 1000) {
%>
高收入啊!!!!!
<%
} else {
%>
太低了 <%
}
%> </body>
</html>
4)JSP声明(了解, 基本不使用)
①JSP声明将Java代码封装在<%!和 %>之中,它里面的代码将被插入进Servlet的_jspService方法的外面,所以,JSP声明可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法;
②多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中;
③JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象;
<%!
static { System.out.println("loading Servlet!"); }
private int globalVar = 0;
public void jspInit()
{
System.out.println("initializing jsp!");
}
%>
<%!
public void jspDestroy()
{
System.out.println("destroying jsp!");
}
%>
<%
int localVar = 0;
%>
globalVar:<%= ++globalVar %><br>
localVar:<%= ++localVar %>
5)JSP注释
①JSP注释的格式: <%-- 注释信息 --%>
②JSP引擎在将JSP页面翻译成Servlet程序时,忽略JSP页面中被注释的内容。
<%-- 这个就是jsp的注释格式, JSP引擎在将JSP页面翻译成Servlet程序时,忽略JSP页面中被注释的内容 --%>
3.总结
1)掌握JSP的原理
2)掌握隐式对象:pageContext , request , session , application page ,out ,config ,(exception),response
3)jsp的语法: jsp表达式,jsp脚本,jsp注释,jsp声明,jsp模板
[原创]java WEB学习笔记14:JSP的9 个隐含对象 及 JSP 的基本语法的更多相关文章
- [原创]java WEB学习笔记05:Servlet中的ServletConfig对象
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记95:Hibernate 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记11:HttpServlet(HttpServletRequest HttpServletRsponse) 以及关于 Servlet 小结
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记42:带标签体的自定义标签,带父标签的自定义标签,el中自定义函数,自定义标签的小结
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记16:JSP指令(page,include),JSP标签(forwar,include,param)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记36:Java Bean 概述,及在JSP 中的使用,原理
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记13:JSP介绍(背景,特点,原理)
JSP介绍:(理解) 1)JSP背景 ①在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变: ②如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的静态 ...
随机推荐
- index+small+row+if经典函数组合应用
EXCEL中index+small+row+if 函数组合可以查出满足同一条件的所有记录,通过实例讲解: 本文为原创,转载需标明出处,谢谢! 例:查找出一年级的所有班级及人数: A B C D 1 年 ...
- centos7 重启网卡报错
systemctl restart network 时候报错: rtnetlink answers file exists 是network和NetworkManager冲突了 一般建议直接 syst ...
- linux内核参数分析
这是原来在51cto写的,现在都转到博客园来了 1.time_wait连接数过多,需要调整内核参数 http://blog.renhao.org/2010/07/setup-linux-kernel- ...
- iOS端App的icon和Launch Image规格实时更新
启动影像 : iPhone :320 x 480 640 x 960 640*1136 750*1334 1242*2208 iPad :768 x 1004 1536 x 2008 APP图标: ...
- Python基础--通用序列操作
Python 继续 Python包含6种内建的序列,各自是:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.我们将逐步进行介绍. 今天主要介绍一下通用序列操作.放之四海而 ...
- linux权限的深入讨论
1. 怎样查看文件的权限 1) 掌握使用ls –l命令查看文件上所设定的权限. drwxr-xr-x. 2 root root 6 May 26 2017 binfmt.d 权限信 ...
- 谨慎使用ArrayList中的subList方法
转自:https://www.toutiao.com/a6705958780460335619/?tt_from=weixin&utm_campaign=client_share&wx ...
- Centos命令行报bash:.....:command not found的解决办法
命令行报bash:.....:command not found的解决办法(几乎所有命令) 命令行输入命令执行后报“bash:....:command not found”这是由于系统PATH设置 ...
- phpStorm pycharm编辑器主题修改,自定义颜色
新的启程 注: 本人小菜鸟一枚,内容也是从其他博客中借鉴的,谨以此作为写博客开端. phpstorm修改主题: 1. phpstorm主题下载 http://www.phpstorm-themes.c ...
- -[ASIDataCompressor compressBytes:length:error:shouldFinish:] in ASIDataCompressor.o
本文转载至 http://blog.csdn.net/m372897500/article/details/38293973 -[ASIDataCompressor compressBytes:len ...