JSP简介

一、JSP概述:

1、由来:

    • JSP(Java Server Page):为了简化Servlet的工作,新推出的一种新技术,也可以说是Servlet的替代品。1997年由SUN公司推出了Servlet API 以及第一款Java Web服务器。

2、JSP技术:

    • 1999年Sun公司推出了JSP1.0,作为对Servlet的补充。JSP包含很多技术,如Java Bean,自定义标签(Custom Tags),EL表达式(Expression Language),JSTL标准标签库(Java Standard Tag Library)等。

3、JSP工作原理:

    • JSP是一种Servlet,但是与HttpServlet的工作方式不太一样,
      • HttpServlet是先由源代码编译为class文件后部署到服务器的,是先编译后部署。
      • JSP则是先部署源代码后编译为class文件的,是先部署后编译。

二、JSP语法:

  • JSP是HTML代码与Java代码的混合体,其中HTML部分遵循HTML语法,Java部分遵循Java语法

1、JSP脚本:

    • 在JSP页面中写Java代码称为JSP脚本。JSP脚本必须使用 "<%    %>"括起来,Java代码写在其中,并且必须遵循Java语法

2、JSP输出:

    • JSP中使用 “ <%=    %> ”输出各种类型数据,包括int、double、boolean、String、Object

3、JSP指令:JSP指令用来声明JSP页面的一些属性等,例如编码方式、文档类型。JSP指令使用符号“  <%@       %>  ”

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    • page指令:
      • page指令是最常用的指令,用来声明JSP页面的属性等。JSP指令的多个属性可以写在一个page指令里,也可以写在多个指令里。
      • 注意:无论在哪个page指令里的属性,任何page允许的属性都只能出现一次,否则会出现编译错误。import可以出现多次
    • include指令:
      • include指令比较简单,只有一种形式:

        1. <%@ include file="relativeURL" %>
        2. <!-- relativeURL 为本应用程序内另一个JSP文件或者HTML文件的路径 -->
      • JSP中还提供了另一种包含文件的行为:

        1. <jsp:include page="relativeURL" />
        2. <!-- 该命令与include指令的使用方法基本一致 -->
    • taglib指令:
      • JSP支持标签技术,使用标签功能能够实现代码重用,很少量的代码就可以实现很复杂的显示效果。
      • 要使用标签功能必须先声明标签库以及标签前缀。
      • taglib指令有两个属性:uri为类库的地址,prefix为标签的前缀。

        1. <!-- 这里使用的是JSTL 需要两个jar包的支持 -->
        2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

4、JSP行为:

  • JSP行为(JSP  Action)是一组JSP内置的标签。JSP行为是对常用的JSP功能的抽象与封装,包括两种:自定义JSP行为和标准JSP行为。
    • <jsp:include /> 行为:用于运行时包含某个文件。若被包含的文件为JSP程序,则先会执行JSP程序,然后将执行的结果保健进来。
    • 语法:<jsp:include page="relativeURL" flush="true">
      • 属性page是必需的,表示被包含的文件相对路径
      • 属性flush可选,,取值有true或false,默认为false,设置读入被保存文件前是否清空缓存。
    • <jsp:forward />行为:它是对forward()方法的一个封装
      • Servlet中使用以下方式跳转(转发)到另外一个Servlet或者另一个文件

        1. //getRequestDispatcher(String str)方法中传入的是目标地址
        2. request.getRequestDispatcher("index.jsp").forward(request, response);
      • JSP中使用如下方式:

        1. <jsp:forward page="index.jsp"/>

三、JSP隐藏对象

  • JSP中内置了 9 个隐藏对象:out、request、response、config、session、application、page、pageContext、exception。

1、out输出流对象:

    • 隐藏对象out是  javax.servlet.jsp.JspWriter类的实例。服务器向客户端输出的字符类内容可以通过out对象输出。
    • out对象的常用方法:
      • void  append(CharSequence  cs):向out缓存中扩展字符类输出。当缓存满或者执行out.flush()操作时,这些内容会输出到客户端浏览器
      • void  clear():清空要输出的内容
      • void  flush():将缓存内容flush到客户端浏览器
      • void  println(String  str):向客户端输出内容
      • boolean  isAutoFlush():返回缓存满时 是否自动flush,如果为false,缓存满时会抛出异常
      • int  getBufferSize():返回缓存大小,单位/KB
      • int  getRemaining():返回缓存剩余大小,单位/KB

2、request请求对象:

    • 隐藏对象 request是 javax.servlet.ServletRequest 类的实例,代表着客户端的请求
    • request 包含客户端信息以及请求信息,如:请求哪个文件,附带的地址栏参数等
    • 客户端每次请求都会产生一个request实例
    • request对象的常用方法:
      • void  setAttribute(String  name,Object  value):在request中保存一个对象。本页面或者forward之后的页面中可以通过getAttribute(String  name)方法获取该对象
      • Object  getAttribute(String  name):从request中获取name对应的对象
      • String  getMethod():返回提交方式,一般为GET或者POST
      • String  getParameter(String  key):返回提交的参数
      • String[]  getParameterValues(String  key):返回提交的多个同名参数值,以数组的形式返回
      • Enumeration  getParameterNames():返回所提交的参数名称
      • Cookie[]   getCookies():返回所有的Cookie
      • String  getContextPath():返回应用程序的路径
      • String  getRequestURI():返回请求的URI路径
      • void  setCharacterEncoding(String  encoding):设置request的编码方式
      • String  getHeader(String  name):获取request头信息
      • Enumeration  getHeaderNames():返回所有的request头名称
      • Dispatcher  getRequestDispatcher():返回 Dispatcher对象。 Dispatcher  对象可以执行forward操作
      • HttpSession  getSession():返回HttpSession对象

3、response响应对象:

    • 隐藏对象response是  javax.servlet.ServletResponse 类的实例,代表着客户端的响应
    • 服务器的任何输出都通过response对象发送对客户端浏览器,每次服务器都会响应一个response实例
    • response对象的常用方法:
      • void  clear():清空暂存在缓冲区的输出
      • void  addCookie(Cookie  cookie):设置Cookie
      • OutputStream  getOutputStream():返回服务器输出流,可以通过该输出流输出二进制信息
      • void  sendRedirect(String  url):使本页面 redirect 到另一个页面
      • void  setContextType(String  contextType):设置文档类型,HTML的文档类型为 text/html
      • PrintWriter  getOut():返回out对象
      • void  setHeader(String  name, String  value):设置 response 头信息
      • void  setStatus(int  status):设置 response 状态码

4、config配置对象:

    • 隐藏对象 config 是  javax.servlet.ServletConfig 类的实例,ServletConfig 封装了配置在 web.xml 中初始化JSP参数
    • JSP中通过 config 获取这些参数,每个JSP文件共有一个config对象
    • config对象的常用方法:
      • String  getInitParameter(String  name):返回配置在web.xml中的初始化参数
      • Enumeration  getInitParameterNames():返回所有的初始化参数名称
      • ServletContext  getServletContext():返回ServletContext 对象
      • String  getServletName():返回Servlet的名称

5、session会话对象:

    • 隐藏对象session是 javax.servlet.http.HttpSession 类的实例
    • session 与 cookie 是记录客户访问信息的两种机制
      • session 用于在服务器端保存用户信息
      • cookie用于在客户端保存用户信息
    • Servlet中需要通过 request.getSession() 来获取 session 对象,而JSP中可以直接使用,如果JSP中配置了 <%@ page  session="false" %>,则隐藏对象session不可用
    • 每一个用户对应一个session对象
    • session对象的常用方法:
      • String  getId():返回session的ID
      • Object  getAttribute(String  name):返回session中属性名为name的对象
      • Enumeration   getAttributeNames():返回 session 的所有属性名
      • long   getCreationTime():返回该session创建的时间
      • long  getLastAccessedTime():返回该session最后一次访问的时间
      • int  getMaxInactiveInterval():返回session的最大允许的间隔时间,单位:秒
      • void   setAttribute(String  name, Object  value):设置 session
      • void   setMaxInactiveInterval(long  second):设置对打允许的时间间隔

6、application应用程序对象:

    • 隐藏对象 application 是 javax.servlet.ServletContext 类的对象。 application封装了JSP所在的 Web 应用程序的信息,eg: web.xml 中配置的全局的初始化信息
    • Servlet中 application 对象需要通过ServletConfig.getServletContext() 来获取,整个 Web 应用程序对应一个 application对象
    • application 对象的常用方法:
      • Object  getAttribute(String   name): 返回application中属性名为 name的对象
      • Enumeration  getAttributeNames(): 返回application中的所有属性名
      • void  setAttribute(String  name, Object  value): 设置 application 属性
      • void  removeAttribute(String  name): 移除 application 属性
      • String  getInitParameter(String  name): 返回全局初始化参数
      • Enumeration  getInitParameterNmaes(): 返回所有的全局初始化参数
      • String  getMimeType(String  filename): 返回文件的文档类型。eg: getMimeType("index.html") 将返回 "text/html"
      • String  getRealPath(String  relativePath): 返回 web 应用程序内相对网址对应的绝对路径

7、page 页面对象:

    • 隐藏对象 page 为 javax.servlet.jsp.HttpJspPage 类的实例。
    • page 对象代表当前JSP页面,是当前JSP编译后的Servlet类的对象
    • page 相当于普通 Java类中的关键字 this

8、pageContext 页面上下文对象:

    • 隐藏对象 pageContext 为 javax.servlet.jsp.PageContext 类的实例
    • pageContext 对象代表当前JSP页面编译后的内容,通过pageContext能获取到JSP中的资源
    • pageContext对象的常用方法:
      • Object  findAttribute(String  name): 在JSP页面中查找变量
      • void  forward(String  url): forward 到另一个页面
      • Object  getAttribute(String  name): 返回属性
      • Object  getAttribute(String  name, int  scope): 返回指定范围内的属性,范围包括(PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE、APPLICATION_SCOPE)
      • JspWriter  getOut(): 返回 out 对象
      • Object  getPage(): 返回 page 对象
      • ServletRequest  getRequest(): 返回 request 对象
      • ServletResponse   getResponse(): 返回response 对象
      • HttpSession  getSession(): 返回 session 对象

9、exception 异常对象:

    • 隐藏对象 exception 为 java.lang.Exception 类的对象
    • exception 封装了JSP中抛出的异常信息,要想使用 exception 隐藏对象,需要设置 <%@  page  isErrorPage="true"%>
    • 隐藏对象 exception 通常被用来处理错误页面

四、EL表达式

  • JSP中可以使用 EL(Expression Language)表达式,EL表达式是使用 “${ }”括起来的脚本,用来更方便的读取对象。
  • EL表达式写在JSP的HTML代码中,而不能写在 “<%    %>” 括起来的脚本中

1、EL表达式运算:

    • EL表达式支持简单的运算,包括:加(+)、减(-)、乘(*)、除(/ 或者 div)、取余(% 或者 mod)、三目运算符(exp ? val1 : val2)等
      1. 10 + 20 = ${10 + 20} <br>
      2. 10 - 20 = ${10 - 20} <br>
      3. 10 * 20 = ${10 * 20} <br>
      4. 10 / 20 = ${10 / 20} <br>
      5. 10 div 20 = ${10 div 20} <br>
      6. 10 % 20 = ${10 % 20} <br>
      7. 10 mod 20 = ${10 mod 20} <br>
      8. 10 与 20 谁大:${10 > 20 ? 10 : 20} <br>
      9. 10 与 20 谁小:${10 <= 20 ? 10 : 20} <br>

    • EL表达式也支持简单的比较运算,包括:大于(> 或者 gt)、小于(< 或者 lt)、等于(==  或者 eq)、不等于(!= 或者 ne)、大于等于(>= 或者 ge)、小于等于(<= 或者 le)等
      1. 10 大于 20 ?:${10 > 20} <br>
      2. 10 大于 20 ?:${10 gt 20} <br>
      3. 10 小于 20 ?:${10 < 20} <br>
      4. 10 小于 20 ?:${10 lt 20} <br>
      5. 10 等于 20 ?:${10 == 20} <br>
      6. 10 等于 20 ?:${10 eq 20} <br>
      7. 10 不等于 20 ?:${10 != 20} <br>
      8. 10 不等于 20 ?:${10 ne 20} <br>
      9. 10 大于等于 20 ?:${10 >= 20} <br>
      10. 10 大于等于 20 ?:${10 ge 20} <br>
      11. 10 小于等于 20 ?:${10 <= 20} <br>
      12. 10 小于等于 20 ?:${10 le 20} <br>

    • EL表达式的逻辑运算符,包括:与(&&  或者  and)、或(||  或者  or)、非(!  或者  not)等
      1. 10 大于 20 并且 10 小于 20 ?:${10 > 20 && 10 < 20} <br>
      2. 10 大于 20 并且 10 小于 20 ?:${10 > 20 and 10 < 20} <br>
      3. 10 大于 20 或者 10 小于 20 ?:${10 > 20 || 10 < 20} <br>
      4. 10 大于 20 或者 10 小于 20 ?:${10 > 20 or 10 < 20} <br>
      5. 非 10 大于 20 ?:${! (10 > 20)} <br>
      6. 非 10 大于 20 ?:${not (10 > 20)} <br>

附件列表

时间: 2024-08-08 14:45:09

JSP简介的相关文章

JSP简明教程(一):JSP简介

JSP的全称是Java Server Pages.它的本质其实就是Servlet,在运行的过程中会编译成Servlet代码.在JSP中可以访问数据库,记录用户的选择信息,访问JavaBean组件. JSP与CGI的差别.一.性能更加优越,JSP可以直接在HTML网页中嵌入动态的元素,而不需要单独引用CGI文件.二.JSP是已经编译好的,持续运行的程序,一次载入可以服务多次请求,而CGI每次都要载入程序再执行,执行完成之后程序就退出了.三.Java是拥有强大的企业级Java API,包括JDBC,

【转】JavaWeb学习----JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)

?[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4046862.html [前言] JSP本身是JavaWeb中的知识,但是在学习Android网络时,必然要涉及到与服务器之间的交互,所以学一下JSP以及其他JavaWeb的内容还是很有必要的,至少能明白程序在访问服务器时,整个过程的原理. 其实,在学习Android之前,Java和JavaWeb

JSP简介与入门

一.JSP简介 JSP:Java Server Pages 在传统的HTML文件(*.html)中加入java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页. 二.Hello JSP入门 1.在eclipse中配置Tomcat服务器 2.新建工程 3.在WebContent中新建jsp文件 三.JSP运行原理

JSP简介以及常见动态网站开发技术(Asp.net、Php、Jsp)

jsp简介:

雷林鹏分享:JSP 简介

JSP 简介 什么是Java Server Pages? JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%>结束. JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分.网页开发者们通过结合HTML代码.XHTML代码.XML元素以及嵌入JSP操作和命令来编写JSP. JSP通过网页表单获取用户输入数据.访问数据库及其他数据源,然后动态地创建网页. JSP标签有多种

JSP学习笔记(1)-JSP简介

1.什么是JSP? JSP是Java server page的缩写,有sun公司倡导,许多公司参与,于1999年推出的一种web服务设计标准.JSP基于Java Servlet以及整个java体系的Web开发技术.Java servlet 就是编写在服务器端创建对象的java类,习惯上称为servlet类,servlet类的对象习惯上称为一个servlet.那么二者的关系是什么呢?Java Servlet是java语言的一部分,而jsp是基于java servlet的,jsp具备了几乎所有jav

第一讲 JSP简介

JSP:动态技术标准.在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标签,就构成了JSP网页.java程序片段可以操纵数据库.重新定向网页以及发送E-mail等,实现建立动态网站所需要的功能.服务器端语言:所有程序操作都在服务器端执行,执行的结果以html网页的形式展示给用户. JSP全名为java server page,他实现了Html语法中的java扩张(以 <% %>形式).Web服务器在遇到访问JSP网页的请求时,首先执行其中

第四章 深入JSP技术

JSP简介 JSP工作原理 JSP是一种servlet,但先部署后编译. JSP生命周期 运行时只会有一个实例,同servlet. JSP语法 JSP元素和模板数据 模板数据就是JSP中的HTML代码,元素就是Java部分以及JSP指令(Directive)与JSP标签(Tag). JSP脚本 JSP脚本必须用<% %>括起来. JSP输出 <%= %>可输出各种类型数据,注意变量后没有分号":". JSP注释 除了java注释外,还可用<%-- --%&

jsp笔记总结

第一章 JavaWeb简介 1.什么是Web应用程序 什么是Web应用程序是一种通过Web访问的应用程序.Web应用程序一个最大优点就是用户很容易访问.用户只需要有浏览器即可,不需要再安装其他软件.Web开发是目前软件开发领域的三大方向之一.(桌面应用程序,Web应用程序,嵌入式应用程序) 2.静态页面与动态页面 静态网页 表现形式:网页内容固定,不会更新. 所需技术:HTML,CSS 动态网页 表现形式:网页中的内容通过程序动态的显示,自动更新,能与用户进行交互(比如登录输入正确用户名和密码时