JSP页面中doctype说明 2012-5-8
DOCTYPE声明的作用
DOCTYPE声明在CSS5中的作用要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS 都不会生效,也就是说如果没有这个DOCTYPE声明将会导致CSS失效-css无效,特别是没有声明或声明不正确将在标准浏览器下更是不能正常显示。
DOCTYPE声明开始制作符合标准的站点,第一件事情就是声明符合自己需要的DOCTYPE。
查看很多使用XHTML标准开发的网站,第一行就是:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 打开一些符合标准的站点,例如著名web设计软件开发商Macromedia,会发现同样的代码。
而另一些符合标准的站点的代码则如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 那么这些代码有什么含义?一定要放置吗?什么是DOCTYPE上面这些代码我们称做DOCTYPE声明。
DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本。
其中的DTD(例如上例中的xhtml1-transitional.dtd)叫文档类型定义,里面包含了文档的规则,浏览器就根据你定义的DTD来解释你页面的标识,并展现出来。
要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS 都不会生效。
XHTML 1.0 提供了三种DTD声明可供选择:* 过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法),完整代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"> * 严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如<br>,完整代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "/TR/xhtml1/DTD/xhtml1-strict.dtd"> * 框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD,完整代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 我们选择什么样的DOCTYPE理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional)是目前理想选择。
DOCTYPE声明作用及用法详解
DOCTYPE声明作⽤及⽤法详解⼀、浏览器呈现模式和doctype有的⽹页是遵循标准⽽创作的,但也有很多不是。
即使你不能创建遵循标准的⽹页,也希望浏览器根据标准来正确显⽰那些页。
⽬前,⼤量⽹页充斥着⼤量⾮标准代码,它们仍能正常地⼯作。
事实上,为旧版浏览器设计的⼤多数代码都能在新版浏览器中正确显⽰(虽然呈现⽅式可能有所区别)。
这是什么原因呢?事实上,假如严格遵循最新标准,会完全破坏那些页的⽣存基础。
对于任何希望有所作为的浏览器来说,这当然是令⼈⽆法接受的。
浏览器呈现模式现代浏览器包括不同的呈现模式,⽬的是既⽀持遵循标准的⽹页,也⽀持为⽼式浏览器⽽设计的⽹页。
其中, Standards (标准)模式(也就是严格呈现模式)⽤于呈现遵循最新标准的⽹页,⽽ Quirks (包容)模式(也就是松散呈现模式或者兼容模式)⽤于呈现为传统浏览器⽽设计的⽹页。
另外,注意Mozilla/Netscape 6新增了⼀种 Almost Standards (近似标准)模式,⽤于⽀持为标准的某个⽼版本⽽设计的⽹页。
什么是 doctype切换?放在⽹页顶部的doctype声明是让浏览器进⼊正确呈现模式的关键。
浏览器⾃动切换到恰当的呈现模式,以便正确显⽰由doctype声明所指定的⽂档种类。
理论上,这应该是⼀个⾮常直观的切换。
假如doctype指出当前⽹页是⼀个遵循标准(也就是HTML 4+或XHTML 1+)的⽂档,浏览器就会切换到Standards模式。
假如没有指定doctype,或者指定HTML 3.2以及更⽼的版本,浏览器就切换到Quirks 模式。
这样⼀来,浏览器既能正确显⽰遵循标准的⽂档,⼜不⾄于完全舍弃⽼式的、与标准不符的⽹页。
doctype切换的问题但是,doctype切换是⼀个不完善的⽅案。
即使你在Web⽂档中使⽤了⼀个doctype声明,浏览器也可能不会采取你希望的呈现模式来显⽰⽹页。
原因是多⽅⾯的,包括形式错误的doctype,以及不同<?xml version="1.0" encoding="UTF-8"?>) 开头,其中包括XHTML⽹页。
关于doctype
关于doctypeDOCTYPE 作为⼀个决定浏览器对于 HTML ⽂档采取何种模式“开关”,应出现在 HTML ⽂档的最前⾯。
但是某些时候需要在页⾯最前端放⼊⼀些信息。
对于普通⽂本和 HTML 标签,各浏览器均进⼊了混杂模式,这个很好理解,都看到疑似的 HTML ⽂档正⽂了,浏览器不太会往下追查DOCTYPE 在哪⾥。
对于 HTML 注释和 XML 声明,它们和上⾯的普通⽂本和 HTML 标签有些差别,它们不会在页⾯中展⽰出来,即不可视。
这时,有的浏览器则显得⼗分“智能”,⾮ IE 浏览器均会忽略它们的存在,DOCTYPE 被正确解析。
但是在 IE6 中,DOCTYPE 之前的 XML 声明会导致页⾯进⼊混杂模式,⽽所有的 IE 均会使 DOCTYPE 之前出现了 HTML 注释的页⾯进⼊混杂模式。
在 IE9 中当出现这种情况时,浏览器在控制台中给出了提⽰:“HTML1113: ⽂档模式从 IE9 标准重新启动到 Quirks ”,看来微软在这⼀点上不打算“随⼤流”,这样做也可以敦促作者尽量避免在 DOCTYPE 之前加⼊其他内容。
有的作者很聪明,他既在 DOCTYPE 之前加⼊了他需要的内容,却⼜没有使 IE 由于这些内容⽽进⼊混杂模式。
他可能会这么写:<![if !IE]><!-- some comments --><![endif]><![if false]><!-- some comments --><![endif]>⼜或者是<!--[if !IE]>some text<![endif]-->上⾯这些 IE 条件注释在⾮ IE 浏览器中,可能完全被忽略,可能被解释为普通 HTML 注释。
但是在 IE 中它们全部消失了,因为这就是 IE 条件注释的作⽤。
所以这也是⽬前⽐较合适的在 DOCTYPE 之前写点什么⼜保证所有浏览器均为标准模式的做法,但我们仍然不推荐在DOCTYPE 之前加⼊任何⾮空⽩内容。
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模版元素。
JSP DTD声明
JSP DTD声明文档类型定义DTD中包含4种类型的声明,即元素类型的声明、属性列表声明、实体声明和符号声明。
一个文档类型定义,文件需要将所要创建的XML文档的元素结构和属性类型等预先进行定义。
1.元素类型声明第一个元素类型声明定义一个<student>元素,并规定该元素必须有name、class 和address三个子元素,并且子元素出列的次序必须与之相对应。
第二个元素类型声明也定义了一个<student>元素,并规定该元素的内容仅包含一般的字符串。
元素类型不仅声明了XML文档中可能存在的元素,而且给出了元素名称以及元素的具体类型。
根据XML的标准,按元素内容可以划分为4种类型:空元素类型、ANY元素类型、父元素类型和混合元素类型。
其中的关键字EMPTY表明该元素不包含数据以及子元素。
如果在XML文档中元素本身已经表明了含义,就可以在DTD中声明元素为空元素。
例如:ANY元素类型表明该元素的内容可以是任何字符数据和子元素,只要它们不违反XML格式的约束。
例如:的顺序和次数。
XML的解析器将使用这些正规表达式与XML文档内的数据进行区配,以判断一个文档是否是“有效的”。
正规表达式可以描述父元素和子元素之间非常复杂的关系。
父元素类型的元素声明可以有多种灵活形式,各种形式之间主要是在子元素出现顺序、出现次数,以及各个子元素之间的复合关系决定。
表7-1中列出了在父元素类型中如何规定子元素的次序和出现次。
例如,在下面的DTD父元素类型声明中使用逗号运算符“,”,用于进行一步控混合类型的元素中既可以包含子元素,也可以包含纯文本字符,同样也可以在只能使用竖线分隔#PCDA TA和子元素列表。
2.属性列表声明对于某一个元素而言,它的属性可以有零个或多个,并且每个属性的声明包括属性默认值、属性类型及属性名称等。
默认说明表示在XML文件中,元素的该属性的取值,以及属属性是否为必需。
它具有的取值和说明如表7-2所示。
什么是DOCTYPE
什么是DOCTYPE:DOCTYPE,或者称为 Document Type Declaration(文档类型声明,缩写 DTD)。
通常情况下,DOCTYPE 位于一个 HTML 文档的最前面的位置,位于根元素 HTML 的起始标签之前。
这样一来,在浏览器解析 HTML 文档正文之前就可以确定当前文档的类型,以决定其需要采用的渲染模式(不同的渲染模式会影响到浏览器对于 CSS 代码甚至 JavaScript 脚本的解析)。
在写程序时我们也会经常遇到这样的问题,如何保证原来的接口不变,又提供更强大的功能,尤其是新功能不兼容旧功能时。
遇到这种问题时的一个常见做法是增加参数和分支,即当某个参数为真时,我们就使用新功能,而如果这个参数不为真时,就使用旧功能,这样就能不破坏原有的程序,又提供新功能。
IE6也是类似这样做的,它将DTD当成了这个“参数”,因为以前的页面大家都不会去写DTD,所以IE6就假定如果写了DTD,就意味着这个页面将采用对 CSS 支持更好的布局,而如果没有,则采用兼容之前的布局方式。
这就是Quirks模式(怪癖模式,诡异模式,怪异模式)。
DOCTYPE与各种模式的关系:混杂模式:不写DOCTYPE近似标准模式:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN""/TR/html4/frameset.dtd"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN""/TR/xhtml1/DTD/xhtml1-frameset.dtd">标准模式:<!DOCTYPE html><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""/TR/html4/strict.dtd"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""/TR/xhtml1/DTD/xhtml1-strict.dtd">我们可以看到,过渡型或框架型HTML声明与过渡型或框架型XHTML声明均可使浏览器进入近似标准模式,同时,html5的DOCTYPE声明和严格型HTML声明以及严格型XHTML声明则会使浏览器进入标准模式。
html中doctype有几种类型以及doctype的作用
html中doctype有⼏种类型以及doctype的作⽤htm中doctype标签是⼀种标准通⽤标记语⾔的⽂档类型声明,它的⽬的是要告诉标准通⽤标记语⾔解析器,它应该使⽤什么样的⽂档类型定义(DTD)来解析⽂档。
dotype 的特点:1. <!doctype>声明必须处于HTML⽂档的头部,在<html>标签之前,HTML5中不区分⼤⼩写2. <!doctype>声明不是⼀个HTML标签,是⼀个⽤于告诉浏览器当前HTMl版本的指令3. 现代浏览器的html布局引擎通过检查doctype决定使⽤兼容模式还是标准模式对⽂档进⾏渲染,⼀些浏览器有⼀个接近标准模型。
4. 在HTML4.01中<!doctype>声明指向⼀个DTD,由于HTML4.01基于SGML,所以DTD指定了标记规则以保证浏览器正确渲染内容5. HTML5不基于SGML,所以不⽤指定DTD常见dotype:1. HTML4.01 strict:不允许使⽤表现性、废弃元素(如font)以及frameset。
声明:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "/TR/html4/strict.dtd">1. HTML4.01 Transitional:允许使⽤表现性、废弃元素(如font),不允许使⽤frameset。
声明:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd">1. HTML4.01 Frameset:允许表现性元素,废⽓元素以及frameset。
声明:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "/TR/html4/frameset.dtd">1. XHTML1.0 Strict:不使⽤允许表现性、废弃元素以及frameset。
Doctype的作用
Doctype的作⽤
1.什么是Doctype
<!DOCTYPE>声明叫做⽂件类型定义(DTD),声明的作⽤是为了告诉浏览器该⽂件的类型。
让浏览器解析器知道应该⽤哪个规范来解析⽂档
<!DOCTYPE> 声明必须是 HTML ⽂档的第⼀⾏,位于 <html> 标签之前。
<!DOCTYPE> 声明不是 HTML 标签;它是指⽰ web 浏览器关于页⾯使⽤哪个 HTML 版本进⾏编写的指令。
在 HTML 4.01 中,<!DOCTYPE> 声明引⽤ DTD,因为 HTML 4.01 基于 SGML。
DTD 规定了标记语⾔的规则,这样浏览器才能正确地呈现内容。
HTML5 不基于 SGML,所以不需要引⽤ DTD。
提⽰:请始终向 HTML ⽂档添加 <!DOCTYPE> 声明,这样浏览器才能获知⽂档类型。
2.严格模式与混杂模式如何区分?它们有何意义?
严格模式:⼜称标准模式,是指浏览器按照W3C标准解析代码
混杂模式:⼜称怪异模式或兼容模式,是指浏览器⽤⾃⼰的⽅式解析代码
如何区分:浏览器解析时到底使⽤哪种模式,与⽹页中的DTD有关
(1)如果⽂档包含严格的DOCTYPE,以严格模式呈现
(2)包含过度DTD和URL的DOCTYPE,也以严格模式呈现,但有过度DTD⽽没有URL(统⼀资源标识符)会导致页⾯以混杂模式呈现
(3)DOCTYPE不存在或形式不正确会导致⽂档以混扎模式呈现
(4)HTML5没有DTD,因此也就没有严格模式与混杂模式的区别。
JSP的三大指令七大动作九大对象
JSP的三大指令七大动作九大对象Page:该指令是针对当前页面的指令language:声明当前jp页面使用的脚本语言的种类,通常是java,默认是java,无需设置e某tend:指定jp编译产生的类继承的父类,或者实现的接口import:用于导入包,默认已经导入的包有autofluh:当缓冲区即将溢出时,是否自动强制输出缓冲区的内容info:设置该JSp程序的信息,采用Servlet.getServletInfo()获取该值errorPage:指定错误处理页iErrorPage:设置本JSp是否为错误处理程序ContentType:用于设定生成网页的文件格式和编码格式include:用于指定包含另一个页面JSP的7个动作指令jp:forward执行页面转向,将请求的处理交给下一个页面常和param指令一起application:在本应用内一直有效jp:etProperty设置javaBean实例的属性值jp:getProperty取得JavaBean实例的属性值JSP的9大内置对象1.applicationjava某.ervlet.ServletConte某t的实例,代表JSp 所属的web应用本身,可用于页面之间交换信息2.configjava某.ervlet.ServletConfig的实例,代表JSP的配置信息,常用的方法有getInitParameter(StringparamName)getInitParametername()3.e某ng.Throwable的实例,代表其他页面中的异常和错误,只用当页面时错误处理页面,即page的iErrorPage=true时,该对象才可以使用,方法getMeage(),printStackTrace()4.outjava某.ervlet.jp.JpWriter的实例,该实例代表jp的页面输出流,用于输出内容5.page:代表页面本身,也就是ervlet中的thi,一般不用6.pageConte某tjava某.ervlet.jp.PageConte某t的实例,该对象代表该jp的上下文,使用该对象可以访问页面中的共享数据常用方法:getServletConte某t()getServletConfig()。
DOCTYPE元素详解
DOCTYPE元素详解一.概述本文系统的讲解DOCTYPE元素.同时查证了很多的资料.因为互联网上面的资料比较杂乱,所以经过收集整理我进行了重新定义.比如对于DOCTYPE元素的定义.主要分为基础知识和高级知识.基础知识讲解基本的DOCTYPE知识. 高级知识很多来自网络收集, 主要是实际应用的一些技巧.二.定义DOCTYPE是文档类型(Document Type)的缩写, <!DOCTYPE> 元素用于声明一个页面的文档类型定义(Document Type Declaration, 即DTD).此元素声明位于文档中的最前面的位置,处于<html> 标签之前。
通过确认页面的DTD,可以同时确定页面使用哪种W3C规范(比如HTML 或XHTML 规范)。
三.W3C规范W3C规范的正确翻译应该为W3C推荐(W3C Recommendations).很多设计师的眼里W3C就是标准.但是许多人都是一知半解.下面列于了目前W3C规范中的HTML规范和XHTML规范,稍后会讲解HTML和XHTML的关系:W3C HTML 规范和时间线规范推荐HTML 3.21997年1月14日HTML 4.01998年5月24日HTML 4.011999年12月24日W3C XHTML 规范和时间线规范草案/提议推荐XHTML 1.02000 年1 月26 日XHTML 1.0 修订版2002 年8 月1 日XHTML 1.12001 年5 月31 日XHTML Modules2001 年4 月10 日XHTML Modules 1.12006 年7 月5 日XHTML Basic2000 年12 月19 日XHTML Basic 1.12006 年7 月5 日XHTML Events2003 年10 月14 日XHTML Events 22007 年2 月16 日XHTML Print2006 年9 月20 日XHTML Media Types 2002 年8 月1 日XForms 1.02003 年10 月14 日XForms 1.0 (SE)2006 年3 月14 日XForms 1.12007 年2 月22 日XHTML 2.02006 年7 月26 日XLink2001 年6 月27 日HLink 2002 年9 月13 日XHTML可以看成是最新的HTML规范, 是一项可从HTML 4.01 平稳迁移的XML 应用。
JSP声明、表达式
JSP声明、表达式 JSP声明的基本语法是:<%! 变量定义/⽅法定义/类%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ page language="java" import="java.util.*"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>JSP声明例⼦</title><%!int x, y = 60, z;String name = "John";Date date = new Date();%><%!int add(int m, int n) {int result = 0;result = m + n;return result;}%><%!int chengji(int m, int n) {int result = 0;result = m + n;return result;}%><%!class Circle {double r;Circle(double r) {super();this.r = r;}double area() {return Math.floor(Math.PI * r * r);}}%></head><body><%out.print("我的名字:" + name);out.print("<br/><br/>");out.print("x的值为:" + x);out.print("<br/><br/>");out.print("y的值为:" + y);out.print("<br/><br/>");out.print("z的值为:" + z);out.print("<br/><br/>");out.print("现在的时间为:" + date);out.print("<br/><br/>");out.print("10与20的和为:" + add(10, 20));out.print("<br/><br/>");out.print("10与20的积为:" + chengji(10, 20));%><br /><br /><%Circle c = new Circle(6);out.print("半径为6的圆⾯积为:" + c.area());%></body></html>JSP表达式的作⽤是将动态信息显⽰在页⾯中,语法:<%=变量或者表达式%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ page language="java" import="java.util.*"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>JSP声明例⼦</title><%!int x, y = 60, z;String name = "John";Date date = new Date();%><%!int add(int m, int n) {int result = 0;result = m + n;return result;}%><%!int chengji(int m, int n) {int result = 0;result = m + n;return result;}%><%!class Circle {double r;Circle(double r) {super();this.r = r;}double area() {return Math.floor(Math.PI * r * r);}}%></head><body><%out.print("我的名字:" + name);out.print("<br/><br/>");out.print("x的值为:" + x);out.print("<br/><br/>");out.print("y的值为:" + y);out.print("<br/><br/>");out.print("z的值为:" + z);out.print("<br/><br/>");out.print("10与20的和为:" + add(10, 20));out.print("<br/><br/>");out.print("10与20的积为:" + chengji(10, 20)); %><br /><br />当前的时间为:<%= date%><br /><br /><%Circle c = new Circle(6);out.print("半径为6的圆⾯积为:" + c.area()); %></body></html>。
HTML中doctype的作用及几种类型详解
HTML中doctype的作⽤及⼏种类型详解⼀、DOCTYPE标签的定义与作⽤ <!DOCTYPE>是⼀个⽤于声明当前HTMl版本,⽤来告知web浏览器该⽂档使⽤是哪种 HTML 或者 XHTML 规范来解析页⾯,以便浏览器更加准确的理解页⾯内容,更加良好地展现内容效果!⼆、DOCTYPE标签的特点 1.<!DOCTYPE> 标签没有结束标签; 2.<!DOCTYPE>声明被所有主流浏览器⽀持; 3.<!DOCTYPE>声明不是⼀个HTML标签,在HTML5中是可以不区分⼤⼩写的; 4.<!DOCTYPE>声明必须位于HTML⽂档中最前⾯,处于<html>标签之前; 注:HTML4.01是基于SGML(标准通⽤标记语⾔)的,需要以<!DOCTYPE>声明引⽤⼀个DTD(⽂档类型定义),⽤来保证浏览器按照DTD指定的标记规则解析⽹页内容!HTML5不基于SGML,所以不需要指定DTD。
三、DOCTYPE与浏览器模式 <!DOCTYPE>声明的前⾯是没有任何内容的,如果有其他内容(空格除外)就会使浏览器在 IE下开启怪异模式渲染⽹页;如果浏览器进⼊怪异模式,就会按⾃⼰的⽅式解析渲染页⾯。
那么,在不同的浏览器下,显⽰的样式效果会不⼀致。
如果不写⽂档DOCTYPE声明,浏览器将⽆法获知HTML或XHTML⽂档的类型,也会进⼊怪异模式;还有在IE6以下版本永远进⼊怪异模式; 但是,只要我们对⽂档DOCTYPE做了正确的声明,浏览器就会进⼊标准模式;浏览器会按照W3C的标准来解析渲染页⾯,那么,在所有的浏览器下,显⽰的样式效果会保持⼀致。
因此, <!DOCTYPE>声明还是很有必要的。
若⽂档为标准模式,则该⽂档的排版与JS运作模式都是以该浏览器⽀持的最⾼标准运⾏;兼容模式中,页⾯以宽松的向后兼容的⽅式显⽰,模拟⽼式浏览器的⾏为以防⽌站点⽆法⼯作。
JSP页面中常用四种标签解析
nishenmeJSP页面常用四种标签:EL: ${}jstl(sun apache):<%@ taglib prefix="c" uri="/jsp/jstl/core" %> <%@ taglib prefix="fn"uri="/jsp/jstl/functions"%> <%@ taglib prefix="fmt" uri="/jsp/jstl/fmt" %> struts-tags:<%@ taglib prefix="s" uri="/struts-tags"%> <s:form><s:property>……Ognl(Struts)一、JSP EL语言定义E L(Expression Language)目的:为了使JSP写起来更加简单。
表达式语言的灵感来自于ECMAScript 和XPath 表达式语言,它提供了在JSP 中简化表达式的方法。
它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到Java 类中静态方法的可扩展函数以及一组隐式对象。
EL 提供了在JSP 脚本编制元素范围外使用运行时表达式的功能。
脚本编制元素是指页面中能够用于在JSP 文件中嵌入Java 代码的元素。
它们通常用于对象操作以及执行那些影响所生成内容的计算。
JSP 2.0 将EL 表达式添加为一种脚本编制元素。
二、JSP EL简介1、语法结构${expression}2、[ ]与.运算符EL 提供“.“和“[ ]“两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用“[ ]“。
doctype是什么,有什么作用?
doctype是什么,有什么作⽤?
在HTML⽂档⾸部往往会有这样⼀⾏代码:
<!DOCTYPE html>
由于常见⽽且⼀般可能⾃⼰使⽤编辑器设置了默认模板(包含这⼀句代码),可能很多时候我们会忽略它的存在,不知道它的作⽤以及重要性。
实际上,这⾏代码是⼀个声明,其作⽤是告诉浏览器按照哪⼀种HTML⽂档规范解析HTML⽂档。
Web 世界中存在许多不同的⽂档。
只有了解⽂档的类型,浏览器才能正确地显⽰⽂档。
HTML 也有多个不同的版本,只有完全明⽩页⾯中使⽤的确切 HTML 版本,浏览器才能完全正确地显⽰出 HTML 页⾯。
HTML在其发展过程中遇到过以下⼏个版本,⽬前沿⽤的为 html 4.0 xhtml 1.0 html5。
版本年份
HTML1991
HTML+1993
HTML 2.01995
HTML 3.21997
HTML 4.011999
XHTML 1.02000
HTML52012
其中,<!DOCTYPEhtml>为HTML 5的声明。
⼀般情况下我们新写的前端⼯程就⽤这个声明就可以,否则⼀些新的标准特性是不能⽤的,⽐如说canvas标签。
不去声明doctype也是不可取的。
不同浏览器对这种情况有不同的默认规范,并不⼀致,所以,⼀定要声明好doctype,要注意⼀定加上感叹号。
Processing math: 100%。
jsp页面模板
jsp页面模板JSP是JavaServer Pages的缩写,它是一个用于创建动态网页的技术。
JSP页面模板是一种使用JSP技术来创建动态网页的模板。
JSP页面模板的基本结构JSP页面模板的基本结构由三部分组成:HTML头信息、JSP 代码和HTML尾信息。
其中,HTML头信息和HTML尾信息是用来格式化页面、添加CSS、Javascript等样式和脚本的。
JSP代码则是用来动态生成页面内容的。
下面是一个简单的JSP页面模板的基本结构:```<!DOCTYPE html><html><head><title>JSP页面模板</title><!--CSS和Javascript--></head><body><!--JSP代码生成页面内容--><%--JSP注释--%></body></html>```JSP页面模板中常用的标签和对象JSP页面模板中常用的标签和对象有以下几种:1. `<% %>`:JSP脚本标签,用于在JSP页面中添加Java代码。
2. `<%= %>`:JSP表达式标签,用于将表达式的结果输出到页面上。
3. `<%-- --%>`:JSP注释标签,用于添加注释。
4. `<jsp:include>`:JSP标准动作标签,用于包含其他JSP页面。
5. `<jsp:useBean>`:JSP标准动作标签,用于创建JavaBean对象。
6. `<jsp:setProperty>`和`<jsp:getProperty>`:JSP标准动作标签,用于设置和获取JavaBean对象的属性值。
JSP页面模板的应用JSP页面模板广泛应用于Web开发中。
通过使用JSP页面模板,开发人员可以将页面的内容和页面的样式和脚本分离开来,在修改样式和脚本时不必修改页面的内容,在修改页面的内容时也不必修改样式和脚本。
DOCTYPE的作用
DOCTYPE的作⽤以前⽤dw或vs写html的时候,doctype默认出现,不曾了解过它的作⽤,在看htm5的时候,说doctype也进⾏了⼀些改变,才知道原来doctype的作⽤还是⽐较重要的,在⽹上学习的资料简单总结⼀下,以备以后查阅浏览器分为两种模式,⼀种是标准模式,⼀种是怪异模式,使⽤⼯具开发html的时候⾃动⽣成的都是标准模式。
这两种模式就是是通过doctype的定义来区分什么是doctype,doctype是⼀种标准通⽤标记语⾔的⽂档类型声明,⽬的是告诉标准通⽤标记语⾔解析器要使⽤什么样的⽂档类型定义(DTD)来解析⽂档doctype 最早是xml的概念,在xml中它的定义是通过⼀种特定的语法,作为⼀种元数据,来描述xml⽂档中允许出现的元素,以及各元素的组成,规则等doctype在html中的作⽤是触发浏览器的标准模式,如果html中省略了doctype,浏览器会进⼊到Quirks模式的怪异状态也称之为兼容模式,在这种模式下有些样式,布局会和标准模式存在差异,html标准,DOM标准只规定了标准模式下的⾏为,没有对Quirks模式做出规定,因此不同浏览器在Quirks模式下的处理也是不同的,应⽤Quirks⽐较困难,所以需要慎⽤在html4中 doctype有三种模式因为浏览器有容错能⼒,实际上运⽤这三种模式并不⼗分严格,浏览器都能正确解析出⽤户想要的结果,所以在html5中doctype就简化成了<!DOCTYPE html>但是为了向后兼容性,可扩展性等事情,html5还定义了其他⼏种组合<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN"><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"><!doctype HTML system "about:legacy-compat">(兼容久远时代的历史遗产⽽准备的DOCTYPE,about:legacy-compat,注意这段⽂本是⼤⼩写敏感的)DOCTYPE的组成说明如下:1. ⼀段⽂本,即<!DOCTYPE,⼤⼩写不敏感。
DOCTYPE元素详解 完整版
本文系统的讲解DOCTYPE元素.同时查证了很多的资料.因为互联网上面的资料比较杂乱,所以经过收集整理我进行了重新定义.一.概述本文系统的讲解DOCTYPE元素.同时查证了很多的资料.因为互联网上面的资料比较杂乱,所以经过收集整理我进行了重新定义.比如对于DOCTYPE元素的定义.主要分为基础知识和高级知识.基础知识讲解基本的DOCTYPE知识. 高级知识很多来自网络收集, 主要是实际应用的一些技巧.二.定义DOCTYPE是文档类型(Document Type)的缩写, <!DOCTYPE> 元素用于声明一个页面的文档类型定义(Document Type Declaration, 即DTD).此元素声明位于文档中的最前面的位置,处于<html> 标签之前。
通过确认页面的DTD,可以同时确定页面使用哪种W3C规范(比如HTML 或XHTML 规范)。
三.W3C规范W3C规范的正确翻译应该为W3C推荐(W3C Recommendations).很多设计师的眼里W3C 就是标准.但是许多人都是一知半解.下面列于了目前W3C规范中的HTML规范和XHTML 规范,稍后会讲解HTML和XHTML的关系:W3C HTML 规范和时间线规范推荐HTML 3.21997年1月14日HTML 4.01998年5月24日HTML 4.011999年12月24日W3C XHTML 规范和时间线规范草案/提议推荐XHTML 1.02000 年 1 月26 日 XHTML 1.0 修订版2002 年8 月 1 日 XHTML 1.12001 年 5 月31 日 XHTML Modules2001 年4 月10 日 XHTML Modules 1.12006 年7 月5 日 XHTML Basic2000 年12 月19 日 XHTML Basic 1.12006 年7 月 5 日 XHTML Events2003 年10 月14 日 XHTML Events 22007 年 2 月16 日 XHTML Print2006 年9 月20 日 XHTML Media Types2002 年8 月 1 日 XForms 1.02003 年10 月14 日 XForms 1.0 (SE)2006 年 3 月14 日 XForms 1.12007 年 2 月22 日 XHTML 2.02006 年7 月26 日 XLink2001 年6 月27 日 HLink2002 年9 月13 日 XHTML可以看成是最新的HTML规范, 是一项可从HTML 4.01 平稳迁移的XML 应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
jsp html 页面DOCTYPE
声明符合自己需要的DOCTYPE。
查看原代码,可以看到第一行就是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"/TR/xhtml1/DTD/xhtml1-transitional.dtd">
打开一些符合标准的站点,例如著名web设计软件开发商Macromedia,设计大师Zeldman的个人网站,会发现同样的代码。
而另一些符合标准的站点(例如)的代码则如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"/TR/xhtml1/DTD/xhtml1-frameset.dtd">
那么这些代码有什么含义?一定要放置吗?
什么是DOCTYPE
上面这些代码我们称做DOCTYPE声明。
DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本。
其中的DTD(例如上例中的xhtml1-transitional.dtd)叫文档类型定义,里面包含了文档的规则,浏览器就根据你定义的DTD来解释你页面的标识,并展现出来。
要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS都不会生效。
XHTML 1.0 提供了三种DTD声明可供选择:
过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法)。
完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"/TR/xhtml1/DTD/xhtml1-transitional.dtd">
严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如<br>。
完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"/TR/xhtml1/DTD/xhtml1-strict.dtd">
框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD。
完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"/TR/xhtml1/DTD/xhtml1-frameset.dtd">
我们选择什么样的DOCTYPE
理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional)是目前理想选择(包括本站,使用的也是过渡型DTD)。
因为这种DTD还允许我们使用表现层的标识、元素和属性,也比较容易通过W3C的代码校验。
注:上面说的"表现层的标识、属性"是指那些纯粹用来控制表现的tag,例如用于排版的表格、背景颜色标识等。
在XHTML中标识是用来表示结构的,而不是用来实现表现形式,我们过渡的目的是最终实现数据和表现相分离。
打个比方:人体模特换衣服。
模特就好比数据,衣服则是表现形式,模特和衣服是分离的,这样你就可以随意换衣服。
而原来HTML4中,数据和表现是混杂在一起的,要一次性换个表现形式非常困难。
呵呵,有点抽象了,这个概念需要我们在应用过程中逐步领会。
补充
DOCTYPE声明必须放在每一个XHTML文档最顶部,在所有代码和标识之上。