《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的实际路径,进行日志管理。








  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSP程序设计从入门到精通》电子书   第1篇 入门篇 7   第1章 Jsp概述 技术分析 7    1.1 Jsp简介与历史背景 7    1.1.1 日新月异的Web技术 7    1.1.2 什么是JSP 8    1.1.3 JSP技术有以下几个显著的优点 9    1.1.4 JSP和其他类似或相关技术的一个简单比较 10    1.2 JSP环境安装配置 12    1.2.1Tomcat下JSP环境的配置 12    1.2.1建立自己的Jsp工作目录 13    1.3 JSP语法介绍 14    1.3.1 JSP页面中的元素 14    1.3.2 JSP语法概要 15    1.3.3关于模板文本(静态HTML) 16    1.4 运行第一个Jsp程序 16    1. 5本章小结 20   第2章Jsp 基础学习 20    2.1 JSP基本语法 20    2.1.1 JSP 语法之声明 21    2.1.2 JSP 语法之表达式 21    2.1.3 JSP 语法之Scriptlet 21    2.2 JSP的指令 22    2.2.1 page指令(Directive) 22    2.2.2 include指令(Directive) 24    2.3 JSP的动作 25    2.3.1 jsp:include动作 25    2.3.2 jsp:useBean动作 27    2.3.3 jsp:setProperty动作 29    2.3.4 jsp:getProperty动作 30    2.3.5 jsp: forward动作 31    2.3.6 jsp: plugin动作 31    2.3.7注释 31    2.4 JSP 9种基本内置组件 31    2.5 JSP中Session的使用 34    2.6 JSP中forward的使用 36    2.7 JSP运行时错误处理与应该注意的六个常见问题 37    2.8 JSP小实例 38    2.8.1实例1(在JSP中定义函数) 38    2.8.2实例2(获取各种CGI环境变量) 39    2.8.3实例3(JSP里request变量列表) 42    2. 9本章小结 44   第3章JavaBean组件 44    3.1 什么是JavaBeans 45    3.1.1 JavaBeans 简介 45    3.1.2 JavaBeans 属性 45    3.1.3 JavaBeans 的事件 50    3.2 在Jsp中使用JavaBeans 55    3.3 JavaBeans的scope属性 57    3.4 JavaBeans应用实例 59    3.4.1 实例1(HelloWord.java) 59    3.4.2 实例2(People.java) 60    3.4.3实例子3数组应用 (Example2_3.java) 60    3.4.4实例子4运算符、表达式应用 (Example3_1.java) 61    3.5 本章小结 62   第4章Jsp与Servlet 62    4.1 什么是Servlets 63    4.1.1 JavaServlet的解释 63    4.1.2 什么是Jsp 65    4.1.3 得到一个Servlets和JSP的运行环境 66    4.1.4 实现第一个JSP和SERVELT 67    4.2 Servlet规范定义的Servlet 生命周期 70    4.3 JSP/Servlet的重定向技术综述 72    4.3.1 RequestDispatcher.forward() 72    4.3.2 response.sendRedirect() 73    4.4 理解会话 74    4.4.1 会话状态跟踪API 75    4.4.2 在会话对象中保存数据 76    4.4.3实例:显示会话信息 76    4.5 用Java Servlets代替CGI 78    4.6 JSP/Servlet 中的汉字编码问题 80    4.7 图解Eclipse+Tomcat集成开发Servlet 84    4.8 Servlets/JSP开发技术问答 93    4.9 Servlet小实例 97    4.5.1实例1(输出) 98    4.5.2实例2(获取表单参数) 99    4.5.3实例3(获取jsp各种参数) 101    4.1

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值