JSP的学习

开发JSP的动机

 Servlet通过调用PrintWriter类的println方法创建XHTML响应文档

 在Java程序代码中嵌入XHTML,非常烦琐

 分离程序编制和页面设计工作可提高项目开发效率

 JSP是在XHTML中嵌入程序代码

ü         JSP适用于返回文档的大部分内容已经预先确定的情况

ü         Servlet适用于返回文档的大部分内容需要动态产生的情况

JSP 文档包括四种文档

JSP Documents

 模板文件,即传统的XHTML或XML代码,用来产生固定内容,直接发

送到浏览器

 JSP 注释

 <%-- … --%>,不发送到浏览器端

 比较:客户端可以看到的批注,以“<!--”开头以“-->”结尾

 

Action Elements:动作元素

动作元素创建显示内容

 起始标签(可包括属性)、内容(动作体)、结束标签

3种动作元素

1.   标准动作元素

2.   JSP Standard Tag Library(JSTL) elements:JSP标准标签库

3.   自定义动作元素

Action Elements:动作元素——标准动作元素

 由JSP规范定义

 例如:<jsp:include>、<jsp:forward>

 例如:<jsp:useBean>,<jsp:setProperty>,<jsp:getProperty>

forward动作:<jsp:forward>

 把请求转到另外的页面

 只有一个属性page

 page属性包含的是一个相对URL

 page的值既可以直接给出,也可以在请求的时候动态计算

 示例

 <jsp:forwardpage="/utils/errorReporter.jsp" />

 <jsp:forward page="<%=someJavaExpression%>" />

Include动作:<jsp:include>

 把指定文件插入正在生成的页面

 <jsp:include page="relativeURL" flush="true" />

 动态插入

 插入文件的时间是在页面被请求的时候

 被插入的文件是一个完整的JSP文件而非片段

 把两个JSP输出到客户端的结果结合在一起

 两个JSP文件分别被Web服务器转化为两个不同Java类

 不存在变量定义方面的冲突

Action Elements:动作元素—— JSTL(JSP标准标签库)

包括5个子库

 Core tags:核心标签库

 XML Processing:XML处理标签库

Internationalization and formatting:国际化和格式化标签库

 Database access:数据库访问标签库

 Functions:函数标签库

支持表达式语言( expression language

Action Elements:动作元素——自定义标签库

 使用Java语言编程实现

 使用标签比使用等价的Java语句更简单

Directives:指令

 以<%@开始,以%>结束的标签

 发送给JSP容器的消息,提供文档本身的信息和文档中预先定义的动

作元素的来源

 例如:网页的编码方式、语法、信息等

 JSP有3个编译指令:page、include和taglib

 指令定义了JSP的解释环境

Directives:page指令

 page指令是最复杂的指令,它的主要功能为设定整个JSP 网页的属

性和相关功能

 page指令的基本语法

 <%@ pageattribute1="value1" attribute2= "value2"

attribute3=…%>

 示例

 <%@ pagecontentType = “text/html” %>

 <%@ pageimport="java.util.* java.lang.*" %>

 <%@ pagebuffer="5kb" autoFlush="false" %>

 <%@ pageerrorPage="error.jsp" %>

Directives:include指令

 Include 指令将会在JSP 编译时插入一个包含文本或代码的静态文件,

同时解析这个文件中的JSP语句

 Include 指令只有一个参数,即要插入文件的相对路径

 <%@ includefile="relativeURL" %>

 对比include动作元素

 <jsp:includepage=“”/> 运行时插入

 用<jsp:include>标签引入文件的效率要稍微差一点

 如果两个文件中有重复的Java变量或函数定义,那么合并之后编译

要出错

 html的标签同样会相互影响

 避免片段文件中有<html><body>之类的全局标签出现

Directives:taglib指令

 taglib指令定义可用的JSP标准标签库或自定义标签库

 基本语法

 <%@ tagliburi = "tagLibraryURI" prefix="tagPrefix" %>

 示例:定义jstl标签

<%@ taglibprefix=“c”

uri=“http://java.sun.com/jsp/jstl/core”%>

 可允许当前JSP页使用JSTL标签库

 使用JSTL标签时采用”c: qualifier”的形式

Scriptlets:嵌入到JSP文档中的Java代码脚本

 一般使用Java语言编写脚本

 Scriptlets包括:注释、scriptlets代码、表达式、声明(很少使用)

 The expressionscriptlet

<%= expression%>

 如果不是String对象,则转换为String对象

 示例

 <font size=<%=i%>>读者,您好!</font>

 欢迎:<%=request.getParameter("username")%>

JSP有以下九个内置对象

 request、response、out、pageContext、session、application、

config、page、exception

用好JSP内置对象是JSP编程的精髓

使用request对象获取请求

 javax.servlet.http.HttpServletRequest对象

 包含所有请求的信息

 如请求的来源、标头、cookies和请求相关的参数值等

 常用方法

 Object getAttribute( String name ):返回由name指定的属性值,该

属性不存在时返回null

 void setAttribute( String name, Objectvalue ):在属性列表中添加/

删除指定的属性

String getParameter( String name ):获取客户端发送给服务器端的参

数值

 String[] getParameterValues( String name):获得请求中指定参数的

所有值

 String getProtocol():返回请求使用的协议。可以是HTTP1.1或者

HTTP1.0

 String RequestURI():返回发出请求的客户端地址,但是不包括请求的

参数字符串

 String getRemoteAddr():获取发出请求的客户端IP地址

 HttpSession getSession():获取session

使用response对象做应答

 表示javax.servlet.http.HttpServletResponse对象

 提供了用于设置送回浏览器的响应的方法

 sendRedirect(URL):可以将用户重定向到一个不同的页面(URL)

 setContenType(String type):响应设置内容类型头

 addHeader(String name,String value):添加String类型的值到HTTP文

件头

在session对象中保存用户会话

 当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间

反复连接,反复刷新一个页面,服务器应当通过某种办法(比如

cookie)知道这是同一个客户,这就需要session对象

 从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开

这个服务器结束,被称为一个会话

 session表示一个请求的javax.servlet.http.HttpSession对象

 session可以存贮用户的状态信息

application对象

 服务器启动后产生application对象

 当客户在所访问的网站的各个页面之间浏览时,这个application对

象都是同一个

 可以理解为在一个应用中applications对象是一个全局的Map

 有setAttribute( )和getAttribute( )方法

pageContext对象

 pageContext中保存的对象限于本网页内

 有setAttribute( )和getAttribute( )方法

JSP的Scope

 4个范围(scope):Page、Request、Session、Application

 在这4个范围分别有pageContext,request,session,appliaction4个

内置对象用来保存对象

 4个内置对象方法名都是setAttribute( )和getAttribute( )

使用out对象输出

 javax.jsp.JspWriter的一个实例

 是一个输出流,用来向客户端输出数据

 常用方法

 out.print():输出各种类型数据。

 out.newLine():输出一个换行符。

 out.close():关闭流。

<%@ pagecontentType="text/html;charset=GB2312" %>

 <%@ pageimport="java.util.Date" %>

 <HTML>

 <HEAD>

 <%

 Date Now = new Date();

 String hours=String.valueOf(Now.getHours());

 Stringmins=String.valueOf(Now.getMinutes());

 Stringsecs=String.valueOf(Now.getSeconds());

 %>

 </HEAD>

 <BODY>

 现在是<%out.print(String.valueOf(Now.getHours()));%>小时

<%out.print(String.valueOf(Now.getMinutes()));%>分

 <%out.print(String.valueOf(Now.getSeconds()));%>秒

 </BODY>

 </HTML>

在exception对象中处理异常

 Exception对象用作处理JSP文件执行时发生的错误和异常

 只有在错误页面里才可以使用

 前提是:在页面指令里要有isErrorPage=true的页面中

 如:<%@ page contentType="text/html;charset=gb2312"

isErrorPage="true"%>

 则:在此页面中页面中便可使用exception内置对象

<%=exception.getMessage()%>

page对象

 表示从该页面产生的一个Servlet实例

 相当于这个JSP 产生Servlet类的this

 可通过page对象访问实例的属性和函数

config对象

 javax.servlet.ServletConfig对象

 用于存取Servlet实例的初始化参数

 常用方法

 String getInitParameter( String name ):返回名称为name的初始参数

的值

 Enumeration getInitParameters():返回这个JSP所有的初始参数的名

称集合

 ServletContext getContext():返回执行者的Servlet上下文

 String getServletName():返回Servlet的名称

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值