《Java Web 程序设计与开发》读书笔记——JSP编程基础和JSP内置对象
本篇内容为读马月坤、赵全明两位老师编著清华大学出版社出版的《Java Web 程序设计与开发》的读书笔记。之前读了一天的人民邮电出版社的《JSP程序设计慕课版》,可能是我没有结合视频的缘故,感觉效果不好,因而换了这本书。
有关HTML和JS的东西直接略过了。
JSP编程基础
1、 因为JSP声明中的变量是全局变量,所以它可以在任何地方被使用。
2、 因为在JSP容器中,JSP会在运行前被转化为Servlet,而对于每一个Servlet,在运行的时候通常只会产生一个实例,如果此时多个客户端同时访问某一个Servlet的全局变量(实例变量),可能会引起多线程的问题,因此,在JSP中声明变量、方法的时候要注意同步问题。
3、 所谓Scriptlet,其实就是插入到JSP程序中的Java代码段。在JSP中,可以在任何地方插入任何数量的Scriptlet,但是需要注意的是,Scriptlet不能相互嵌套。
4、 JSP表达式
其基本语法:<%=expression%>
(1) JSP表达式只能单独出现,也就是说,不能再一对“<%”和“%>”之间出现多条语句;
(2) JSP表达式和普通的Java语句不同,不能用分号结束;
(3) JSP表达式的“<%=”、“%>”和expression只能在同一行上;
(4) “<%=”是一个完整的符号,中间不能有空格;
(5) 这个表达式必须能求职,表达式的值由服务器负责计算,并将计算结果用字符串的形式发送到客户端显示;
(6) 表达式expression必须能够转换成字符串形式。
5、/*看到这里感觉整个文件还是一个HTML文件,只不过有的部分是需要服务器计算然后把结果返回到客户端来显示的,Java代码就是服务器端要运行的依据,不知道正确与否*/
JSP内置对象
1、 JSP的9个内置对象
内置对象 |
类型 |
描述 |
作用范围 |
pageContext |
javax.servlet.jsp.PageContext |
代表当前正在处理的页面中的所有对象 |
page |
request |
javax.servlet.http.HttpServletRequest |
封装所有用户请求 |
request |
response |
javax.servlet.http.HttpServletResponse |
JSP向客户端发送响应数据 |
page |
session |
javax.servlet.http.HttpSession |
跟踪客户访问特定网络时间段的客户信息 |
session |
application |
javax.servlet.ServletContext |
表示所有用户的共享信息 |
application |
config |
javax.servlet.ServletConfig |
服务器配置可以取得初始化参数 |
page |
out |
javax.servlet.jsp.JspWriter |
页面输出 |
page |
page |
java.lang.Object |
代表当前页,取得当前页的属性和方法 |
page |
exception |
java.lang.Throwable |
代表当前页中的所有异常 |
page |
2、 内置对象的作用范围
在JSP中提供了4种属性的作用范围(scope)。所谓属性的作用范围,指的就是一个内置对象可以在多少个页面中保存并继续使用。四种属性范围分别如下:
page:只在一个页面中保存属性,跳转之后无效(不管是否人为干预);
request:只在一次请求中保存,服务器跳转之后依然有效(可以跨越多个页面,但必须在一次请求之内,再次人为干预则无效);
session:再一次会话范围中,无论何种跳转都可以使用,但是新打开的浏览器无法使用;
application:在整个服务器上保存,所有用户或所有的web应用都可以使用。
3、 不管是在单一页面中设置/取得属性值还是跨页面设置/取得属性值,在取得属性值时都要加入强制类型转换。
4、 关于request属性范围的理解:request表示的是客户端的请求,正常情况下,一次请求服务器只会给予一次回应,这时如果是服务器端跳转,请求的地址栏没有改变,也就是相当于回应了一次;而如果地址栏改变了,就相当于发出了第二次请求,则第一次请求的内容肯定就已经消失了,所以无法取得。
一个例子:
requestDemo01.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!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>Insert title here</title>
</head>
<body><%request.setAttribute("name","zqm");request.setAttribute("password","123456");%><jsp:forward page="requestDemo02.jsp"/></body>
</html>
requestDemo02.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><%String name =(String)request.getAttribute("name"); String password = (String)request.getAttribute("password");%><h1>name:<%=name %></h1><h1>password:<%=password %></h1><a href = "requestDemo03.jsp">点击我进入到第三个页面</a>
</body>
</html>
requestDemo03.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!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>Insert title here</title>
</head>
<body><%String name = (String)request.getAttribute("name");String password = (String)request.getAttribute("password");%><h1>name:<%=name %></h1><h1>password:<%=password %></h1>
</body>
</html>
运行截图如下:
点击链接后:
由于这里需要页面浏览者第二次干预,所以和前两个页面不再是同一个请求,点击这个超链接无法取得前面设置的属性值对。
5、 如果现在希望一个属性在设置之后可以在任何一个与设置页面相关的页面中取得,就可以使用session属性范围,使用session设置属性之后,不管是客户端跳转还是服务器端跳转,只要属性设置了就可以取得。
6、 如果希望设置一个属性,可以让所有的用户(每一个session)都能看得见,则可以降属性范围设置为application。/*session的意思为会议、阶段,看来在这里可以看做是一个用户与服务器的“会议”,这里好像不太好描述,意会即可*/
7、 request内置对象是使用最多的一个对象,其主要作用是接受客户端发送来的请求信息,如请求参数、发送的头信息等。
request内置对象常用功能:获取用户输入信息、处理乱码、获得客户端服务器等的相关信息。
8、 page对象代表JSP对象本身,或者说代表编译后的Servlet对象,也就是JSP页面对应的Servlet类的实现对象。
9、 pageContext对象是一个比较特殊的对象。它相当于页面中所有其他对象功能的最大集大成者,即使用它可以访问本页面中所有其他对象,例如request、response以及out等。
10、 session对象表示目前个别用户的会话状态,用来识别每个用户。session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。/*我们平时登录网银网页的时候好像就有这种体会*/
11、 当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在cookie中,这样session对象和客户之间就建立了一一对应的关系。当客户再次访问连接到该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览器后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个session对象。有时,用户可能会忘记退出登录或关闭浏览器,这时,往往需要制定会话持续时间,也就是没有请求操作的持续时间,默认是30分钟的过期时间。
12、 application对象开始于服务器的启动,直到服务器关闭,在此期间,此对象将一直存在。在JSP服务器运行时刻,仅有一个application对象,它由服务器创建,也由服务器自动清除,不能被用户创建和清除。开发人员只能创建这个application对象的同步副本。 application对象可以存储和获取应用的有效属性对象,获取服务器信息,返回web应用名,返回指定文件的MIME类型,获取初始参数,获取指定path的实际路径,进行日志管理。
《Java Web 程序设计与开发》读书笔记——JSP编程基础和JSP内置对象相关推荐
- JSP中的九个内置对象
2019独角兽企业重金招聘Python工程师标准>>> 一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引 ...
- JavaWeb学习总结(十七)——JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- JavaWeb学习总结(十七):JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- JavaWeb学习总结(二)——JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- JavaWeb(十七)——JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- Java并发编程之美读书笔记-并发编程基础2
2019独角兽企业重金招聘Python工程师标准>>> 1.线程的通知与等待 Java中的Object类是所有类的父亲,鉴于继承机制,Java把所有类都需要的方法放到了Object类 ...
- 嵌入式软件开发培训笔记——c编程基础
参考书籍:大学电子或计算机专业C程序设计教程. 编译环境:linux操作系统下的gnu-gcc 完成c经典100题编写(题目在网上随处都能搜到) 一个很好的segment error检查方法 例程文件 ...
- 【融职培训】Web前端学习 第3章 JavaScript基础教程9 内置对象
一.内置对象概述 javascript为我们提供了很多内置对象,这些内置对象为我们提供了很多语言的基本功能.我们之前学过的数组就是JavaScript的内置对象,除了数组我们还应该了解的内置对象有:M ...
- jsp 将页面中的值导入java中_JavaWeb - JSP:概述和语法,内置对象,JavaBean 组件,MVC 设计模式
JSP 的概述 概念 JSP 是 Java Server Pages 的简称,跟 Servlet 一样可以动态生成 HTML 响应, JSP 文件命名为 xxx.jsp. 与 Servlet 不同,J ...
- JSP的9个内置对象(隐含对象)
JSP的9个内置对象(隐含对象) JSP内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员声明即可使用. 9个内置对象如下: page:代表当前JSP页面 request ...
最新文章
- win合适做服务器的系统,win系统做云服务器
- 首张人类黑洞照片的背后
- 【opencv】26.图像水平边缘和竖直边缘的算子数学分析
- 亲手完成四大企业实战项目,挑战Python全栈高薪岗位!
- 华为怎么安装服务器系统版本,服务器怎么安装操作系统版本
- Copying to tmp table Problem Solving
- 计算机应用基础考试excel操作题,自学考试_《计算机应用基础》_上机操作_模拟练习题...
- js排序的时间复杂度_各种排序算法时间复杂度
- origin三维散点图_Origin 9按类别绘制散点图的方法
- 深圳农商行智能柜台项目建设案例
- PoE供电技术与应用
- PCL可视化,你想要一只五彩兔子吗
- 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查
- Python3批量修改图片像素
- 《火车头采集器采集网页数据》火车头配置规则采集信息文章数据。
- 3.2 语音和语言处理简史
- 我们都需要刷新——读现任微软CEO萨提亚的《刷新》有感
- 西门子1200PLC程序SCL数控G代码功能块源文件 S7-1200PLC程序SCL数控G代码功能块源文件
- 使用UltraISO(软碟通)制作U盘启动盘完整教程
- 不忍了!自己来搭建一个网盘
热门文章
- python排序算法可视化
- linux 进程创建 c语言,linux下进程创建的C语言程序
- springboot 2中文手册_基于spring boot的JAVA开源商城系统实战,后台管理系统免费分享...
- java 管理多线程_Java线程管理(一)多线程
- matlab相机标定
- oracle 模拟阻塞,Oracle 阻塞(blocking blocked)介绍和实例演示
- docker .env文件_基于Docker搭建Nacos集群
- python熊猫烧香_熊猫烧香完整源代码
- 嗅探工具java_权宜之计 让迅雷5支持傲游2嗅探器来下载视频
- SAP 批导程序导入Excel后,Excel自动打开