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

来源:互联网 发布:网络系统安全架构 编辑:程序博客网 时间:2024/05/29 15:01
/*
第五章 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.跳转语句属于服务器跳转



原创粉丝点击