第一章
1.java web开发模式:5种
1)单一的JSP模式
在jsp文件中包含各种代码,如html标记,css标记,javascript标记,逻辑处理,数据库处理代码等2)JSP+JavaBean模式
将jsp页面响应交给JavaBean处理,最后将结果返回给客户。实现业务的显示和业务的逻辑分离。使用jsp技术中的html、css等可以容易地构建数据显示页面,
对于数据处理可以交给JavaBean技术,同时也达到了代码重用的目的。
3)JSP+JavaBean+Servlet模式
很好地实现了MVC模式,view(代表用户交互界面)是jsp文件,即页面显示部分;
controller(可以理解为从用户接收请求将模型与视图匹配在一起,共同完成客户的请求)用Servlet来实现,即页面显示的逻辑部分实现;
model(就是业务流程/状态的处理及业务规则的制定)常用服务端的JavaBean或者EJB实现,即业务逻辑的实现
4)Struct框架模式
5)J2EE模式
第二章 JSP语法
(一个JSP页面实际上是由Java代码段嵌入到HTML标记中构成的)
1.JSP页面的构成
JSP页面是指扩展名为.jsp的文件。一个JSP页面由两部分组成:
(1)jsp页面的静态部分,如html,css标记等,用来完成数据显示和样式;
(2)jsp页面的动态部分,如脚本程序、JSP标签等,用来完成数据处理。其中动态部分包括4个元素,分别为注释元素、脚本元素、指令元素和动作元素。
a)脚本元素用来嵌入Java代码,这些代码将转换得到Servlet的一部分,脚本元素又分为声明、表达式和脚本执行程序;
b) JSP指令用于从整体上控制Servlet的结构
c) 动作用来引入现有的组件或控制引擎的行为
jsp页面中允许使用的页面元素
元素名称 说明 示例
静态部分 html和css静态文本 <h1>jsp<h1>
注释 <!--注释-->和<%--注释--%>两种 <!--声明部分-->
指令 以"<%@"开始,以"%>"结束 <%@page language="java"%>
表达式 <%=java表达式%> <%=stuName%>
脚本 <%Java代码%> <%stuName="jsp";%>
声明 <%!声明一个Java类或者方法%> <%!public class Person{}%>
动作 以"<jsp:动作名>开始,以"<jsp:动作名>"结束 <jsp:include page="top.jsp"></jsp:iniclude>
2.JSP注释
(1)HTML注释
就是在HTML代码中的解释或者说明性文字。语法格式为<!--注释内容-->,其中注释内容可以是JSP表达式,也可以是说明性文字。
注释格式:
1)HTML注释:<!--注释内容-->,应用在HTML代码中的解释性或者说明性文字。
2)隐藏注释:<%--注释内容-->,为了避免重要的注释信息在源文件中出现。
3)代码注释:
a)单行注释:<%//注释内容%>
b)多行注释:<%/* 注释内容1注释内容2 ........ */ %>
*注释内容1 *注释内容2 *...... */ %>
3.JSP脚本元素
JSP的脚本元素可以分为声明、表达式和脚本所有的脚本元素都是以<%开头,以%>结尾的。
(1)脚本:在JSP页面中插入的所有Java代码都可以叫做Java脚本。它在页面请求的处理期间被执行,可以通过JSP内置对象在页面输出内容、访问session绘画、编写流程控制语句等。
语法格式:<%任意的Java代码%>
(2)表达式:一个在Java脚本语言中被定义的Java表达式,在运行时被自动转换成字符串,然后插入到这个表达式在JSP文件中的位置显示。
语法格式:<%=某个表达式%>
规则:
1)表达式的内容必须完整
2)表达式的内容必须是一个单独的Java表达式
3)不能以一个分号结束一个Java表达式
4)表达式的后面不带分号。
(3)声明:用来定义页面级变量,以保存信息或定义JSP页面的其余部分可能需要的支持方法。
声明格式:<%!java声明%>
1)声明变量
2)声明方法
3)声明类
4.指令元素和动作元素
1.指令元素:是为JSP引擎设计的,主要用于设置整个JSP有效的相关信息,这些信息不直接产生任何输出,而只是告诉引擎如何处理其余JSP页面。最常用的指令有page、taglib、include。
语法形式:<%@ 指令名 属性1="属性值1" 属性2="属性值2" ...%>
(1)page指令:用于定义整个JSP页面中的全局属性,描述了和页面相关的指示。
page指令的主要属性如下:
<@ page extends="类名"
import="Java类列表"
session="true|false"
buffer="none|8KB|自定义缓冲区大小"
aotuFlush="true|false"
inThreadSafe=="true|false"
info="页面信息"
errorPage="页面出错时,处理错误页面的URL"
isErrorPage="true|false"
contentType="内容类型信息"
pageEncoding="字符编号"
isELIgnored="true|false"
%>
(2)taglib指令:允许在JSP页面使用给用户自己定义的标签
语法:<%@ taglib uri="tablibURI" prefix="tagPrefix"%>
其中uri表示标签库的地址,用于告诉JSP容器如何找到标签描述文件和标签库;prefix表示在JSP页面里引用这个标签的前缀,这些前缀不可以是jsp,jspx,javax,javax,sun,servlet,sunw。
(3)include指令:是页面中的文件包含指令,它可以将在指定位置上的资源内容包含到当前JSP页面。被包含的文件内容在编译期间被解析,让你后插入到源文件include指令的位置,再继续执行。
语法:<%@ include file="relativeURL"%>
file属性为要包含文件的URL地址,可以使用相对路径,也可以是网络路径。
2.动作元素
用于在JSP页面执行某一个操作,如动态包含某一文件、转向另一个文件或者调用JavaBean等。动作元素和指令元素不同,动作元素实在客户端请求时期动态执行的,每次有客户端请求时可能都会被执行一次,而指令元素是在编译时期被执行的,它只会编译一次。
语法格式:1)空标记形式:
<jsp:动作名称 属性1="属性值1" 属性2="属性值2"....../>
或者 2)非空标记形式:
<jsp: 动作名称 属性1="属性值1" 属性2="属性值2"......>
...
</jsp:动作名称>
常用的6个动作元素,分别是include、forward、param、useBean、setProperty和getProperty.
(1)<jsp:include>:与include指令十分相似,都可以将包含进来的文件插入到JSP页面的特定位置。但是include动作实在页面的执行过程中被插入,而不是在JSP页面被编译的过程中插入。
<jsp:include>有两个属性,flush和page。如<jsp:include page="URL" flush="true">
1)flush:可选,设置是否刷新缓冲区,默认为false,如果设置为true,在当前页面输出使用缓冲区的情况下首先刷新缓冲区,然后智能型包含操作。
2)page:制定被包含资源的相对路径,该路径是相对于当前JSP页面的URL。
(2)<jsp:forward>:作用是将客户端所发送的请求从一个JSP页面转发到另一个JSP页面、Servlet或者静态资源文件,请求被转向的资源必须位于发送请求的JSP页面相同的上下文环境中。当执行期间遇到此动作时,就停止当前JSP页面的执行,转而执行被转发的资源。因此许愿而别主义的,当前页面的<jsp:forward>标签之后的程序将不能被执行。
语法格式:<jsp:forward page={"URL"|"<%=expression%>"}/>
或者 <jsp:forward page={"URL"|"<%=expression%>"}>
<jsp:param name="paramName" value="paramValue"/>
</jsp:forward>
(3)<jsp:param>:该动作元素用来以“名-值(name-value)”对的形式为其他动作提供附加信息,他一般与<jsp:include>,<jsp:forward>,<jsp:plugin>动作配合使用,用于向这些动作元素传递参数。
语法:<jsp:param value="value" name="name"/>
(4)<jsp:javaBean>、<jsp:setProperty>和<jsp:getProperty>
在JSP页面中引入JavaBean可以将HTML网页代码与Java实现分离,使业务逻辑变得更加清晰。使用<jsp:useBean>动作可以创建一个JavaBean实例到JSP页面,<jsp:setProperty>动作用作为JavaBean的属性赋值,<jsp:getProperty>动作用作读取JavaBean属性的值。
<jsp:useBean>标签用来在JSP页面中创建一个Bean实例,并指定它的名字和作用范围,他保证对象在指定的标签内可以使用。
语法:<jsp:useBean id="name" scope="page"|request|session|application" class="package.class" beanName="beanName"/>
1)id:用于定义一个变量名(可以理解为一个JavaBean的标识符),程序通过此变量名对Bean进行引用。
2)scope:指定JavaBean的作用域,可选值有page、request、session、和application,默认值是page。
3)class:指定JavaBean的完整类名
4)beanName:指定JavaBean的完整类名,此属性不能和class同时存在。
<jsp:setProperty>和<jsp:getProperty>动作的语法格式如下:
<jsp:setProperty name="beanName" property="propertyName" value="propertyValue"/>
<jsp:getProperty name="beanName" property="propertyName"/>
其中,各个参数含义如下。
1)name:表示要读取或者设置属性的JavaBean实例名称
2)property:表示要读取或者设置属性的JavaBean属性名称,如果为"*"表示所有属性。
3)value:制定为JavaBean属性的赋值