P104 JSP简介
(1)基本概念:jsp技术、jsp、jsp网页组成
JSP技术基础java servlet和整个java体系的Web服务器端开发技术。
JSP表示它是用java写的Web服务页面程序。
JSP网页组成:
静态部分:如HTML,CSS标记等
动态部分:脚本程序,JSP标记等
(2)第一次访问执行流程图
当第二次执行时,若JSP页面不被修改,则只执行步骤2和3
(3)例4-1 (略)
P108 JSP注释、例4-2
HTML注释:
<!--这是HTML注释,在客户端源代码中可见-->
JSP注释:
<%--这是JSP注释,在客户端源代码中不可见--%>
P109 JSP声明、变量声明及其含义与使用,例4-3
JSP声明语法:(用;结束)
<%!Java变量或方法;%>
此时相当于全局变量或方法,作用于整个JSP页面!该变量在创建对应的Servlet(init)时被初始化,且一直有效,直到实例销毁(destory)。
P110 JSP表达式的写法,例4-4
JSP表达式的语法:(不能用;结束)
<% = Java表达式 %>
P111 例4-6,4-7
P113 page指令使用及其常用属性的使用
(1)作用与基本语法
作用:设置整个JSP页面的相关属性和功能
基本语法:
<%@page 属性 1 = "属性值 1" 属性 2 = "属性值 2"%......>
(2)使用方式
第一种:
<%@page contentType = "text/html;charset = gb231" import = "java.util.Date"%>
第二种:
<%@page contentType = "text/html;charset = gb231"%>
<%@page import = "java.util.Date"%>
(3)import
导入Java包,多个包用,隔开
<%@page import = "java.util.*,java.lang.*"%>
(4)contentType
用于设置文件格式和编码方式,默认类型是text/html,默认字符编码是ISO-8859-1
<%@page contentType = "text/html;charset = gb231"%>
(5)pageEncoding
指定本页面编码的字符集,默认为ISO-8859-1
<%@page pageEncoding="gbk"%>
(6)iserrorPage
指定本JSP页面是否用于显示错误信息
<%@page iserrorPage = "true"%>
(7)errorPage
指定本JSP文件发生错误时要转向的页面
<%@page errorPage = "error.jsp"%>
(8)errorPage、iserrorPage如何设置,代码如何实现
errorPage="relative URL"
iserrorPage="true|false"
代码见例4-8
(9)pageEncoding与contentType的区别
pageEncoding是JSP文件本身的编码
contentType中的charset是指服务器发送给客户端时的内容编码
(10)page指令使用注意点
1、page指令作用于整个JSP页面,包括<%@include%>指令调用的静态包含文件,但不包括用<jsp:include>指令指定的动态包含文件。因为静态包含实际上把2个JSP文件合并成1个servlrt,动态包含仍是2个独立的servlet文件
2、除了import属性外,其他的属性只能用一次
3、无论把<%@page%>放在JSP文件夹的哪个地方,作用范围都是整个JSP页面。为了可读性,一般放在JSP文件的顶部
P118 include指令
(1)作用
静态包含,将2个JSP文件合并成1个servlet
(2)使用语法
<%@include file = "relative URL"%>
(3)include使用解释
引入文件和被引入文件是在被JSP引擎翻译成servlet的过程中进行合并,而不是先合并源文件再对合并的结果进行翻译。
(4)例4-9
P120 forward动作指令
作用:实现服务器端的页面跳转
语法:
语法1: <jsp:forward page ="{relativeURL|<% = expression%>}"/>
语法2(带参数跳转): <jsp:forward page ="{relativeURL|<% = expression%>}"/>
<jsp:param name = "name" value = "{value|<% = expression%>}"/>
</jsp:forward>
P121 include动作指令
(1)作用、语法格式、代码
动态包含,将2个JSP文件转换成2个独立的servlet文件
语法1: <jsp:include page ="{relativeURL|<% = expression%>}" flush = "true"/>
语法2(带参数包含): <jsp:include page ="{relativeURL|<% = expression%>}" flush = "true"/>
<jsp:param name = "name" value = "value"/>
</jsp:include>
(2)<jsp:include>动作指令与<%@include%>编译指令的作用与区别
作用是相同的,在当前页面嵌入某个页面
区别:<%@include%>编译指令实际上把2个JSP文件合并成1个servlrt,引入文件和被引入文件在被JSP引擎翻译成servlet的过程中进行合并
<jsp:include>动作指令是将2个JSP文件转换成2个独立的servlet文件
P124 param动作指令
例题4-12
P128 JSP内置对象作用域
(1)page、request、session、application的作用范围
page:仅在当前1个JSP页面中有效
request:仅对本次请求(客户每次向JSP页面提出请求,服务器即为此创建1个request对象,服务器完成此请求后,该request立即失效)
session:1个会话(客户端同服务器相连接的期间,直到连接中断为止)
application:整个应用程序(服务器启动是创建,服务器关闭时停止)
作用范围:page < request < session < application
(2)JSP内置对象生命周期原理图
P130 out对象
主要以out.println和out.print两个方法输出数据
P132 request对象(请求)
(1)作用
客户端的请求信息封装在request对象中,通过它才能做出响应
(2)常用方法
void setAttribute(String name,Object o) 将一个对象以指定的名字保存在request中
Object getAttribute(String name) 返回name指定的属性值,如果不存在则返回null
String getParameter(String name) 获取客户端传送给服务器的单个传参值
setCharacterEncoding() 设置解析请求的字符编码类型
Cookie[] getCookies() 以数组形式返回所有Cookie对象
String getLocalName() 获取服务器端的主机名
String getLocalAddr() 获取服务器端的IP地址
String getLocalPort() 获取服务器端的端口
String[] getParameterValues(String name) 获取指定参数的所有值,比如表单的多选框
(3)例4-16,4-17
(4)request中文参数的乱码问题
POST方式:加入<%request.setCharacterEncoding("utf-8");%>
GET方式:在Tomcat中config文件夹里的server.xml中增加斜体部分语句
URIEncoding = "GBK": <Connector port = "8080" protocol = "HTTP/1.1" connectionTimeout = "20000" redirectPort = "8443" URIEncoding = "GBK" />
P136 response对象(响应)
(1)作用
是服务器对request对象请求的回应,负责向客户端发送数据
(2)sendRedirect 重定位方法和 jsp:forward 跳转的区别
jsp:forward 对客户而言是同一次请求,跳转后地址栏不会改变
sendRedirect 对客户而言是不同请求,跳转后地址栏改变
(3)void addCookie(Cookie cookie)
添加一个Cookie对象,用来保存客户端的用户信息
(4)PrintWriter getWriter()
获取输出流对应的writer对象
(5)setCharacterEncoding()
指定响应的字符编码格式
(6)例4-18
P141 session
(1)关于session对象的描述
用户保持HTTP连接状态的技术。因为HTTP本身是无状态的,影响程序间的交互。
(2)常用方法
void setAttribute(String key,Object o) 设置session属性,将一个Object对象以key为关键字保存到session中
Object getAttribute(String key) 返回以key为关键字的Object对象,如果不存在则返回null
int getMaxInactiveInterval() 返回session的超时时间,单位是秒
void setMaxInactiveInterval() 设置session的超时时间,单位是秒,负数表明永不失效
void invalidate() 使该session立即失效
(3)session默认超时的设置
默认超时时间是30分钟,可以通过Tomcat目录下configweb.xml中的<session-config>配置项修改
<session-config> <session-timeout>60</session-timeout> </session-config> <!--单位:分钟-->
(4)例4-23
P144 application
功能:存放要在多个用户中共享的数据
例4-24
P147 pageContent对象
(1)作用
存取其他内置对象
(2)常用方法
ServletRequest getRequest() 回传当前页面的请求,如request
ServletResponse getResponse() 回传当前页面的响应,如response
ServletContext getServletContext() 回传当前页面的执行环境,如application
HttpSession getSession() 回传和目前网页有联系的会话,如session
Object getAttribute(String name,int scope/String name) 回传名称为name,范围为scope的属性对象
getAttributeNameInScope(int scope) 回传所有属性范围为Scope的属性名称
(3)page对象的作用范围
仅在当前1个JSP页面中有效
(4)例4-25
P149 Cookie对象
(1)什么是Cookie?其作用是什么?
Cookie是一种会话跟踪机制。用来记录用户登录的用户名、密码、登录时间等信息
(2)常用方法
Cookie cookie = new Cookie("name","yg");//构造方法
cookie.setMaxAge(60*60);//设定cookie存活时间为1小时,单位:秒
response.addCookie(cookie);
request.getCookies()