JSP注释
chap2_JSP语法

example2_2.jsp:
5
2. JSP页面的成员变量和方法
JSP页面在“<%!”和“%>”之间声明 定义的方法 ,在该JSP页面有效,该方法 内的变量只在该方法内有效
对于在“<%!”和“%>”标记符号之间 定义类,可以在Java程序片中使用该类 创建对象。
18
不允许两次使用page 指令给contentType 属性指定不同的属性值 .
常用类型值有: text/html、text/plain、 image/gif、 image/jpeg、 application/x-shockwave-flash、 application/msword等
实例:example2_8.jsp
16
contentType属性
contentType 属 性 值 确 定 JSP 页 面 响 应 的 MIME (Multipurpose Internet Mail Extention)类型。
例如:
<%@ page contentType="text/html " %> <%@ page contentType="application/msword" %>
如果需要在JSP页面内某处整体嵌入一个文件,就 可以考虑使用include指令标记,其语法格式如下: <%@ include file= "文件的URL " %>
如果该文件和当前JSP页面在同一Web服务目录中, 那么“文件的URL”就是文件的名字;
如果该文件在JSP页面所在目录的子目录中,比如 fileDir子目录中,那么“文件的URL”就是 “fileDir/文件的名字”。
JSP基本语法

JSP脚本JSP通用语法规则JSP通用语法规则包括:JSP的标记规则、JSP元素中的相对路径规则、JSP元素中的转义规则。
JSP的标记规则每一个JSP元素都有一个起始标记和一个结束标记。
起始标记为“<%”或“<jsp:”,结束标记为“%>”或“/>”。
比如:<jsp:include page=”/index.jsp”/><%if(sum>0) sum=sum+42;%>注起始标记和结束标记一定要在同一个JSP页面中,且成对出现JSP元素中的相对路径规则在JSP中可以使用相对路径,相对路径是以字符“/“开头的。
比如:/test/testChinese.jsp——说的实际路径是“C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\test\testChinese.jsp “JSP元素中的转义规则我们已经知道,“<%”和“%>”是JSP中的标记字符,那么如果我们想在程序中用到这两个字符,该怎么区分呢?这就要用到转移规则了。
这里的转义规则包括:“’”被转义为“\’”“””被转义为“\””“\”被转义为“\\”“<%”被转义为“<\%”“%>”被转义为“%\>”下面我们通过一个小例子来看看。
其显示结果如图2-2所示。
图2-2 JSP转义规则示例上面显示结果,可以看到,本来是JSP标记语言的字符,也都显示出来了,实现这样功能的程序代码是怎么样的呢?02-02.jsp文件源代码:<html><head><title>JSP转义规则的例子</title></head><%@page contentType="text/html;charset=gb2312" %><body><p><%out.print("测试要避免冲突的字符串1:\'");%><p><%out.print("测试要避免冲突的字符串2:\"");%><p><%out.print("测试要避免冲突的字符串3:\\");%><p><%out.print("测试要避免冲突的字符串4:%\>");%></p></body></html>JSP脚本元素语法讲了语法规则以后,我们来看看脚本元素,JSP中的脚本元素有四种:注释、声明、表达式和程序段。
第3章 JSP语法

运行该段代码将生成下面的HTML代码: <a href="welcome.jsp">链接到welcome.jsp</a>
20
(3) 动态指定Form表单处理页面,例如下面的代码:
<% String name="logon.jsp"; %> <form action="<%=name%>"></form>
isErrorPage属性:将该属性值设为true,此时在当 前页面中可以使用exception异常对象。若在其他页 面中通过errorPage属性指定了该页面,则当前者出 现异常时,会跳转到该页面,并可在该页面中通过 exception对象输出错误信息。相反,如果将该属性 设置为false,则在当前页面中不能使用exception 对象。该属性默认值为false。 【例3-1】errorPage属性及isErrorPage属性的应14用
<!-- JSP表达式 -->
今天是:<%=today%>
<!-- HTML标记语言 -->
</center>
</body>
3
</html>
3.1.1 JSP中的指令标识 利用JSP指令可以使服务器按照指令的设置来执行
动作和设置在整个JSP页面范围内有效的属性。
<%@ page language="java" contentType="text/html; charset=gb2312" %>
[ isELIgnored="true|false" ]
JSP中的三种注释

JSP中的三种注释
1、JSP单行注释:
JSP单行注释是在匹配标记“<%--”后面添加注释文字,直至行末为止,使用这种注释方法,注释时不需要使用结束字符。
JSP多行注释是用两个标记"<%--"起始多行注释,"--%>"结束多行注释,它的行内的任何字符都会被忽略而不会出现在输出结果中。
JSP HTML注释是使用HTML注释“<!-- ”起始,“--> ”结束,它的行内的任何字符都会被忽略而不会出现在输出结果中。
不同于JSP单行注释和多行注释,JSP HTML 注释是通过 HTML注释可以跨行,除了在JSP脚本内部使用之外,HTML注释还可以在HTML 标签之间使用。
第3章:JSP基础语法

<1>、掌握JSP中注释语句的使用; <2>、掌握JSP中Script的使用及使用的区别; <3>、掌握page指令的作用; <4>、掌握两种包含语句及两种包含语句的 区别; <5>、掌握跳转指令的操作; <6>、可以使用JSP基础语法结合JDBC完成登 录程序的开发;
JSP注释分两种,一种是显示注释,这 种注释客户端是允许看见的;另一种是隐 式注释,这种注释客户端是无法看见的; 在JSP中最重要的就是Scriptlet脚本小 程序,所有嵌入在HTML代码中的java程序 都必须使用Scriptlet标记出来;在JSP中一 共提供了3中Scriptlet代码; 第一种:<%!%> 第二种:<%%> 第三种:<%=%>一定要明确记住字符 串的内容不可改变这一重要特征,一个 String对象内容的改变,实际上是通过内存 地址的“断开-连接”变化完成的,而本身 字符串的内容没有发生任何变化; 可以直接使用String类中的charAt方法 取出字符串指定位置的字符; 在String中使用indexOf方法可以返回 指定字符串的位置; 在
由于那种嵌入scriptlet的代码看起来很 乱,而且不易管理;所以我们应该使用 scriptlet标签指令 <jsp:scriptlet>这里可以定义一些变 量</jsp:scriptlet>; 在使用标签指令时一定要完结; 在JSP中,pageEncoding指的是jsp页 面本身的编码,而contentType中的charset 是服务器发给客户端的内容编码。
chap04-JSP语法基础

Java Web 开发技术 第四章
4.2 JSP元素 <jsp:include>动作元素 <jsp:include>动作元素将page属性指定页面内 容动态包含到当前页面。<jsp:include>动作元素 使用语法格式如下:
• <jsp:include page="relativeURL" flush="true|false"> • 其中page代表一个相对路径,即所要包含进来的文 件位置,所包含文件可以是静态文件或者动态文件,
Java Web 开发技术 第四章
4.3 JSP内置对象
内置对象详细介绍
JSP内置对象介绍 内置对象 类型 javax.servlet.http.H ttpServletRequest 范围 说明 request对象用来封装客户端的请求信息,通过该对象可以获得客户 端请求信息,然后做出响应。request对象是HttpServletRequest类的 实例,具有请求作用域,即完成客户端的请求之前,该对象一直有 效。 response对象封装了响应客户请求的有关信息,它是 HttpServletResponse类的实例。response对象具有页面作用域,即访 问一个页面时,该页面内的response对象只能对这次访问有效,其 它页面的response对象对当前页面无效。 session对象指的是客户端与服务器的一次会话,从客户端连到服务 器的一个Web应用开始,直到客户端与服务器断开连接为止。 Session对象HttpSession类的实例,具有会话作用域。 application对象实现了用户间数据的共享,可存放全局变量。它开 始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直 存在;这样在用户的前后连接或不同用户之间的连接中,可以对此 对象的同一属性进行操作;在任何地方对此对象属性的操作,都将 影响到其他用户对此的访问。服务器的启动和关闭决定了 application对象的生命。application对象是ServletContext类的实例。 Java Web 开发技术 第四章
第2章 JSP语法基础 2.3 JSP指令元素、2.4 JSP动作元素

第2章 JSP语法基础
2.3 JSP指令元素 2.4 JSP动作元素
JSP开发案例教程
本章内容
01 脚本元素 03 JSP指令元素
02 案例ch2.2_datetime: 时间格式化
04 JSP动作元素
05 案例ch2.5_include: 框架类型网页
06 小结与练习
2.3 JSP指令元素
指定在当前页
4
session
中是否允许 10 isThreadSafe 指定是否线程安全
session操作
5
buffer
指定处理页面 输出内容时的 11 缓冲区大小
autoFlush
是定当缓冲区满时是 否自动清空
指定当前页面
说明当前页面是否为
6
errorPage 运行异常时调 12 isErrorPage 其他页面的异常处理
该JSP动作表示获取或创建一个名称为guess的、属于类com.GuessNumber的、生命周期 为session的对象,详见本书案例ch5.4_guessNumber(猜数游戏)。
JSP开发案例教程
所有的动作元素需要两个属性:
id属性
id属性是动作元素的唯一标识,可以在 JSP页面中被引用。动作元素创建的id值 可以通过PageContext来调用。
可以使用绝对或相对URL。 ✓ tagDir属性指示前缀将被用于标识在WEB-INF/tags目录下的标签文件。
2.4 JSP动作元素
JSP开发案例教程
2.4 JSP动作元素
JSP动作元素
➢ JSP动作利用XML语法格式的标记,来控制JSP容器Servlet引擎的行为。 ➢ 利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件
Jsp详解

Jsp详解1.简介2.Jsp的运行原理3.Jsp的语法1.Jsp模板元素2.Jsp中的脚本表达式3.Jsp中的脚本片段4.Jsp的声明5.Jsp注释6.Jsp指令1.首先我们来看一下page指令的用法2.下面在来看一下include指令3.最后来看一下taglib指令7.Jsp中内置的9个隐式对象8.JSP标签库1.jspinclude标签2.jspforward标签3.jspparam或者jspparams标签4.jspuseBean标签jspsetProperty标签jspgetProperty标签9.Jsp中怎么排查错误简介:JSP全称是JavaServer Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。
JSP这门技术的最大的特点在于,写jsp就像在写html,但:它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
相比servlet而言,servlet很难对数据进行排版,而jsp除了可以用java代码产生动态数据的同时,也很容易对数据进行排版。
不管是JSP还是Servlet,虽然都可以用于开发动态web资源。
但由于这2门技术各自的特点,在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用。
其原因为,程序的数据通常要美化后再输出:让jsp既用java代码产生动态数据,又做美化会导致页面难以维护。
让servlet既产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。
因此最好的办法就是根据这两门技术的特点,让它们各自负责各的,servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示jsp来做。
Jsp的运行原理:目标:Web服务器是如何调用并执行一个jsp页面的?Jsp页面中的html排版标签是如何被发送到客户端的?Jsp页面中的java代码服务器是如何执行的?Web服务器在调用jsp时,会给jsp提供一些什么java对象?思考:JSP为什么可以像servlet一样,也可以叫做动态web资源的开发技术?其实Jsp就是一个Servlet,所以我们要先介绍Servlet的相关技术,当我们第一次访问Jsp 的时候,Jsp引擎都会将这个Jsp翻译成一个Servlet,这个文件存放在Tomcat中的work目录中,这里,我们新建一个MyJsp.jsp页面,然后访问以下,我们看一下翻译后的源码:1.<%@ page language="java"import="java.util.*"pageEncoding="utf-8"%>2.3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4.01 Transitional//EN">4.<html>5.<head>6.7.<title>My JSP 'MyJsp.jsp' starting page</title>8.9.</head>10.11.<body>12. This is my JSP page. <br>13.</body>14.</html>1.package org.apache.jsp;2.3.import javax.servlet.*;4.import javax.servlet.http.*;5.import javax.servlet.jsp.*;6.import java.util.*;7.8.public final class MyJsp_jsp extends org.apache.jasper.runtime.HttpJspBase9.implements org.apache.jasper.runtime.JspSourceDependent {10.11.private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();12.13.private static java.util.List _jspx_dependants;14.15.private javax.el.ExpressionFactory _el_expressionfactory;16.private org.apache.AnnotationProcessor _jsp_annotationprocessor;17.18.public Object getDependants() {19.return _jspx_dependants;20. }21.22.public void _jspInit() {23. _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();24. _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class .getName());25. }26.27.public void _jspDestroy() {28. }29.30.public void _jspService(HttpServletRequest request, HttpServletResponse response)31.throws java.io.IOException, ServletException {32.33. PageContext pageContext = null;34. HttpSession session = null;35. ServletContext application = null;36. ServletConfig config = null;37. JspWriter out = null;38. Object page = this;39. JspWriter _jspx_out = null;40. PageContext _jspx_page_context = null;41.42.43.try {44. response.setContentType("text/html;charset=utf-8");45. pageContext = _jspxFactory.getPageContext(this, request, response,46.null, true, 8192, true);47. _jspx_page_context = pageContext;48. application = pageContext.getServletContext();49. config = pageContext.getServletConfig();50. session = pageContext.getSession();51. out = pageContext.getOut();52. _jspx_out = out;53.54. out.write("\r\n");55. out.write("\r\n");56. out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");57. out.write("<html>\r\n");58. out.write(" <head>\r\n");59. out.write(" \r\n");60. out.write(" <title>My JSP 'MyJsp.jsp' starting page</title>\r\n");61. out.write(" \r\n");62. out.write(" </head>\r\n");63. out.write(" \r\n");64. out.write(" <body>\r\n");65. out.write(" This is my JSP page. <br>\r\n");66. out.write(" </body>\r\n");67. out.write("</html>\r\n");68. } catch (Throwable t) {69.if (!(t instanceof SkipPageException)){70. out = _jspx_out;71.if (out != null && out.getBufferSize() != 0)72.try { out.clearBuffer(); } catch (java.io.IOException e) {}73.if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);74. }75. } finally {76. _jspxFactory.releasePageContext(_jspx_page_context);77. }78. }79.}我们看到,这个类继承了org.apache.jasper.runtime.HttpJspBase,要想看到这个类的源码,我1./*2. * Licensed to the Apache Software Foundation (ASF) under one or more3. * contributor license agreements. See the NOTICE file distributed with4. * this work for additional information regarding copyright ownership.5. * The ASF licenses this file to You under the Apache License, Version 2.06. * (the "License"); you may not use this file except in compliance with7. * the License. You may obtain a copy of the License at8. *9. * /licenses/LICENSE-2.010. *11. * Unless required by applicable law or agreed to in writing, software12. * distributed under the License is distributed on an "AS IS" BASIS,13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.14. * See the License for the specific language governing permissions and15. * limitations under the License.16. */17.18.package org.apache.jasper.runtime;19.20.import java.io.IOException;21.22.import javax.servlet.ServletConfig;23.import javax.servlet.ServletException;24.import javax.servlet.http.HttpServlet;25.import javax.servlet.http.HttpServletRequest;26.import javax.servlet.http.HttpServletResponse;27.import javax.servlet.jsp.HttpJspPage;28.import javax.servlet.jsp.JspFactory;29.30.import piler.Localizer;31.32./**33. * This is the super class of all JSP-generated servlets.34. *35. * @author Anil K. Vijendran36. */37.public abstract class HttpJspBase38.extends HttpServlet39.implements HttpJspPage40.41.42.{43.44.protected HttpJspBase() {45. }46.47.public final void init(ServletConfig config)48.throws ServletException49. {50.super.init(config);51. jspInit();52. _jspInit();53. }54.55.public String getServletInfo() {56.return Localizer.getMessage("");57. }58.59.public final void destroy() {60. jspDestroy();61. _jspDestroy();62. }63.64./**65. * Entry point into service.66. */67.public final void service(HttpServletRequest request, HttpServletResponse response)68.throws ServletException, IOException69. {70. _jspService(request, response);71. }72.73.public void jspInit() {74. }75.76.public void _jspInit() {77. }78.79.public void jspDestroy() {80. }81.82.protected void _jspDestroy() {83. }84.85.public abstract void _jspService(HttpServletRequest request,86. HttpServletResponse response)87.throws ServletException, IOException;88.}好吧,看到了,继承了HttpServlet类,所以说其实Jsp就是一个ServletJsp的语法:1.JSP模版元素2.JSP表达式3.JSP脚本片段4.JSP注释5.JSP指令6.JSP标签7.JSP内置对象8.如何查找JSP页面中的错误Jsp模板元素JSP页面中的HTML内容称之为JSP模版元素。