Jsp在Javaweb中扮演什么角色?

1.什么是Jsp

标题
JSP(Java Server Pages,Java 服务器页面)是一种动态网页技术,它允许在 HTML 页面中嵌入 Java 代码,并由 Web 服务器在请求页面时动态生成 HTML 页面。JSP 通常用于创建动态 Web 内容,如交互式表单、在线购物、论坛等。

以下是关于 JSP 的一些重要信息:

1.1 工作原理

  • JSP 文件实际上是一个包含 HTML 和 Java 代码的文本文件,其中的 Java 代码可以通过特定的标签(<% %>)来嵌入到 HTML 页面中。
  • 在 Web 服务器接收到客户端请求时,服务器会将 JSP 文件翻译为 Java 代码,并编译成 Servlet(Java 服务器端程序)。
  • Servlet 会根据客户端请求生成 HTML 页面,然后将其返回给客户端浏览器。

1.2 特点

  • 动态性:JSP 允许在 HTML 页面中嵌入 Java 代码,从而实现动态生成 Web 页面的功能。
  • 可重用性:JSP 中的 Java 代码可以使用 Java 类库和框架,因此具有很高的可重用性。
  • 安全性:JSP 中的 Java 代码运行在服务器端,客户端无法直接访问,因此具有较高的安全性。

1.3 优势

  • 开发效率高:JSP 使得开发人员可以在 HTML 页面中嵌入 Java 代码,从而避免了编写大量的 Servlet 和 Java 代码,提高了开发效率。
  • 易于维护:JSP 中的 HTML 和 Java 代码分离,使得页面和逻辑的维护更加容易。
  • 可扩展性强:JSP 具有很高的可扩展性,可以使用 Java 类库和框架来实现更加复杂的功能。

JSP 是一种动态网页技术,允许在 HTML 页面中嵌入 Java 代码,从而实现动态生成 Web 页面的功能。
具有很高的开发效率、易于维护、可扩展性强等优点,被广泛应用于 Web 应用程序的开发中。
在这里插入图片描述

浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!

JSP最终也会被转换成为一个Java类!

JSP 本质上就是一个Servlet

2.1判断请求

//初始化
  public void _jspInit() {
      
  }
//销毁
  public void _jspDestroy() {
  }
//JSPService
  public void _jspService(.HttpServletRequest request,HttpServletResponse response)

2.2内置对象

final javax.servlet.jsp.PageContext pageContext;  //页面上下文
javax.servlet.http.HttpSession session = null;    //session
final javax.servlet.ServletContext application;   //applicationContext
final javax.servlet.ServletConfig config;         //config
javax.servlet.jsp.JspWriter out = null;           //out
final java.lang.Object page = this;               //page:当前
HttpServletRequest request                        //请求
HttpServletResponse response                      //响应

2.3输出页面前增加的代码

response.setContentType("text/html");       //设置响应的页面类型
pageContext = _jspxFactory.getPageContext(this, request, response,
       null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;

原理

3.基本语法

JSP(Java Server Pages)基础语法包括嵌入 Java 代码、使用 JSP 指令、访问请求参数等。以下是 JSP 的基本语法:

  1. 嵌入 Java 代码
    在 JSP 页面中,可以使用 <% %> 标记嵌入 Java 代码,例如:

    <% 
        String name = "World";
        out.println("Hello, " + name);
    %>
    
  2. 输出变量值或表达式结果
    使用 ${} 语法输出变量值或表达式的结果,例如:

    <p>The current time is: ${new java.util.Date()}</p>
    
  3. 引入 Java 类和包
    可以使用 <%@ page import="com.example.packageName.*" %> 指令来引入 Java 类和包,使其在当前 JSP 页面中可用。

  4. 定义 JSP 函数
    使用 <%! %> 标记定义 JSP 页面中的函数,例如:

    <%!
    public int add(int a, int b) {
        return a + b;
    }
    %>
    
  5. 使用 JSP 动作
    JSP 提供了一些特殊的标签,称为 JSP 动作,用于实现特定的功能,比如包含其他页面、转发请求等。例如,使用 <jsp:include> 动作可以包含其他 JSP 页面:

    <jsp:include page="header.jsp" />
    
  6. 访问请求参数
    可以通过内置对象 request 来访问客户端发送的请求参数,例如:

    <%
    String username = request.getParameter("username");
    %>
    
  7. 输出结果
    可以使用内置对象 out 输出内容到响应页面上,例如:

    <%
    out.println("Hello, World!");
    %>
    

此外,JSP 还支持标准的 HTML 元素、CSS 样式和 JavaScript 脚本,因此可以完全像编写普通的 HTML 页面一样编写 JSP 页面。

通过掌握这些基本的 JSP 语法,你就可以开始编写动态的、交互式的 Web 页面,并与后台的 Java 代码进行交互,实现更复杂的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/456784.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开关电源的线性调整率是什么?怎么检测线性调整率?

开关电源线性调整率 开关电源线性调整率是指输入电压在额定范围内变化时&#xff0c;开关电源输出电压随之变化的比率。线性调整率对开关电源的电压稳定性有着重要影响&#xff0c;通常开关电源的线性调整率在1%~5%之间。线性调整率越小&#xff0c;说明电压越稳定&#xff1b;…

【SpringCloud微服务实战08】RabbitMQ 消息队列

MQ异步通信优缺点: 优点: 吞吐量提升:无需等待订阅者处理完成,响应更快速 故障隔离:服务没有直接调用,不存在级联失败问题 调用间没有阻塞,不会造成无效的资源占用 耦合度极低,每个服务都可以灵活插拔,可替换 流量削峰:不管发布事件的流量波动多大,都由Broker接收,…

网络工程师笔记14

VLAN原理与配置 VLAN 的功能 划分广播域&#xff0c;隔离广播域 VLAN的应用划分 VLAN配置命令

STM32第九节(中级篇):RCC——时钟树讲解(第一节)

目录 前言 STM32第九节&#xff08;中级篇&#xff09;&#xff1a;RCC——时钟树讲解 时钟树主系统时钟讲解 HSE时钟 HSI时钟 锁相环时钟 系统时钟 SW位控制 HCLK时钟 PCLKI时钟 PCLK2时钟 RTC时钟 MCO时钟输出 6.2.7时钟安全系统(CSS&#xff09; 小结 前言 从…

【你也能从零基础学会网站开发】Web建站之javascript入门篇 简单介绍DOM与XML

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 XML概述 XML是…

windows批处理脚本(cmd指令)

一、简介 最早期的电脑系统是DOS系统&#xff0c;DOS系统只有一个黑漆漆的窗口&#xff0c;需要自己输入命令&#xff0c;所以学习命令是很有必要的&#xff0c;那么CMD命令大全是什么?直到今天的Windows系统&#xff0c;还是离不开DOS命令的操作。如今懂得使用windows批处理脚…

vue解决:this.$refs引用子组件报错 is not a function

我这里有三个可能 可能是你的解决问题的办法&#xff1a; 1.如果你是想跳转到某个页面发现出现此问题&#xff1a; 那是因为你么有导出 2.可能是你的import引入的指定文件的路径有问题 3.你在你跳转的新的页面么有对应的方法

Self-supervised Contextual Keyword and Keyphrase Retrieval with Self-Labelling

文章目录 题目摘要方法数据集实验 题目 通过自我标记进行自我监督的上下文关键字和关键词短语检索 论文地址&#xff1a;https://www.preprints.org/manuscript/201908.0073/v1 项目地址&#xff1a;https://github.com/naister/Keyword-OpenSource-Data 摘要 在本文中&#x…

【SpringCloud微服务实战01】Eureka 注册中心

前言 在 Eureka 架构中&#xff0c;微服务角色有两类&#xff1a; EurekaServer &#xff1a;服务端&#xff0c;注册中心 记录服务信息 心跳监控 EurekaClient &#xff1a;客户端 Provider &#xff1a;服务提供者&#xff0c;例如案例中的 user-service …

docker 安装 RabbitMQ 安装 rabbitmq_delayed_message_exchange插件

docker 安装 RabbitMQ 1. 获取镜像 指定版本&#xff0c;该版本包含了web控制页面 docker pull rabbitmq:management2. 运行镜像 方式一&#xff1a;默认guest 用户&#xff0c;密码也是 guest docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:…

【绿色交通/运维功率/远程控制】安科瑞高速公路综合能效解决方案

行业背景 目前全国仍有900多个县没有国道覆盖&#xff0c;有18个新增的城镇人口在20万以上的城市和29个地级行政中心未实现与国家高速公路相连接。根据《规划》&#xff0c;普通国道将新建8000公里、升级改造10万公里&#xff0c;国家高速公路将新建2.5万至3.3万公里。未来的高…

【自动化测试】如何在jenkins中搭建allure

相信大家在做自动化测试过程中&#xff0c;都会用到自动化测试环境&#xff0c;目前最常见的就是通过容器化方式部署自动化测试环境&#xff0c;但对于一些测试小白&#xff0c;不是很会搭建持续集成环境&#xff0c;特别是从0-1的过程&#xff0c;需要自行搭建很多依赖环境&am…

ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

发生的错误信息&#xff1a; File "C:\Users\malongqiang\.conda\envs\ObjectDetection\lib\ssl.py", line 1309, in do_handshakeself._sslobj.do_handshake() ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。 分析原因&#xff1a; …

kalman滤波python实现——基于维纳退化模型

参考文献&#xff1a; Si X S, Wang W, Hu C H, et al. A Wiener-process-based degradation model with a recursive filter algorithm for remaining useful life estimation[J]. Mechanical Systems and Signal Processing, 2013, 35(1-2): 219-237. 维纳过程模型&#xf…

前端基础篇-深入了解 JavaScript(一)

文章目录 1.0 JavaScript 概述 2.0 JS - 引入方式 3.0 JS - 基础语法 4.0 JS - 数据类型 5.0 JS - 函数 6.0 JS - Array 数组 7.0 JS - String 字符串 1.0 JavaScript 概述 JavaScript(简称&#xff1a;JS)是一门夸平台、面向对象的脚本语言。使用来控制网页行为&#xff0c;它…

主机 渗透

1&#xff1a;kali 靶机&#xff1a;Windows Server 2003 端口扫描 1.用nmap端口扫描靶机 nmap -sP 192.168.157.0/24 #扫描192.168.157.0这个网段存活的主机 靶机的IP为192.168.157.130 2 nmap -sV192.168.157.130 -p- #-sV 参数用于启用版本检测&#xff0c;192.168.…

【MySQL】锁信息

title: MySQL 锁信息 tags: MySQL abbrlink: 364637211 date: 2021-07-26 18:34:34 1 MySQL 锁定义 MySQL 锁&#xff08;Lock&#xff09;是数据库管理系统用于管理并发访问的一种机制。 在多用户同时访问数据库的环境下&#xff0c;可能会出现多个事务同时对相同的数据进行…

【C++ 】stack 和 queue

1. 标准库中的stack stack 的介绍&#xff1a; 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行 元素的插入与提取操作 2. stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作为其…

linux系统对于docker容器的监控

容器监控 容器监控原生命令操作问题 容器监控三剑客CAdvisorInfluxDBGranfana compose编排监控工具新建目录创建CIG.yml文件启动docker-compose测试 容器监控 CAdvisorInfluxDBGranfana 原生命令 操作 docker stats问题 通过docker stats命令可以很方便的看到当前宿主机上所…

PostgreSQL YUM安装

docker中的centos7中安装 选择对应的版本然后在容器中的centos7中执行下面命令 但是启动容器的时候需要注意 开启端口映射开启特权模式启动init进程 docker run -itd --name centos-postgresql -p 5433:5432 --privilegedtrue centos:centos7 /usr/sbin/init 启动然后进入后先…