JSP概述

JSP 概述

JSP(Java Server Pages)全称为Java服务器页面,与Servlet技术同为SUN公司制定的用于开发动态Web资源的标准技术。实质上,JSP是Servlet的一种表现形式,通过将Java代码嵌入HTML中实现动态内容的生成。

JSP = HTML + Java
  • HTML:负责静态内容展示。
  • Servlet:适用于编写服务器端Java逻辑代码,若直接编写网页内容较为繁琐。
  • JSP:侧重于输出动态内容,不适宜编写复杂的Java业务逻辑。

JSP 原理

JSP页面在被Web容器解析后,会被转化为一个Servlet源码,随后编译为Servlet类并运行。用户请求到达时,该Servlet负责处理请求并生成动态内容响应。

image.png
image.png
image.png

JSP 最佳实践

  • Servlet:充当控制器角色,主要负责编写Java代码逻辑,例如获取表单数据、处理业务逻辑及页面转向。
  • JSP:作为视图层,主要用于显示经过处理后的数据。

JSP 基本语法

1. JSP 模板元素

JSP模板元素包括HTML标签和纯文本等静态内容。

2. JSP 脚本

2.1 小脚本

<% java代码 %>

2.2 表达式

<%= 2+3 %>

等同于 out.println(2+3);

2.3 声明

<%! %> 

用于在JSP转换成的Servlet类中定义全局成员变量或静态块。

3. JSP 注释

  • JSP注释<%-- 被注释的内容 --%>,安全且节省流量。
  • HTML注释<!-- 网页注释 -->,不安全且消耗流量。

4. JSP 指令 & 动作

  • 3种指令:包括page指令、include指令和taglib指令。
  • 6种动作:如jsp:include用于动态包含,jsp:forward用于请求转发等。

5. JSP 的3个指令详解

JSP指令用于指导JSP引擎处理页面的特定行为,不直接生成输出内容。

  • page指令:定义JSP页面的多种属性,如import导入包、session自动创建session对象、buffer设置输出缓存大小、errorPage设置错误页面跳转、isErrorPage标识是否为错误处理页面、contentType设置响应内容类型、pageEncoding指定JSP页面编码,以及isELIgnored决定是否忽略EL表达式等。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  • include指令:静态包含其他资源,静态包含 <%@ include file="..."%>;动态包含使用 <jsp:include page="..."/>

6. JSP 的9个内置对象

JSP提供了9个内置对象,可在脚本元素中直接使用,如requestresponsesessionapplicationexceptionpageconfigout以及pageContext

对象名 类型 说明
request javax.servlet.http.HttpServletRequest
response javax.servlet.http.HttpServletResponse
session javax.servlet.http.HttpSession 由session="true"开关
application javax.servlet.ServletContext
exception java.lang.Throwable 由isErrorPage="false"开关
page java.lang.Object当前对象this 当前servlet实例
config javax.servlet.ServletConfig
out javax.servlet.jsp.JspWriter 字符输出流,相当于 printWriter对象
pageContext javax.servlet.jsp.PageContext

pageContext(重要)

  • 作为域对象:能够操作其他三个域对象(request、session、application)的数据,并提供了设置、获取和移除属性的方法,以及按作用域查找属性的findAttribute方法。

  • 创建其他隐式对象:在非JSP环境(如自定义标签中)可通过PageContext对象获取其他JSP隐式对象。

  • 简易方法:提供了一些便捷方法,如pageContext.forward("2.jsp")pageContext.include("2.jsp")分别用于转发和包含页面。

四大域对象的实际应用

  • PageContext:仅在当前页面有效,开发中较少使用。
  • ServletRequest:在一次请求(包括转发)范围内有效,广泛用于处理请求相关的数据。
  • HttpSession:在一次会话内有效,常用于存储用户的登录状态、购物车信息等。
  • ServletContext:在整个Web应用范围内有效,由于其作用范围较大,因此推荐谨慎使用,通常用于存储全局共享的配置信息。
posted @   汉源魂  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示