java web基础(2)(jsp)
在一个JSP页面中,可以包括指令标识、HTML代码、JavaScript代码、Java代码、注释和JSP动作标识。
一、指令标识
它是被服务器解释并执行的,客户端浏览器是不可见的。
JSP指令标识的语法格式如下:
<%@ 指令名 属性1=“属性值1” 属性2=“属性值2”···%>
在JSP中包含page、include和taglib 这3条指令
1、page指令:用于定义整个JSP页面的相关属性
page指令有15个属性,下面介绍一些常用的
language属性:设置JSP页面使用的语言
extends属性:设置JSP页面继承的Java类
import属性:设置JSP导入的类包
pageEncoding属性:指定编码格式
contentType属性:设置JSP页面的MIME类型和字符编码,如:contentType=”text/html;charset=UTF-8”
session属性:JSP页面是否使用HTTP的session会话对象,值为false或true
buffer属性:JSP的out输出对象使用的缓冲区大小,默认大小为8kb,单位只能为kb
autoFlush属性:设置JSP页面缓存满时,是否自动刷新缓存。默认为true;如果设置为false,缓存被填满时将抛出异常
isErrorPage属性:是否将当前页面设置为错误处理页面
errorPage属性:指定当前页面异常错误的另一个页面
2、include指令:在一个JSP页面中包含另一个JSP页面,静态包含,生成一个文件
include指令的语法格式:<%@ include file=”path”%>
3、taglib指令:声明所使用的标签库,同时引入标签库,并指定标签的前缀,语法格式如下:
<%@ taglib prefix=“tagPrefix” uri=“tagURI”%>
二、脚本标识
1、JSP表达式:用于向页面输出信息,语法格式如下:
<%=表达式%>
JSP表达式不仅可以插入到网页的文本中,用于输出文本内容;也可以插入HTML标记中,用于动态设置属性值。
2、声明标识:用于在JSP页面中定义全局的变量或方法,语法格式如下:
<%! 声明变量或方法的代码 %>
3、代码片段:在JSP页面中嵌入Java代码或脚本,语法格式如下:
<% java代码或脚本 %>
代码片段与声明标识所创建的变量和方法的区别是:前者生命周期是页面关闭后,就会被销毁;后者的生命周期是从创建开始到服务器关闭结束。
三、JSP注释
1、HTML中的注释:不会显示在网页中,但查看网页源代码时可以看到。格式是:
//注释文本
2、JSP表达式中的注释:和java注释相同,有3种
3、隐藏注释:查看网页源代码时也无法看到,格式:<%-- 注释内容 --%>
4、动态注释:HTML注释对JSP嵌入的代码不起作用,所以可以构成动态HTML注释文本,如:<!-- <%=new Data()%>-->
四、动作标识
1、包含文件标识<jsp:include>: 格式为:<jsp:includepage=”url”/>
如果被包含的是静态文件,页面执行后,在使用了该标识的位置将会输出这个文件的内容;如果包含是个动态文件,那么JSP编译器将编译并执行这个文件。
Include指令和<jsp:include>动作标识的区别:
(1) include指令通过file属性指定被包含的文件,并且file属性不支持任何表达式;<jsp:include>动作标识通过page属性指定被包含的文件,而且page属性支持JSP表达式
(2) 使用include指令时,被包含的文件内容原封不动地插入到包含页中,然后JSP编译器将合成1文件编译成一个java文件;使用<jsp:include>动作标识包含文件时,当该标识被执行时程序会将请求转发到被包含的页面,并将执行结果输出到浏览器中,然后返回原页面继续执行。JSP编译器会编译为多个java文件
(3) 在include指令包含文件时,由于最后生成一个文件,所以被包含文件、包含文件中不能有重名的变量和方法;而<jsp:include>动作标识可以重名。
2、请求转发标识<jsp:forward>:格式为:<jsp:forward page=”url”/>
3、传递参数标识<jsp:param>: 格式为:<jsp:param name=”参数名” value=”参数值”/>
五、内置对象
共总9个,分别为request, response, session, application, out, pageContext, config,page和exception。
1、request对象:封装了由客户端生成的HTTP请求的所有细节,通过request对象提供的一些方法可以处理客户端浏览器提交的HTTP请求中的各项参数。
获取请求参数:getParameter();如果参数不存在,返回null;参数名存在,但参数值,返回空字符串。
在request范围内管理属性:setAttribute(Stringname, Object obj)
getAttribute(String name);
获取cookie:通过cookie的getCookies()方法可获取所有cookie对象的集合;通过cookie对象的getName()可获取cookie的名称;通过getValue()可获取cookie对象的值。
解决中文乱码:ISO-8859-1变为UTF-8
newString(request.getParameter(“name”).getBytes(“ISO-8859-1”, “UTF-8”);
获取客户端信息:
2、response对象:用于响应客户请求,向客户端输出信息。
重定向:sendRedirect(String path);
处理HTTP文件头:禁用缓存:setHeader(“Cache-Control”,”no-store”);
自动刷新:setHeader(“refresh”, “10”);
定时跳转:setHeader(“refresh”,”5;URL=login.jsp”);
设置输出缓冲:
3、session对象:HTTP协议是一种无状态协议,通过session可以在应用程序的Web页面间进行跳转时,保存用户状态。
创建及获取客户会话:setAttribute(String name, Object obj);
getAttribute(Stringname);
移除变量:removeAttribute(String name);
销毁session:invalidate();
会话超时管理:
4、application对象:用于保存所有应用程序中的共有数据,生命周期从服务器启动到服务器关闭。
访问应用程序初始化参数:getInitParameter(String name);
getAttributeNames();返回所有参数名的枚举
管理应用程序环境属性:
5、out对象:用于在web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。
向客户端输出数据:print();
Println();
管理响应缓冲:
6、pageContext对象:获取页面上下文,通过它可以获取jsp页面的request, response,session, application, exception等对象。它的创建和初始化都由容器完成。
7、config对象:获取服务器的配置信息(web.xml),通过pageContext对象的getServletConfig()可以获取一个config对象。
8、page对象:jsp本身,只有在jsp页面内才合法,可以看做this
9、exception对象:只有在page指令设置isErrorPage为true的页面才能被使用