Java Web -> JSP

本文深入讲解JSP技术,包括其页面组成部分如注释、声明、脚本等,运行机制及如何转化为Servlet,内置对象如out、request、response的作用,以及指令与动作元素的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 简介

  • JSP -> JavaServerPages,是一种动态网页技术标准。
  • 将HTML网页和Java代码融合在一起,是服务器页面。

2. 页面组成部分

2.1 注释
  • HTML注释
    • 客户端可见
    • 语法:<!-- -->
  • JSP注释
    • 客户端不可见
    • 语法:<%-- --%>
  • JSP脚本注释
    • 客户端不可见
    • 单行注释://
    • 多行注释:/**/
2.2 声明
  • <%! %>
  • 用于放置JSP中定义的方法和变量
2.3 脚本
  • <%%>
  • 用于放置JSP中的Java代码
2.4 指令
  • page指令
    • 位于JSP页面顶端
    • 同一个JSP页面可有多个page指令
  • include指令
    • 将外部文件嵌入JSP页面
  • taglib指令
    • 使用标签库定义新的标签
2.5 表达式
  • <%= %>
  • 注意:表达式不以 “ ; ” 结尾
2.6 静态内容

3. 运行机制

  1. 编写好一个JSP页面
  2. 判断页面是否是第一次加载 -> 3不是 -> 5
  3. JSP引擎在运行过程中对JSP页面进行分析,将JSP转化为Servlet。
  4. 将Servlet实时编译为.class文件,执行jspInit()
  5. 解析执行字节码文件,jspService()
    • 若JSP页面没有改变,则直接使用已生成的;若改变,重新编译。
    • JSP引擎会为每个请求创建一个线程
    • jspService()用来处理客户端的请求

4. 内置对象

4.1 out
  • 是JspWriter类的实例
  • 主要用于客户端的输出
  • 缓冲区:内存中用于存放临时数据的一块区域
4.2 request
  • 是HttpServletRequest类的实例
  • 用于封装客户端的请求信息,通过对象了解请求,做出响应
  • 作用域:当前请求
  • request的getParameters()和getParametersValues()
    • getParameters()返回值
    • getParametersValues()返回值的地址
4.3 response
  • 是HttpServletResponse类的实例
  • 包含响应客户请求的所有信息
  • 作用域:当前页面
  • response.getWriter()
    • 获得一个可以向客户端输出的对象
    • 该对象总是优先于out对象输出内容
      • out是内置对象,在Servlet输出完后输出
      • 该对象响应后就输出
4.4 session
  • 是HttpSession类的实例
  • session
    • 客户端与服务端的会话
    • 实际上是一个时间概念(浏览某个网站所用的时间)
    • 服务器的内存中存放着不同用户的session
  • session对象
    • 生命周期:从打开浏览器连接上服务器到关闭浏览器离开服务器
    • 当第一个JSP页面加载时session自动创建,进行会话管理
    • 当用户在多个页面上跳转时,服务器通过该对象判断是否是同一用户
    • :新建会话后,旧的SessionId仍存在,只是没有客户端再去使用它
  • session的销毁
    • session.invalidate()

    • session超时

      • session.setMaxInactiveInterval(时间) ,单位:s
      • 在web.xml中配置
      • <session-config> 
        <session-timeout>  
        		10
        </session-timeout> 
        </session-config>
        
    • 服务器重新启动

4.5 application
  • ServletContext类的实例
  • 用于存放全局变量
  • 生命周期:服务器的启动到关闭
  • application属性的改变会影响到其他用户对该属性的访问
4.6 page
  • 是java.lang.Object类的实例
  • 指向当前JSP页面,类似this的用法
4.7 pageContext
  • 可访问JSP页面中的所有对象
  • 可获取当前JSP页面中session、application的属性值
4.8 exception
  • 是java.lang.Throwable类的实例
  • 页面发生异常时,生成该对象
  • 若要使用该对象,需将isErrorPage设置为true,否则不能编译
4.9 config
转发与重定向
  • 转发
    • 服务器行为
    • 一次请求,转发
    • 记录当前请求对象
    • 地址栏中的url地址不变
    • request.getRequestDispatcher("页面").forward(request,response);
  • 重定向
    • 客户端行为
    • 两次请求,第一次请求直接转发
    • 不记录第一次清求对象
    • 地址栏中的url地址改变
    • response.sendRedirect("页面")

5. 指令与动作元素

5.1 include
  • 指令语法<%@ include file="URL"%>
  • 动作语法<jsp:include page="URL" flush="true|false"/>,flush表示是否要从缓冲区读取页面
5.2 forward
  • 动作语法<jsp:forward page="URL"/>
  • 相当于转发
5.3 param
  • 动作语法<jsp:param name="参数名" value="参数值"/>
  • 向动态文件中传递参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值