[原创]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 |
|
响应请求 |
response |
|
在JSP页面中几乎不会调用response的任何方法 |
pageContext |
|
页面上下文。可以从该对象获取到其他8个隐含对象,也可以从中获取到当前页面的其他信息。自定义标签 |
session |
|
代表浏览器和服务器的一次回话 |
application |
|
代表当前 WEB 应用,是 ServletContext 对象 |
config |
|
代表当前JSP对应的Servlet 的ServletConfig 对象(几乎不用) |
out |
JspWriter 对象
|
调用out.println() 可以直接把字符串打印到浏览器 |
page |
|
指向当前的JSP 对应的Servlet 对象的引用, 但为Object 类型,只能调用 Object 类的方法(几乎不用) |
exception |
|
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模板