发表于: 2017-10-06 18:44:02

1 737


一、今日完成

1.今天上午因为感冒服用感冒药的缘故,一直觉得大脑比较昏沉,且一直对JSP的语法不熟悉,所以系统学习和梳理之前使用到的JSP相关知识。


2.JSP 所包含的各类元素,包括JSP 注释、声明、表达式、程序段、

JSP 指令(Directive Elements)、JSP 动作(Action Elements)以及JSP 异常处理等。

1)JSP 注释,格式:<%--注释内容--%>或者<%/* 注释内容 */%>。JSP 注释在JSP 页面被转换成Servlet 时会被忽略,在客户端也不会显示。如果希望注释显示在客户端浏览器中,可以使用HTML 注释的语法:<!—comment[<%= expression%>]-->

JSP 注释内容中不能出现“--%>”,否则会出现编译错误。如果必须使用“--%>”作为注释内容,请使用“--%\>”代替。

2)声明,用于声明JSP 程序中使用的变量、方法等,其声明方式与Java 相同(因为声明最终将被发送到服务器端作为Java 语句解释),其语法格式为:<%! declaration;[ declaration;]…… %>

每个声明仅在当前的 JSP 页面中有效,如果希望声明在每个页面中均有效,可以将这些公用的变量和方法声明在一个单独的页面中,在其他页面中仅使用<%@include%>或者<jsp:include>元素将该公共页面包含进每个页面;

3)表达式,表示的是一个在脚本语言中被定义的表达式,在运行后被自动转化为字符串,然后显示出来。其基本语法为:<%=expression%>

4)程序段,符合Java 语言规范的程序片断,在实际运行时会被转换成Servlet,其基本语法为:<% code fragment %>

5)JSP指令,一共有三个:include 指令、page 指令和taglib 指令。

include 指令用于包含一个文件,例如包含一个HTML 文件,基本语法:<%@ includefile=” 相对URL 地址”%>

file 属性所指的URL 地址可以是一个表达式,但必须是相对地址。include 是在JSP 页面被转换成Servlet 时引入本地文件而不是在用户请求提交时。

page 指令能够控制从JSP 页面生成的Servlet 的属性和结构,基本语法:<%@ page属性=”属性值” %>。常用的属性如下:

import=”包名.类名”

 contentType=”MIME 类型”

 isThreadSafe=”true|false”

 session=”true|false”

 buffer=”kb 数|none”

 autoflush=”true|false”

 extends=”包名.类名”

 info=”消息字符串”

 errorPage=”url 地址”

 isErrorPage=”true|false”

 language=”java”

taglib指令,用于自定义的标记,基本语法:<%@taglib url=”相对URL 地址” prefix=”tagPrefix” %>。url 属性用来指明自定义标记库的存放位置。tagPrefix 是为了区分不同标记库中的相同标记名,如同Java 中包名和类名的关系。

必须在使用自定义标记之前使用<%@taglib%>指令,而且可以在一个页面中多次使用,但是前缀名称在一个页面中只能使用一次。

6)JSP动作JSP1.1 中一共制定了7 项标准的“动作元素”: <jsp:include>、<jsp:forward>、 <jsp:plugin>、 <jsp:param>、 <jsp:useBean>、 <jsp:getProperty>和 <jsp:setProperty>。

<jsp:include> 动作,基本语法:<jsp:include page=” 相对URL 地址” flush=”true”/>。page 属性必须是相对URL 地址,flush 的值必须设为true。和include指令不同,<jsp:include>动作是在请求被提交时即引入所包含的文件。

如果这个包含文件是动态的,还可以用<jsp:param>还传递参数名和参数值。

<jsp:useBean> 动作,基本语法:<jsp:useBean 属性=”属性值”/><jsp:useBean属性=”属性值”>.../jsp:useBean>指向对JavaBean 的引用,可用的属性有: id=”name”、scope=”page|request|session|application”、 class=”包名.类名”、 type=”包名.类名”、 beanName=”包名.类名”。

<jsp:setProperty>动作,基本语法格式:<jsp:setProperty 属性=”属性值”/>。设定JavaBean 的属性,可以直接设定,也可以通过request 对象所包含的参数指定。可用的属性: name=”beanName”、property=”propertyName|*"、”param=”parameterName”、 value=”val”。

<jsp:getProperty>动作,基本语法格式:<jsp:getProperty name=”PropertyName” 属性=”属性值”/>。获取bean 的属性,然后转换成字符串并输出。

<jsp:param>动作,基本语法格式:<jsp:param name=”属性名称” value=”属性值”>。<jsp:param>用来提供参数信息,经常和<jsp:include>、<jsp:forward>以及<jsp:plugin>一起使用。name 属性就是参数的名称,value 属性就是参数值。

<jsp:forward> 动作,基本语法格式:<jsp:forward page=”相对url 地址”/>

<jsp:forward>从一个JSP 文件转向page 属性所指定的另一个文件,并传递一个包含用户请求的request 对象,<jsp:forward>动作以下的代码,将不能被执行。page 属性可以是计算类型,但必须是相对URL地址。

<jsp:plugin>动作,基本语法格式:<jsp:plugin 属性=”属性值”>…</jsp:plugin>。在客户端浏览器中执行一个Bean 或者显示一个Applet。根据客户端浏览器的不同类型会产生OBJECT 或EMBED 标记,Java Applet 的运行需要利用这些标记。可用的属性:

 type="bean | applet"

 code="classFileName"

 codebase="classFileDirectoryName"

 name="instanceName"

archive="URIToArchive, ..."

 align="bottom | top | middle | left | right"

 height="displayPixels"

 width="displayPixels"

 hspace="leftRightPixels"

 vspace="topBottomPixels"

 jreversion="JREVersionNumber | 1.1"

nspluginurl="URLToPlugin"

 iepluginurl="URLToPlugin"

 <jsp:fallback>

 <jsp:params>

7)JSP异常JSP 在执行时会出现两类异常,也就是javax.servlet.jsp 包中的两类异常:JspError和JspException。一旦JspError 异常发生,动态页面的输出将被终止然后被定位到错误页。


3.JSP内置对象

JSP 的内置对象是指在JSP 页面系统中已经默认内置的Java 对象,这些对象不必显式声明即可使用。

在JSP 中,定义了四种作用范围,即:Application、Session、Page 和Request,它们代表了对象各自的“生命周期”。

Application Scope 指定的applicaiton 对象作用范围起始于服务器开始运行,application对象被创建之时;终止于服务器关闭之时。

Session Scope 是指其作用范围在客户端同服务器相连接的时间,直到其连接中断为止。

Request Scope 指定的request 对象作用范围是在一个JSP 页面向另一个JSP 页面提出请求到请求完成之间,在完成请求后此范围即结束。

Page Scope 只能够获取本页的数据。


4.在使用JSP 的内置对象处理数据时,需要获取用户填入的数据,并将数据发送至服务器端进行处理。最常用的就是<form>标记和<input>标记。

<form>标记用于定义表单,它将告诉HTML 浏览器如何显示表单以及如何提交表单。基本用法如下所示:<form method=”GET|POST” action=”URL”>…</form>

在任务2中学习REST风格接口使用,有使用GET 和POST方法,二者提交数据的方式不同,区别如下:

i.POST 本身就是为了将数据传送到服务器端,而GET 主要是为了从服务器端取得数据。GET 之所以也能用于提交数据,只是用来告诉服务器,客户端到底需要什么样的数据。POST 方式把信息作为http 请求的内容进行提交,而GET 信息则直接包含在HTTP URL中进行传输。

ii.POST 方式传输数据时,不需要在URL 中显示出来,而GET 方法传递的数据要在URL 中显示。“GET”方法将表单数据以“Query String”的形式附在URL 中,数据通常来自被提交的表单,不同的数据之间用“&”符号分隔。在“GET”方法中,“?”是用来分隔URL和“Query String”的标志符。通过“GET”方法提交的数据在URL 地址中是可视的,因此也就会带来安全上的隐患。

iii. POST 传输的数据量大,几乎没有限制,而GET 方法由于受到URL 长度的限制,只能传递大约255 字节。

iv.对于“GET”方式,服务器端用Request.QueryString 获取变量的值,对于“POST”方式,服务器端用Request.Form 获取提交的数据。

<input>标记通常用来存储和捕获表单数据。基本的表单由两种类型的<input>标记,第一种是诸如文本框和单选框的基本类型,另一种是提交(submit)按钮,该按钮根据表单中的action 属性实现向目标URL 地址传输数据。基本语法如下所示:<input type=”text” name=”inputname” value=”inputvalue”>

创建提交按钮:<input type=”submit” value=”提交”>


5.MVC模型由JSP 充当View 的角色,负责在预定义的页面模板中显示动态内容,由Servlet 充当Controller 的角色,负责对大量的客户端请求进行处理及调用各类JavaBean,由JavaBean 充当Model 角色,负责提供可复用组件以及对数据库的访问等。JSP 本质上就是Servlet。所有的JSP 页面必须实首先被编译成Servlet,然后在Servlet 容器中运行,只是Servlet 无法像JSP 程序那样直接嵌入到HTML 中。之前讲解小课堂,有师兄提问:为什么JSP常用来作为VIEW层组件而不是Servlet?原因我总结了两个:

i.Servlet 无法像JSP 程序那样直接嵌入到HTML 中;

ii.Servlet适合服务器端的处理,比JSP 更加专业强大,也比JSP 更加难懂。对于前端页面设计人员而言,Servlet 并非所长;JSP 不涉及到业务逻辑,只负责动态内容的显示,大大减少了JSP 页面中Java 程序和HTML 代码混淆的情况,对日后的维护工作是具有重要意义的。


二、明日计划

完成任务5中步骤一的代码,下午请假半天。


三、遇到问题

暂无。


四、收获

以上。


禅道进度:任务进度与昨天一致,计划在10月8日提交完成任务5.


返回列表 返回列表
评论

    分享到