jsp笔记

2020/02/01 FrontEnd 共 2616 字,约 8 分钟

jsp笔记

JSP(Java Server Page)是一种动态网页技术标准,在HTML中嵌入Java程序片段(Scriptlet)和JSP标签(tag)所构成。

执行逻辑

服务端收到客户端的请求
if(请求HTML/XML页面){
    直接将页面相应代码发给客户端
}
else if(请求JSP页面){
    if(页面第一次被请求 || 页面被修改过){
        1.JSP文件(.jsp)转换成servlet文件(.java)
        2.编译生成字节码文件(.class)
        3.执行字节码文件,并将执行结果以HTML的形式返回给客户端。
    }
    else{
        //页面之前已执行过且未被修改
        直接执行已生成的字节码文件(.class),并将执行结果以HTML的形式返回给客户端。
    }
}

JSP基本元素

  • 声明:<%! int a; %>,声明页面全局变量。
  • 表达式:<%=...%>,将结果转成字符串形式输出到页面中
  • 代码片段(Scriptlet):<% ... %>,java代码片段,多行没关系的。注意System.out.Print输出是控制台和html展示无关。
  • JSP指令(静态):<%@ xxx %>格式 <%@ page 属性1="xx" 属性2="xx"%>,设置页面属性 <%@ include file="文件名"%>,将文件插入到当前页面中(静态插入)
  • JSP动作(动态):<jsp:xxx />格式 <jsp:include page="文件名"/>,将文件的执行结果插入到当前页面(动态插入) <jsp:forward page="文件名"/>,停止当前页面,转向指定HTML/JSP文件的页面(地址栏不变) <jsp:param name="变量名" value="变量值"/>,传递参数,作为include/forward的子标签使用,在其他页面中通过request.getParameter(“变量名”)接收参数。

JSP内置对象

JSP内置对象无需创建就可以直接使用,具体有以下几种:

  • 输出输入对象:request对象、response对象、out对象
  • 通信控制对象:pageContext对象、session对象、application对象
  • Servlet对象:page对象、config对象
  • 错误处理对象:exception对象

JSP内置对象作用域

作用域说明
page只能在当前页面中访问
request整个请求周期,从发起请求到返回响应。(期间可能forward跳转了多个页面)
session整个当前会话,从打开浏览器开始,到关闭浏览器都算一个session
application整个应用期,从服务器启动应用,到应用结束(对象可被所有用户共享)

request对象

  • 当客户端通过HTTP请求JSP页面时,服务器会自动创建request对象,并将请求信息封装进去。处理完请求后,request对象即自动销毁。
  • 常用方法:(注意区分参数和属性) String getParameter(String name):获取客户端传送给服务器的参数值(如form表单中的内容) void setAttribute(String name,Object obj):服务端自己设置request属性值(便于在页面间传数据) Object getAttribute(String name):获取相应属性值(返回Obj类型,要进行强转)
  • 传参数(parameter)的方式:客户端通过form表单(可设置get/post形式)、服务端通过include/forward动作(get形式)。但一般服务端页面间通过属性(Attribute)传信息较常用。
  • request还可获得客户端的IP地址、协议等信息。

response对象

  • 服务器向客户端发数据时,自动创建response对象。response只负责设置响应的头部信息,响应体信息由其他对象设置。
  • 重定向网页:response.sendRedirect("xxx"),与forward的区别:forward仅能站内跳转,重定向可跳转到任何网站;forward带request信息跳转,重定向不带request跳转。
  • 页面定时刷新/跳转: response.setHeader("refresh","5"),每隔5s页面自动刷新一次。 response.setHeader("refresh","5;url=www.baidu,com"),5s后自动跳转到百度页面。

session对象

  • 会话(session)的含义:从用户第一次进入网站,到浏览器关闭期间,称为一次会话。用户第一次进入网站,服务器会生成session id标识不同用户,并将相关信息存储在浏览器,因此第二次访问(不关浏览器)还可识别出是同一用户。
  • session对象可用来传递信息、获取会话属性。

application对象

每个Web程序一个application,只要不关闭服务器,application对象即一直存在。用于保存应用程序中的公有数据(所有的用户共享)。可用来记录访问网站的总人数。

JSTL

jsp标准标签库(Jsp Standarded Tap Library),使用标签取代jsp页面上的代码

常用的就是下面两个标签

<c:if>和<c:forEach>

用之前需要先引入。

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

EL表达式

EL 语法和使用

EL(Expression Language) 是为了使 JSP 写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让 Jsp 的代码更 加简化。

语法:${expression}

备注:

  1. el 表达式一般操作的是域对象中的数据,操作不了局部变量。
  2. JSP中的四个域对象:
    • pageContext(本页面)
    • request(一次请求)
    • session(一次会话)
    • application(整个应用程序)
  3. EL 默认的查找方式为从小到大查找,找到即可。当域对象全找完了还未找到则返回空字符串 ””。

还支持List遍历等。以下就是遍历list这个List变量。

${empty list}

参考

  • https://renli1024.github.io/2018/02/13/JSP/

Search

    Table of Contents