5、第2篇 JSP语言基础之----JSP基本语法

来源:互联网 发布:淘宝兼职正规平台 编辑:程序博客网 时间:2024/06/07 05:01

对应于书本第5章

总结:JSP在服务器端执行。

JSP是什么?
传统的HTML文件中加入java代码段形成JSP(Java Server Pages)文件。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP结构?
JSP可以包含指令标识、动作标识、html代码、JavaScript代码、Java代码等等。

指令标识

作用:设定整个JSP的信息
语法:

<%@ 指令名 属性1=”值1” 属性2=”值2”…….%>
JSP中指令有:page、include、taglib三个

多个属性可以一起写,也可以分开写

page指令:
属性有:language、extends、import、pageEncoding、contentType、session、buffer、autoFlush、isErrorPage、errorPage等。
例:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8" import="java.util.*"%><%@ page import="java.text.SimpleDateFormat"%>session属性:该JSP页面是否使用session,true表示用,false表示不用。session是JSP内置对象<%@ page session="false"%>buffer属性:设置JSP的out输出对象的缓冲区大小,默认为8KB,一般都是8的倍数如163264等<%@ page buffer="128kb"%>autoFlush属性:JSP页面缓存满时是否自动刷新<%@ page autoFlush="false"%>isErrorPage属性:是否将当前JSP页面设置为错误处理页面<%@ page isErrorPage="false"%>errorPage属性:指定该页面错误时应转到哪个错误处理页面<%@ page errorPage="error/loginErrorPage.jsp"%>

include指令:
文件包含指令,在某个JSP文件中包含另一个JSP文件,是静态包含。
什么是静态包含?就是相当于代码分开写在两个文件中,包含进来再一起执行。而动态包含里有页面的跳转。
包含和被包含文件不能有相同的变量
要求:html、head、body等标记只写在主文件中,被包含文件中不要写。
语法:

<%@ include file="被包的文件名,可以是完整路径表示"%>例:<body style="margin:0px;"><%@ include file="top.jsp"%><table width="781" height="279" border="1" cellpadding="0" cellspacing="0" background="images/center.JPG">  <tr>    <td>&nbsp;</td>  </tr></table><%@ include file="copyright.jsp"%></body>此代码即是导入了两个被包含文件

taglib指令:
作用:声明该页面中使用的标签库,同时引用标签库,并指定标签的前缀。在页面引用标签库后,就可通过前缀来引用标签库中的标签。

语法:<%@ taglib prefix="标签的前缀" uri="标签库文件的位置" %>例如,引用JSTL的核心标签库<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

脚本标识

有三种:

<%= 表达式 %><%! 声明变量或方法的代码 %>     // JSP页面中定义全局的变量或方法<% Java代码或脚本代码 %>

JSP注释

Java或JavaScript部分:// 或/*   */html部分: 一般<!--   -->,隐藏注释<%--   --%>

动作标识

三个:

<jsp:include><jsp:forward><jsp:param>

(1)

<jsp:include>,包含文件,可以是静态文件也可是动态文件语法:<jsp:include page="被包文件" flush="false/true" />或<jsp:include page="被包文件" flush="false/true" >   子动作标识<jsp:param></jsp:include>说明:flush:可选属性,用于设置是否刷新缓冲区,默认为false子动作标识<jsp:param>:用于向被包含的动态页面中传递参数

<body style="margin:0px;"><jsp:include page="top.jsp"/><table width="781" height="279" border="1" cellpadding="0" cellspacing="0" background="images/center.JPG">  <tr>    <td>&nbsp;</td>  </tr></table><jsp:include page="copyright.jsp"/></body>

比较:
前面讲的include指令与动作啥区别?

指令的file属性不支持任何表达式,而include动作的page属性支持JSP表达式;
include指令相当于是代码分开写但是一起执行,而动作是分别编译执行;
include指令的两个文件中不能有重名的变量或方法,include动作因为是单独编译的所以主文件和被包文件没有冲突。

(2)

<jsp:forward>语法:<jsp:forward page="url"/><jsp:forward page="url">子动作标识<jsp:param></jsp:forward>

例子:
有两个文件index.jsp 和login.jsp
其中index.jsp如下:

<html><head><title>中转页</title></head><body><jsp:forward page="login.jsp"/></body></html>

(3)传递参数标识

语法:<jsp:param name="参数名" value="参数值"/>

例:通过jsp:param为jsp:forward指定参数

<jsp:forward page="modify.jsp">    <jsp:param name="userId" value="7"/></jsp:forward>

最后课后练习,里面有几行代码还要理解

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><%    String path = request.getContextPath();    String basePath = request.getScheme() + "://"            + request.getServerName() + ":" + request.getServerPort()            + path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>    <head>        <base href="<%=basePath%>">    </head>    <body>    </body></html>
0 0
原创粉丝点击