博客
关于我
html转jsp_JSP详解
阅读量:792 次
发布时间:2023-01-24

本文共 2715 字,大约阅读时间需要 9 分钟。

JSP技术详解

JSP(JavaServer Pages)全称Java Server Pages,是一种动态网页开发技术。它通过在HTML网页中插入Java代码来实现灵活的网页动态化。JSP文件通常与Servlet结合使用,其中JSP用于实现用户界面,负责展示动态内容,而Servlet负责处理业务逻辑和数据处理。

JSP的特点

  • 本质上还是Servlet:JSP本身是Servlet的一种实现方式,其核心思想与Servlet相同,都是将请求转换为Servlet并执行。
  • 跨平台,一次编写处处运行:JSP文件可以直接裸运行,而无需经过特定的编译步骤,虽然实际使用中通常会通过转换器将JSP文件转换为对应的Servlet文件,因为JSP转换到Servlet后仍然是纯Java代码,可直接运行。
  • 组件跨平台:JSP的标签组件可以经过转换后也能运行在任何支持Servlet的服务器上。
  • 健壮性和安全性:JSP具有较高的健壮性和安全性,企业级应用常用JSP来构建复杂的网页。
  • JSP的访问原理

    JSP的运行过程如下:

  • 浏览器向服务器发送HTTP请求(如访问某个.jsp文件)。
  • 服务器接收请求后将其交给JspServlet进行处理。
  • JspServlet通过jsp:servlet标签识别JSP文件并启动转换过程。
  • JSP文件被转换为对应的Servlet文件(.java),然后被Java虚拟机执行。
  • 执行完成后,Servlet将生成的HTML内容返回浏览器显示给用户。
  • 建议详细阅读JSP运行原理的专属文章,如《JSP运行原理》。

    Page指令

    Page指令用于在JSP转译过程中设置一些配置信息,常用来定义转译语言、字符集、异常页面等。常见的page指令包括:

    • @page language="java":定义使用的语言,默认为java。
    • @page import="...":导入需要的Java包。
    • @page pageEncoding="...":指定页面的编码格式。
    • @page contentType="...":指定响应内容类型。
    • @page session="...":控制Session的使用。
    • @page isErrorPage="...":设置错误页面。
    • @page errorPage="...":当JSP出现错误时跳转指定页面。

    JSP代码块

    JSP支持局部代码块和全局代码块:

  • 局部代码块

    • 代码块用<% java代码 %>包裹。
    • 被转译为_jspService方法中对应的Java代码。
  • 全局代码块

    • 代码块用<%! java代码 %>包裹。
    • 被转译为JSP对应的Servlet文件的全局部分。
  • Java脚本段/table达式

    • <%= 表达式 %>输出数据到页面。
    • 表达式不允许使用分号结尾,否则会导致编译错误。
  • JSP注释

    JSP支持多种注释方式:

    注释类型 etkыв结果
    HTML注释 被转译,输出到浏览器但不被执行
    CSS注释 被转译,输出到浏览器但不被执行
    JavaScript注释 被转译,输出到浏览器但不被执行
    Java注释 被转译但不执行
    JSP注释 不被转译也不执行,格式为<!-- 注释内容 -->

    static和dynamic Include

    为了实现资源共享,JSP支持静态和动态引入:

  • 静态引入

    • 使用<%@ include file="..." %>引入JSP文件。
    • 引入文件和主JSP文件合并转换为一个Servlet文件,共享变量需谨慎。
  • 动态引入

    • 使用<jsp:include page="..." %>引入文件。
    • 引入文件单独转换为Servlet,主JSP调用引入文件。
  • 两者的主要区别在于共享变量能力,静态引入变量不可共享用于异名变量,而动态引入允许共享。

    转发Forward标签

    当JSP处理后需要将请求转换为其他页面,可以使用<jsp:forward>标签:

    • 属性page="..."指定转发页面。
    • 子标签<jsp:param>用于传递额外参数。

    <jsp:forward>标签只能输出空白内容,且传输的参数不会随状态传递。

    Nine隐含对象

    JSP页面内置提供九大对象:

  • pageContext:当期页面作用域,包含其他八个对象。
  • request:封存请求相关数据。
  • session:同一浏览器持续连接期间的数据存储。
  • application:服务器运行期间的数据存储。
  • response:定义响应内容和编码格式。
  • out:高效的响应输出流。
  • page:当前转译的JSP文件。
  • config:ServletContext对象,用于资源初始化。
  • exception:异常对象,存储异常信息。
  • 四大作用域

    JSP的变量作用域主要有以下四种:

  • pageContext(当前页面):变量仅在当前JSP页面内有效,适用于页面显示层数据。
  • request(请求):变量有效期从请求接收到响送完成,适配多页面协同使用。
  • session(会话):浏览者与服务器保持连接期间的数据存储,适合用户数据共享。
  • application(应用程序):适用于不同浏览者间的数据共享,如站点信息。
  • JSP与Servlet职责分工

    • Servlet负责业务逻辑处理,使用转发或重定向将请求转向JSP页面。
    • JSP页面负责呈现用户界面和数据输出。

    特别是在数据流转时,转发使用requestsession,而重定向使用session,无法使用application,因为application为服务器层,用户间共享的数据不宜用于请求转换。

    转发与重定向的路径

  • 相对路径

    • Servlet(String redirectionPage):.sendRedirect("路径");
    • Request Dispatcher forwardPage: forward(request, response);
  • 绝对路径

    • 重定向中的第一个/表示服务器根目录。
    • 请求转发中的第一个/表示项目根目录。
  • 建议在开发中始终使用绝对路径以避免路径错误和维护困难。

    JSP中的绝对路径与BasePath

    为了简化资源路径管理,可以使用basePath技术:

    • 基础路径配置为项目根目录,通过<head><base href=" royalties/%BASEPATH%"></head>设置。
    • BasePath法与手写斜杠法需谨慎结合,混用会导致路径错误。

    结语

    JSP作为Java web应用的重要组成部分,与Servlet紧密结合推动了灵活高效的网页开发。熟练掌握JSP的工作原理和实用技巧,是提升开发能力的重要步骤。

    转载地址:http://noeyk.baihongyu.com/

    你可能感兴趣的文章
    github 入门
    查看>>
    温故知新,.Net Core遇见Consul(HashiCorp),实践分布式服务注册与发现
    查看>>
    HTML 表单验证
    查看>>
    python解释器环境问题
    查看>>
    uni-app快速导入自己需要的插件
    查看>>
    编写xor_shellcode.py
    查看>>
    Echarts笔记
    查看>>
    Ubuntu 20.04 Docker 安装并配置
    查看>>
    在 eclipse 中将 web 项目部署到 tomcat 服务器上
    查看>>
    Laravel 直接返回404页面
    查看>>
    常用元素操作的方法
    查看>>
    解决打开 json 文件中文乱码的问题
    查看>>
    计算机网络基础:PKI(公钥基础设施)
    查看>>
    计算机网络基础:VLAN(虚拟局域网)
    查看>>
    计算机网络基础:文件共享服务器(注册表更改)
    查看>>
    计算机网络基础:用户和组管理
    查看>>
    基于Arduino的ESP32-S3连接OneNET云平台实战指南(四)——ESP32-S3连接OneNET云平台的订阅主题与发布主题、消息(数据流)
    查看>>
    乒乓球问题
    查看>>
    Trae国内版发布,中国首款AI 原生IDE 正式上线,配置Doubao-1.5-pro,支持切换满血版DeepSeek 模型
    查看>>
    多线程,高并发
    查看>>