1、什么是JSP?
      Java Server Pages,它和servlet技术一样,都是SUN公司定义的一种惯用语开发动态web资源的技术

2、JSP技术的特点
  相比html而言,html只能为用户提供静态数据,而JSP技术云溪在页面中嵌套java代码,为用户提供动态数据
  相比servlet而言,servlet很难对数据进行排版,而JSP除了可以用java代码产生动态数据的同时,也很容易对数据进行排版

3、为什么JSP技术也是一种动态web资源的开发技术?
  因为JSP技术允许在页面中嵌套java代码,以产生动态数据,并且web服务器在执行jsp时,web服务器会传递web开发相关的对象给jsp,jsp通过这些对象,
  可以与浏览器进行交互,所以jsp当然也是一种动态web资源开发技术。

注意:在servlet向JSP跳转的时候要用forward而不能用sendRedic(),因为数据存放在request域,而sendRedic()代表一次全新的请求,里面的信息带不过去

4、JSP模板元素
  JSP页面中的HTML内容称之为JSP模版元素。
  JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观。

5、JSP脚本表达式
  用于将程序数据输出到客户端
  语法:<%= 变量表达式 %>
  举例:当前时间:<%= new java.util.Date() %>
  原理:
  JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.print(…) 将数据输给客户端。

注意:JSP脚本表达式中的变量或表达式后面不能有分号(;)。

6、JSP脚本片段
  6.1 JSP脚本片断(scriptlet)用于在JSP页面中编写多行Java代码。
    语法:
    <%
      多行java代码
    %>

注意:
  JSP脚本片断中只能出现java代码,不能出现其它模板元素, JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中。
  JSP脚本片断中的Java代码必须严格遵循Java语法,例如,每执行语句后面必须用分号(;)结束。

6.2 在一个JSP页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素。
  多个脚本片断中的代码可以相互访问,犹如将所有的代码放在一对<%%>之中的情况
  单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完整的Java语句,
  <%
    for (int i=1; i<5; i++)
  {
  %>

    <H1>www.sina.org</H1>

  <%
  }
  %>

7、JSP声明
    JSP页面中编写的所有代码,默认会翻译到servlet的service方法中, 而Jsp声明中的java代码被翻译到_jspService方法的外面。语法:
         <% !
              java代码
         %>
    所以,JSP声明可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法 。

Tip
     多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。
     JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象。

8、JSP注释
  JSP注释的格式:
   <%-- 注释信息 --%>
   JSP引擎在将JSP页面翻译成Servlet程序时,忽略JSP页面中被注释的内容。

9、JSP指令
  JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
  在JSP 2.0规范中共定义了三个指令:
       page指令
       Include指令
       taglib指令

9.1 JSP指令的基本语法格式:
  <%@ 指令 属性名="值" %>
举例:<%@ page contentType="text/html;charset=gb2312"%>

9.2 如果一个指令有多个属性,这多个属性可以写在一个指令中,也可以分开写。
例如:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.Date"%>
也可以写作:
<%@ page contentType="text/html;charset=gb2312" import="java.util.Date"%>

9.3 Page指令
<%@ page
[ language="java" ]
[ extends="package.class" ]
[ import="{package.class | package.*}, ..." ]
[ session="true | false" ]
[ buffer="none | 8kb | sizekb" ]
[ autoFlush="true | false" ]
[ isThreadSafe="true | false" ]
[ info="text" ]
[ errorPage="relative_url" ] 当出现错误时会跳到指定的errorPage
[ isErrorPage="true | false" ]
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]
[ pageEncoding="characterSet | ISO-8859-1" ]
[ isELIgnored="true | false" ]
%>

9.4 使用page指令解决JSP中文乱码

JSP程序存在有与Servlet程序完全相同的中文乱码问题
输出响应正文时出现的中文乱码问题
读取浏览器传递的参数信息时出现的中文乱码问题

JSP引擎将JSP页面翻译成Servlet源文件时也可能导致中文乱码问题
  JSP引擎将JSP源文件翻译成的Servlet源文件默认采用UTF-8编码,而JSP开发人员可以采用各种字符集编码来编写JSP源文件,因此,JSP引擎将JSP源文件翻译成Servlet
  源文件时,需要进行字符编码转换。
  如果JSP文件中没有说明它采用的字符集编码,JSP引擎将把它当作默认的ISO8859-1字符集编码处理。

如何解决JSP引擎翻译JSP页面时的中文乱码问题
  通过page指令的contentType属性说明JSP源文件的字符集编码
  page指令的pageEncoding属性说明JSP源文件的字符集编码q

10、include指令
  include指令用于引入其它JSP页面,如果使用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP翻译成一个servlet。所以include指令引入通常也称之为静态引入。

语法:
  <%@ include file="relativeURL"%>
  其中的file属性用于指定被引入文件的相对路径。
  file属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对于当前文件。

细节
1. 被引入的文件必须遵循JSP语法。
2. 被引入的文件可以使用任意的扩展名,即使其扩展名是html,JSP引擎也会按照处理jsp页面的方式处理它里面的内容,为了见明知意,JSP规范建议使用.jspf(JSP fragments)作为静态引入文件的扩展名。
3. 由于使用include指令将会涉及到2个JSP页面,并会把2个JSP翻译成一个servlet,所以这2个JSP页面的指令不能冲突(除了pageEncoding和导包除外)。

11、JSP运行原理和九大隐式对象

JSP运行原理

1. 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。 JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet),
   然后按照servlet的调用方式进行调用。
2. 由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程
序的执行效率不会受到影响。
3. JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9个与web开发相关的对象供_jspServlet使用。JSP技术的设计者为便于开发人员在编写JSP页面时获得
这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用。

九大隐式对象及其对应关系
request ---> HttpServletRequest
response ---> HttpServletResponse
session ---> HttpSession
application ---> servletContext
config ---> servletConfig
out JspWriter -----> PrintWriter
exception
page this
pageContext

12、out隐式对象
1、out隐式对象用于向客户端发送文本数据。
2、out对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的PrintWriter对象非常相似。
3、JSP页面中的out隐式对象的类型为JspWriter,JspWriter相当于一种带缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可以调整它
     的缓存大小,甚至关闭它的缓存。
4、只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter
     对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:
  a) 设置page指令的buffer属性关闭了out对象的缓存功能
  b) out对象的缓冲区已满
  c) 整个JSP页面结束

注意:同时使用out和response.getwriter()输出数据。会出现文本显示顺序的问题,只要是看是否刷新了缓冲区,然后进行分析

13、pageContext
  1、 pageContext对象(非常重要,进入其它对象的入口)

pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象,
   可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。

通过pageContext获得其他对象
getException() 返回exception隐式对象
getPage() 返回page隐式对象
getRequest() 返回request隐式对象
getResponse() 返回response隐式对象
getServletConfig() 返回config隐式对象
getServletContext() 返回application隐式对象
getSession() 返回session隐式对象
getOut() 返回out隐式对象

pageContext封装其它8大内置对象的意义

2. pageContext作为域对象
pageContext对象的方法
public void setAttribute(java.lang.String name,java.lang.Object value)
public java.lang.Object getAttribute(java.lang.String name)
public void removeAttribute(java.lang.String name)
pageContext对象中还封装了访问其它域的方法
public java.lang.Object getAttribute(java.lang.String name,int scope)
public void setAttribute(java.lang.String name, java.lang.Object value,int scope)
public void removeAttribute(java.lang.String name,int scope)
代表各个域的常量
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE

  findAttribute方法 (*重点,查找各个域中的属性)

转载于:https://www.cnblogs.com/xushuai123/archive/2013/03/24/2979762.html

JSP -- JSP语法相关推荐

  1. JSP学习——语法(二)

    1:JSP运行原理和九大隐式对象: 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一 ...

  2. JSP、EL和JSTL-学习笔记01【JSP基础语法】

    Java后端 学习路线 笔记汇总表[黑马程序员] JSP.EL和JSTL-学习笔记01[JSP基础语法] JSP.EL和JSTL-学习笔记02[MVC] JSP.EL和JSTL-学习笔记03[EL介绍 ...

  3. jsp java语法_JSP基础语法

    Java JSP 的 JSP基础语法 在本章中,我们将了解和学习JSP语法.并了解JSP开发涉及的简单语法(即元素)的基本用法. 为了方便演示,使用Eclipse创建一个动态Web项目:jspsynt ...

  4. jsp java语法_javaweb-jsp语法

    jsp语法: jsp基本构成:指令标签.html标记语言.注释.嵌入java代码.jsp动作标签. 1.指令标签 语法: directive:指令名称 attribute:属性名称 value:属性值 ...

  5. JSP的HTML基础实验原理,实验四 JSP基础语法

    jsp的一些常用语法 实验四 JSP基本语法 一.实验目的 1. 熟练掌握JSP的声明.表达式.小脚本和注释的使用: 2. 理解JSP指令和动作的语法格式: 3. 理解JSP页面的生命周期. 4. 熟 ...

  6. 75 jsp基础语法汇总

    JSP语法 脚本程序 脚本程序可以包含任意量量的Java语句句.变量量.⽅方法或表达式,只要它们在脚本语⾔言 中是有效的. 脚本程序的语法格式: <% 代码⽚片段 %> 或者,您也可以编写 ...

  7. javajavascript:void(‘h2‘)WEB(jsp基本语法表单提交)

    一.jsp简介 1. 什么是jsp jsp全名为 Javh2a Server Pages         中文名叫 java服务器页面         它是在传统的网页HTML文件(*.html,*. ...

  8. JSP基本语法、3个编译指令、7个动作指令、9个内置对象

    一.jsp概述 JSP是java server page的缩写,其本质是一个简化的servlet,是一种动态网页技术标准.jsp页面是在HTML页面中嵌入java程序段,使用jsp开发的应用程序可以跨 ...

  9. 【JavaLearn】#(23)JSP相关语法、HTTP协议、Servlet介绍、Servlet生命周期、请求和响应、相对路径、转发和重定向

    1. JSP简单内容 1.1 JavaEE JavaEE 包含JSP JavaEE是一个开发分布式企业级应用的规范和标准.JavaEE包含之前学过的所有内容(JavaSE) 真正开发中,很少使用Jav ...

  10. JSP基础语法-动作(Action)

    JSP基础语法 3.6.动作(Action)       动作的语法格式:    <jsp:动作名称  属性名=属性值.... ></jsp:动作名称> 3.6.1.forwa ...

最新文章

  1. eShopOnContainers 知多少[8]:Ordering microservice
  2. 翡润年华-毛货展示003
  3. 嵌入式和机械哪个好?机械转嵌入式好转吗?
  4. ZooKeeper场景实践:(6)集群监控和Master选举
  5. 整型变量(int)与字节数组(byte[])的相互转换
  6. cmd输入pip报错_pyhon3下pip安装使用教程(win10)
  7. Could not clean server of obsolete files
  8. 你身边有没有“万事不求人”的人?他们后来怎么样了?
  9. python在工作中怎么用_简洁优雅的Python教你如何在工作中“偷懒”
  10. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(2月27日-3月4日)
  11. Ajax 1.0 中使用web控件调用后台方法的用法.
  12. 高性能mysql sakila_《高性能MySQL》读书笔记二
  13. 基于Redis的BloomFilter算法去重 - Pickle - 博客园
  14. Java实现堆排序和图解
  15. java presentation
  16. Linux实战技巧--文件系统操作(四)--文本内容查看(cat/head/tail)
  17. 张量分解-Tucker分解
  18. 【】02-07主定理
  19. 不完美才美—少有人知道的幸福之路
  20. 转:成功学专家卡耐基所言

热门文章

  1. 行人跟踪python_使用Python为初学者构建AI汽车和行人跟踪
  2. PHP框架和springboot区别,Spring和SpringBoot的区别
  3. Resize源码详解(参考Opencv4.1)
  4. matlab由x得到y,matlab 已知x、y值以及函数,求未知参数
  5. CentOS生成自签名证书配置Apache https
  6. 了解DSP的体系结构
  7. HDU Problem - 6383 p1m2(二分)
  8. c 语言 可变参数前要加形参,C/C++中可变参数的用法详细解析
  9. kafka 运行一段时间报错Too many open files
  10. 进程、线程和协程的区别和联系(TX)