JSP详解

48 篇文章 0 订阅

JSP详解

一、定义

JSP(JavaServer Pages)是由Sun Microsystems(现为Oracle公司)开发的用于创建动态网页的技术。

JSP是一种基于Java的服务器端技术,用于生成动态网页内容。它的工作机制是通过嵌入在HTML中的Java代码,在服务器端生成HTML页面,最终将生成的页面发送给客户端浏览器 。

理解:JSP=HTML+Java

JSP的工作原理

  • 客户端请求:用户在浏览器中请求一个JSP页面。
  • JSP引擎处理请求:服务器接收到请求后,JSP引擎会将JSP文件编译成Servlet(Java类),并执行该Servlet。
  • 生成响应:Servlet执行过程中,会生成动态内容,并生成最终的HTML响应。
  • 发送响应:服务器将生成的HTML页面发送回客户端浏览器。

二、JSP的基本结构

2.1 静态内容

JSP页面中的静态内容(如HTML、CSS、JavaScript等)直接传递给客户端,不需要任何处理。

2.2 动态内容

动态内容通过特殊的JSP标签或脚本来生成。常见的有:

  • 表达式<%= expression %> 用于输出一个表达式的值到客户端。
  • 脚本片段<% code %> 包含任意的Java代码。
  • 声明<%! code %> 用于定义方法和变量。

2.3 JSP指令

JSP指令用于控制JSP页面的整体行为,如引入外部文件、设置页面编码等。常见的指令有:

  • 页面指令<%@ page attribute="value" %>,例如设置页面的内容类型:<%@ page contentType="text/html; charset=UTF-8" %>
  • 引入指令<%@ include file="relativeURL" %>,用于包含其他文件的内容。

三、JSP元素

3.1 JSP注释

JSP注释不会出现在生成的HTML中。格式为:<%-- comment --%>

3.2 JSP动作

JSP动作通过XML语法的标签来调用内置的JSP对象和功能,如:

  • <jsp:include>:动态包含一个文件的内容。
  • <jsp:forward>:将请求转发到另一个资源。
  • <jsp:param>:为JSP动作传递参数。

四、JSP九大内置对象

JSP提供了9个内置对象,供开发者直接使用:

  • request:表示客户端的请求,封装了HTTP请求的所有信息。
  • response:表示服务器的响应,提供向客户端发送数据的方法。
  • session:表示会话,提供了与特定用户会话相关的信息。
  • application:表示ServletContext,可以在应用范围内共享数据。
  • out:用于输出响应数据到客户端。
  • config:表示Servlet的配置对象。
  • pageContext:提供对JSP页面的各种范围和属性的访问。(可以获得其他八大内置对象)
  • page:表示当前JSP页面的实例(即 this)。
  • exception:用于处理页面错误的对象。

五、 JSP的生命周期

JSP页面的生命周期包括以下几个阶段:

  1. 编译:JSP文件被转换为Servlet。
  2. 初始化:Servlet初始化,包括调用jspInit()方法。
  3. 请求处理:处理客户端请求,调用_jspService()方法。
  4. 销毁:当JSP页面被卸载时,调用jspDestroy()方法。

示例

<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<html>
<head>
    <title>Hello JSP</title>
</head>
<body>
    <h1>Hello, JSP!</h1>
    <% 
        String name = "World";
        out.println("Hello, " + name + "!");
    %>
</body>
</html>

六、 JSP的四大域

  • request;

请求域存储的数据只能在本次请求中有效

  • session;

    会话域存储的数据只能在对应的客户端中有效

  • application;

    全局域存储的数据在整个项目中都有效

  • pageContext;

    页面域存储的数据只能在当前页面有效

七、EL表达式

EL获取四大域里的数据

优先级别:页面域>请求域>会话域>全局域

el底层理解:${msg}

<%
Object msg = pageContext.getAttribute(“msg”);
if(msg != null){
out.print(msg);
return;
}

​ msg = request.getAttribute(“msg”);
​ if(msg != null){
​ out.print(msg);
​ return;
​ }

​ msg = session.getAttribute(“msg”);
​ if(msg != null){
​ out.print(msg);
​ return;
​ }

​ msg = application.getAttribute(“msg”);
​ if(msg != null){
​ out.print(msg);
​ return;
​ }
%>

JSTL:优化JSP页面的逻辑代码(分支、循环)

ation.getAttribute(“msg”);

​ if(msg != null){
​ out.print(msg);
​ return;
​ }
%>

JSTL:优化JSP页面的逻辑代码(分支、循环)

总结: JSP是一种强大的技术,允许开发者轻松地创建动态Web内容。它与Java语言紧密结合,提供了丰富的API和内置对象,适合开发复杂的Web应用程序。通过合理地分离显示逻辑和业务逻辑,JSP能帮助开发者保持代码的可维护性和可扩展性。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值