您的位置:首页 > Web前端 > JavaScript

第五章学习笔记 JSP基础语法

2012-08-04 14:12 555 查看
/*

第五章 JSP基础语法

*/

1.掌握JSP中注释语句的使用

2.掌握JSP中Scriptlet的使用及使用的区别

3.掌握page指令的作用

4.掌握两种包含语句及两种包含语句的区别

5.掌握跳转指令的操作

6.可以使用JSP基础语法结合JDBC完成登录程序的开发

7.在JSP中基本的核心语法都是来源于java,像java中的各种判断、循环语句在JSP中都可以使用

JSP注释

1.显式注释

<!--注释内容-->

2.隐式注释

格式一://注释,单行注释

格式二:/*注释*/,多行注释

格式三:<%--注释--%>,JSP注释

Scriptlet

在JSP中,最重要的部分就是Scriptlet(脚本小程序),所有潜入在HTML代码中的java程序都必须使用Scriptlet标记出来。在JSP中一共有3种Scriptlet代码

1.第一种Scriptlet:

<%%>,在此Scriptlet中可以定义局部变量、编写语句(输出变量、调用方法、输出对象)等,

2.第二种Scriptlet:

<%!%>,在此Scriptlet中可以定义全局变量、方法、类。

尽量不要在JSP中定义类或方法。从正确的开发思路上讲,当JSP中需要类或者方法时,往往会通过JavaBean的形式调用,这一点在第七章介绍。

3.第三种Scriptlet:

<%=%>,主要功能是输出一个变量或者一个具体的内容,使用<%=%>的形式完成,有时候也称其为表达式输出,使用这种方式输出可以更好地讲HTML代码和java代码进行分离

注意:尽量不要使用out.println()输出,而使用表达式输出

在JSP的开发中,实际上就是在HTML中加入了一些控制及输出的语句,所以在输出时为了使HTML代码和java代码相分离,最好的做法就是只输出由JSP产生的变量,那么这时使用表达式输出就比使用out.println()更加方便

绝对不能使用out.println()输出

Scriptlet 标签

格式:

<jsp:scriptlet>

java scriptlet 代码

</jsp:scriptlet>

注意:所有的标签必须完结。不完结会出现错误

page指令

1.page指令在JSP开发中较为重要,使用此属性,可以定义一个JSP页面的相关属性,包括设置MIME类型、定义需要导入的包、错误页的制定等

2.page指令中,只有import可以重复出现多次,而对于其他熟悉个只能出现一次。

3、比较常用的指令有contentType,pageEncoding,errorPage/isErrorPage和import这四个指令

4.page指令的语法

<%@page 属性="内容"%>

5.什么是MIME?

许多文件都是存在扩展名的,MIME(多功能Internet邮件扩充服务)就是指定某个扩展名文件将使用何种应用程序打开的一个说明。当该扩展名文件被访问时,浏览器会自动指定应用程序来打开

6.如果设置的MIME类型错误,则会出现一个下载提示框

7.可以通过response对象完成指定下载文件的名称

8.response对象表示的是服务器对客户端的回应,可以通过设置头信息的方式指定下载的文件名称

<%@page language="java" contentType="application/msword;charset=GBK"%>

<%

response.setHeader("Content-Disposition","attachment;filename=mldn.doc");

%>

9.MIME可以查看conf/web.xml

10.*.html和*.htm文件两者完全相同,处理的MIME类型是一样的。可以查看conf/web.xml

11.contentType和pageEncoding都可以设置编码,pageEncoding指的是JSP文件本身的编码,而contentType中的charset指的是服务器发送给客户端的内容编码。

在JSP中,如果pageEncoding存在,那么JSP的编码将由pageEncoding决定,否则将由contentType中的charset属性决定;如果两者都不存在,则将使用ISO-8859-1的编码方式。

在JSP中,所有的内容都要经过两次的编码操作,第一阶段会使用pageEncoding编码,第二阶段会使用utf-8编码,第三阶段就是Tomcat生成的网页,此时使用的才是contentType。

从一般的开发来讲,如果一个JSP页面只需要按照网页显示(text/html),则使用pageEncoding设置编码即可。

12.错误页的设置

功能:当一个页面出错后,会自动跳转到一个页面上进行错误信息的提示,这个操作可以通过错误页来指定。

两个条件:

a-指定错误出现时的跳转页,通过errorPage属性指定

b-错误处理页必须有明确的标识,通过isErrorPage属性指定

13.错误页的跳转属于服务器跳转

如果程序跳转后,地址栏的地址没有变,则属于服务器跳转。反之属于客户端跳转,如超链接

在整个操作中,客户端对服务器只发送了一次请求,服务器对客户端也只回应了一次

14.错误页可以在每一个页面中指定,也可以在整个虚拟目录中指定全局的错误处理,要想达到这个效果,就必须修改web.xml文件,在其中加入错误页的操作。

15.全局的错误处理可以处理两种类型的错误,一种是HTTP代码的错误,如404或500;

还有一种是异常的错误,如NullPointerException

<error-page>

<error-code>500</error-code>

<location>error.jsp</location>

</error-page>

<error-page>

<error-code>404</error-code>

<location>error.jsp</location>

</error-page>

<error-page>

<exception-type>java.lang.NullPointerException</exception-type>

<location>error.jsp</location>

</error-page>

16.有时候可能出现无法跳转的错误页,可能是Tomcat将error.jsp也认为是出现了错误,从而无法跳转,此时,可以直接在error.jsp中编写以下的语句。

<%@page language="java" contentType="text/html" pageEncoding="GBK"%>

<%@page isErrorPage="true"%><%--表示此页面可以处理错误--%>

<% response.setStatus(200); %>//此语句设置了一个200的HTTP状态码,表示本页没有错误,可以正确显示

<h1>程序出现了错误</h1>

数据库连接操作

1.在page指令中可以使用import导入所需要的java包,所以直接利用此属性将java.sql包导入进来,即可进行数据库的开发操作。

<%@page import="java.sql.*"%>

包含指令

在一般的页面开发中会有很多内容要重复地显示,可以依靠一些固定的结构

如使工具栏、页面头部、页面尾部固定,中间的具体内容可变

这时有两种做法:

做法一:让每一个页面都分别包含工具栏、页面头部、页面尾部的代码。

做法二:将工具栏、页面头部、页面尾部分别做成一个文件,然后在需要的地方导入(包含)。

当然选择第二种了。

1.静态包含

静态包含指令是在JSP编译时插入一个包含文本或代码的文件。这个包含的过程是静态的,而包含的文件可以是JSP文件、HTML文件、文本文件,或是一段Java程序。

注意:在每一个完整的页面中,对于<html></html><head></head><title></title><body></body>这几个元素只能出现一次,如果重复出现,则可能会造成显示的错误。

静态包含的语法

<%@ include file="要包含的文件路径"%>

包含时不管文件的后缀是什么,都会将内容直接包含并显示。静态包含实际上是先将内容导入到文件,然后再一起进行编译,最后再将一份整体的内容展现给用户。

也就是说先包含,然后在将全部的代码进行集中的编译处理。

2.动态包含

使用<jsp:include>指令可以完成动态包含的操作,与之前的静态包含不同,动态包含语句可以自动区分被包含的页面是静态还是动态。如果是静态页面,则与静态包含一样,将内容包含进来处理;而如果被包含的页面是动态页面,则可以先进行动态的处理,然后再将处理后的结果包含进来。

格式:

不传递参数:

<jsp:include page="{要包含的文件路径|<%=表达式%>}" flush="true|false"/>

传递参数:

<jsp:include page="{要包含的文件路径|<%=表达式%>}" flush="true|false">

<jsp:param name="参数名称" value="参数内容"/>

....可以向被包含页面中传递多个参数

</jsp:include>

flush属性的可选值包括true和false两种类型,当其设置成false表示这个网页完全被读进来以后才输出。在每一个JSP的内部都会有一个buffer,所以如果是true,当buffer满了就输出,一般此属性都会设置true,当然也可以不用设置,默认值为true。

此语法为标签指令,标签指令必须完结。

<jsp:include>这样的语法格式属于标签指令形式,所有的标签指令必须完结,可以使用/>或</jsp:include>,前者是在不传递参数时使用,后者是在传递参数时使用

3.使用动态包含的第二种语发形式也可以向被包含的页面中传递参数,被包含的页面可以使用request.getParameter()方法进行参数的接收。

<%@page contentType="text/html" pageEncoding="GBK"%>

<h1>参数:<%=request.getParameter("name")%></h1>

4.<jsp:param>本身也属于标签指令形式,必须完结

5.一般来讲,使用动态包含比静态包含要好。

静态包含的处理属于先包含后处理,如果在包含页和被被包含页定义相同的变量,则会出错。

动态包含如果被包含的页面是动态页,则属于先处理后包含,即使定义相同的变量也不会出错。

跳转指令

在WEB中可以使用<jsp:forword>指令,将一个用户的请求(request)从一个页面传递到另一个页面,即完成跳转的操作。

1.页面跳转的语法

不传递参数:

<jsp:forward page="{要包含的文件路径|<%=表达式%>}"/>

传递参数

<jsp:forward page="{要包含的文件路径|<%=表达式%>}">

<jsp:param name="参数名称" value="参数内容"/>

...可以向被包含页面中传递多个参数

</jsp:foward>

2.跳转单指令也必须完结

3.跳转语句属于服务器跳转
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: