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”);

    获取客户端信息:

java web基础(2)(jsp)

 

2、response对象:用于响应客户请求,向客户端输出信息。

重定向:sendRedirect(String path);

处理HTTP文件头:禁用缓存:setHeader(“Cache-Control”,”no-store”);

               自动刷新:setHeader(“refresh”, “10”);

               定时跳转:setHeader(“refresh”,”5;URL=login.jsp”);

设置输出缓冲:

java web基础(2)(jsp)

 

3、session对象:HTTP协议是一种无状态协议,通过session可以在应用程序的Web页面间进行跳转时,保存用户状态。

创建及获取客户会话:setAttribute(String name, Object obj);

                      getAttribute(Stringname);

移除变量:removeAttribute(String name);

销毁session:invalidate();

会话超时管理:

java web基础(2)(jsp)

   

4、application对象:用于保存所有应用程序中的共有数据,生命周期从服务器启动到服务器关闭。

访问应用程序初始化参数:getInitParameter(String name);

                         getAttributeNames();返回所有参数名的枚举

管理应用程序环境属性:

java web基础(2)(jsp)

 

5、out对象:用于在web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。

向客户端输出数据:print();

                  Println();

管理响应缓冲:

java web基础(2)(jsp)

 

6、pageContext对象:获取页面上下文,通过它可以获取jsp页面的request, response,session, application, exception等对象。它的创建和初始化都由容器完成。

java web基础(2)(jsp)

java web基础(2)(jsp)

7、config对象:获取服务器的配置信息(web.xml),通过pageContext对象的getServletConfig()可以获取一个config对象。

java web基础(2)(jsp)

 

8、page对象:jsp本身,只有在jsp页面内才合法,可以看做this

java web基础(2)(jsp)

 

9、exception对象:只有在page指令设置isErrorPage为true的页面才能被使用

java web基础(2)(jsp)