JSP的一些心得!

[size=large][size=xx-small]Java高级部分JSP
一、 JSP 作用于表现层

JSP文件结构和主要标签

JSP基本概念:
◆JSP页面:JSP页面就是嵌入了Java语句的HTML文件;JSP页面不能够直接运行的,必须翻译成一个Servlet程序,最后运行在容

器上的就是这个Servlet程序的对象实例
◆JSP实现类:通常称这个由容器根据JSP页面生成的Servlet类叫做JSP页面实现类(JSP page implementation class)。

1.1 脚本表达式和指示元素
2 脚本元素基本概念
脚本片段
声明
表达式

3 脚本片段
<% Java语句片段 %>
在脚本片段中就不能定义方法 ,不能在<%和%>标记对中嵌入文本、HTML标记或其它JSP标记

4 脚本声明
<%! Java声明语句 %>
专门用于声明全局性的对象或函数

5 脚本表达式
<%= Java表达式 %>
容器在遇到表达式元素时,会将它转化成下面所示的语句:
out.print(String.valueOf(表达式));
表达式后面不要加分号
专门用于将一些Java表达式以字符串的形式显示在客户端的浏览器中
JSP注释:
在JSP页面中加入注释的方法有四种:
<%-- 注释内容 --%>
<!—注释内容 -->
<%// 注释内容 %>
<%/* 注释内容 */%>
请思考,下面的代码在发送给客户端后的HTML文件中,应该是什么样的?
<%String author = "Tiny"%>
<!--Author is <%= author>-->
6 指示元素:也称为指令元素
指令主要用来提供整个JSP网页相关的信息,并且用来设定JSP页面的相关属性。
7 指示元素是由指示标记和指示属性组合而成的,它们的基本语法形式是:
<%@ directive属性列表%>
指示元素一共有三类,即page指示元素,include指示元素和taglib指示元素。
8 page指示元素
┣ page指示元素包含了与整个JSP页面相关的一些属性。
┣ 在一个JSP翻译单元(翻译单元是JSP源文件及其它通过include指示包含进来的JSP文件)中,可以包含多个独立的page

指示。
┣ 在整个翻译单元中,page指示中的属性只能设置一次。
┣ page指示的属性是位置无关的。
┣ 指示元素的一般形式如下:
┣ <%@page 属性列表 %>
┣ 其中,<%@page和%>是指示标记,而属性列表中则包含了page指示要设置的属性及其值。属性列表的形式是“属性名1=

"属性值1" 属性名2="属性值2" ……”。可以一次设置一个属性,也可以一次设置多个属性。
┣ page指示元素中几个常用的、并且重要的属性:
┣ import属性
┣ session属性
┣ isErrorPage属性
┣ errorPage属性
┣ contentType属性
┣ pageEncoding属性
┣ <%@page import="java.sql.*"isErrorPage="false"errorPage="error.jsp" session=“true”%>
┣ <html>
┣ <body>
┣ <h1>返回所有已记录学生</h1>
┣ </body>
┣ </html>

┣ <%@ page contentType="text/html; charset=gb2312" isErrorPage="true"%>
┣ <html>
┣ <head>
┣ <title>
┣ error
┣ </title>
┣ </head>
┣ <body bgcolor="#ffffff">
┣ <h1><%=exception.getMessage()%></h1>
┣ </body>

include指示元素
┣ 静态include
┣ include指示元素用于在翻译阶段将指定的文件加入到当前的页面中来
<%@ include file="relativeURLspec" %>

taglib指示元素
┣ JSP页面中的taglib指示是用来提示容器,当前的JSP页面使用了扩展标记库(Tag Library)
┣ 标记可以分成两种类型
标准标记。
自定义标记。
┣ <%@ taglib uri="http://www.mycorp/supertags" prefix="super" %>
┣ ...
┣ <super:doMagic>
┣ ...
┣ </super:doMagic>

taglib指示元素的语法形式为:
┣ <%@taglib(uri="tagLibraryURI"|tagdir="tagDir") prefix="tagPrefix" %>
┣ URI的作用是用来指定标记库描述文件的位置
┣ tagdir用来指定扩展标记所在的位置
┣ prefix用来指定标记的前缀名,前缀名的用法是<前缀名:标记名>。 jsp、jspx、java、javax、servlet、sun和sunw

是JSP规范中定义的保留字


1.2隐含变量
1、什么是内置对象:不用在JSP中定义就可以用的对象!
┣ <%@ page contentType="text/html" %>
┣ <html>
┣ <head>
┣ <title>
┣ HelloWorldJSP
┣ </title>
┣ </head>
┣ <body>
┣ <%
┣ out.println("<h1>Hello, World!<h1>");
┣ %>
┣ </body>
┣ </html>
2、自定义对象是不能在JSP页面中直接使用的。
如果想要使用它们,要么在脚本元素中声明(import)。

┣ 内置对象分类

名称 类型 语义 作用域
request ServletRequest类或其子类的对象实例,依据使用协议的不同而不同。例如,当使用的协议是HTTP协议时,则

为HttpServletRequest对象 触发服务的客户端请求,存储与请求相关的数据,可以调用相应方法读取这些数据

request
response ServletResponse类或其子类的对象实例,依据使用协议的不同而不同。例如,当使用的协议是HTTP协议时,

则为HttpServletResponse对象 服务器处理请求后,生成的客户端响应对象,通常调用它的方法将响应页面内容写入到客户

端。 page
pageContext PageContext类的对象实例 当前JSP页面的上下文环境 page
session HttpSession类的对象实例 当前客户会话对象,只对HTTP协议下的应用有效 session
application ServletContext类的对象实例 Servlet上下文环境 application
out javax.servlet.jsp.JspWriter的对象实例 提供向客户端写出输出流的对象 page
config javax.servlet.ServletConfig的对象实例 存储页面的信息 page
page java.lang.Object类的对象实例 处理当前用户请求的JSP页面实现类的对象实例 page
exception java.lang.Throwable类的对象实例 未被处理的异常,这个对象只对错误处理页面有效,即要在page

指示中设置errorPage属性为真。 page

3、 什么是作用域
┣ 对象的作用域就是用来说明对象在什么范围内是有效的,哪些实体可以对它们进行访问
┣ JSP规范中定义了四种作用域,它们是页面作用域、请求作用域、会话作用域和应用程序作用域

&具有页面作用域的对象只在创建它们的页面内有效,所有具有页面作用域的对象引用都存储在pageContext对象中。
&具有请求作用域的对象在JSP页面处理创建它的请求的过程中都是有效的。所有,具有请求作用域的对象引用都是存储在

request对象中的。
┣ API:
┣ getScheme()
┣ getServerName()
┣ getServerPort()
┣ getMethod()
┣ getRequestURI()
┣ getParameter(String name)
┣ getParameterNames()
┣ getAttribute(String name)
&具有会话作用域的对象在同一会话过程中都是有效的。声明了这类对象的页面必须要设置会话有效,也就是要在page指示元素

中将session属性设置为true。因为page中此属性默认为true。所以,不能通过判断(session==null),来确定在线人数。
&具有应用程序作用域的对象在整个JSP应用程序中都是有效的.


1.3行为元素
1、行为元素的概念
●与指令元素不同,行为元素是与特定的请求相关的。它通过使用、修改或创建对象来影响服务器的输出流。
┣运行期间

● 标准行为元素是在JSP规范中定义的行为元素,它们有着统一的前缀名jsp。
<jsp:useBean id="user" class="com.icss.oa.entity.User">
</jsp:useBean>
自定义行为元素则是用户通过扩展标记库或标记文件的方式,经tablib指示元素引入到JSP页面中的行为元素。
2、常见的行为元素
┣ 最常用的行为元素:
┣ <jsp:useBean>
┣ <jsp:setProperty>
┣ <jsp:include>
┣ <jsp:forward>
┣ <jsp:param>
3、应用原理
●jsp:useBean行为元素的作用是将Java对象与一个脚本变量相关联。
●脚本变量就是按照脚本语言规则声明的变量,当Java对象与脚本变量相关联后,用户就可以在脚本元素中使用脚本变量来访问

这些对象了。
●通过jsp:useBean行为元素关联起来的Java对象和脚本变量具有相同的标识符,就是说它们的名称是相同的。
● 注意事项:
┣ javaBean是一个公开的(public)类
┣ javaBean必须有一个没有参数的构造函数
┣ 取得或设定参数时,必须使用getXXX方法和setXXX方法
● javaBean的整体结构
┣ <jsp:useBean id="name“ class = “com.icss.oa.entity.User” scope="page|request|session|application" />
┣ </jsp:useBean>

1.4 EL和JSTL
1、 EL部分(expression language)
@为什么要用EL┣
1、 因为EL标签是由java脚本封装的,所以代码更简洁易读,更容易使美工工作。
2、 它遵守MVC架构,使得代码更容易维护。
但是:对它的解析似乎有多了一层。
@EL的基础知识。
1、EL的表示形式:EL的形式都是${expr}。
2、EL的应用范围:可以应用在标准行为元素、自定义行为元素和任意的模板文本中。<c:if test = "${1=="1"}"> "liming"
</c:if>
@EL中的作用域:包括页面作用域、请求作用域、会话作用域和应用程序作用域。查找顺序是从小到大。
pageScope 按名称存储了页面作用域的属性
requestScope 按名称存储了请求作用域的属性 ${requestScope.user.userName}
sessionScope 按名称存储了会话作用域的属性 ${sessionScope.user.userName}
applicationScope 按名称存储了应用程序作用域的属性 ${contextScope.user.userName}
@EL的内置对象:
类型 名称 说明
JSP pageContext PageContext类的实例,对应于当前页面的处理
作用域 pageScope 按名称存储了页面作用域的属性
requestScope 按名称存储了请求作用域的属性
sessionScope 按名称存储了会话作用域的属性
applicationScope 按名称存储了应用程序作用域的属性
请求参数 param 按名称存储了请求对象的参数名及值,可以通过“."操作符来获取其中的参数,用于单值情况
paramValues 按名称存储了请求对象的参数名及值,可以通过“."操作符来获取其中的参数,用于多值情况
请求报头 header 按名称存储了请求对象的报头,可以通过“.”操作符来获取报头,用于单值情况
headerValues 按名称存储了请求对象的报头,可以通过“.”操作符来获取报头,用于多值情况
Cookie cookie 按名称存储了请求中的Cookie对象,用于单值
初始化参数 initParam 按名称存储了初始化参数
例子:1、<form action="">
<input type = "text" name="userName">
<input type = "submit" >
</form>
<!-- 相当于getParamter -->
${param.userName}
2、pageContext++++++++++++++++++++++
${pageContext.request.method}
3、一个haspmap的例子
${hm.user.computer}

@取得初始化参数:
initParam++++++++++++++++++++++
${initParam.inittest}
@取得doGet()或是doPost()方法
pageContext++++++++++++++++++++++
${pageContext.request.method}
2、JSTL:JSP STANDRAD TAB LANGUAGE(或者是:JavaServer Pages Standard Tag Library)部分:
@存在理由:
EL没有逻辑判断功能。JSTL给予补充。
@如何配置:(有时候不用配置,编译器和版本的问题)
┣ 下载JSTL标签库放到相应的文件夹下
┣ 配置web.xml
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
</jsp-config>

┣ 在JSP中导入标签
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
其中core是指核心标签库(Core tag library)
主要的标签函数库分为五大类:
核心标签库:Core tag library
I18N格式标签库:I18N-capable formatting tag library
SQL 标签库:SQL tag library
XML 标签库:XML tag library
函数标签库:Functions tag library
@core核心标签库主要功能:
表达式操作:out,set,catch, remove
流程控制:
┣ if,(例子见前面EL部分)
┣ choose,
┣ when,otherwise
迭代操作:
┣ forEach,forTokens
URL操作:
┣ Import,url,redirect

@其余。。。。。。。。。。。。。。

都是上课的时候,我们老师给我们将的一些内容的总结,肯定有不足之处,希望高手多多指教。
1.5 CustomTag [/size][/size]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值