JSP详解

news2024/11/22 16:29:57

JSP的概念:

概念:Java Serve Pages Java服务端页面

一种动态的网页技术,其中可以定义Html、css、js等静态内容。还可以定义Java代码的动态内容。

JSP=Html+java

JSP的存在使我们可以不用在servlet里面用输出流一行一行的写字符串,而是直接将java代码和html代码写在一起方便书写。

在实际开发时,我们通常在业务层处理完后,将最后的响应转发到JSP作为页面展示。

<%@ page contentType="text/html; utf-8" language="java" %>

<html>
<head>
    <title>Tittle</title>
</head>

<body>
    <h1>JSP,hello|||</h1>
    <%
        System.out.println("nihao jsp");
    %>
</body>>

</html>>

JSP快速入门

1、导入JSP坐标

2、创建JSP文件

3、编写HTML标签和JAVA代码

JSP原理

JSP本质上就是一个servlet。

我们编写了JSP,容器(Tomcat)会自动的将JSP转换为servlet,再编译成字节码文件发送给浏览器。

JSP脚本

JSP脚本用于在JSP页面内部定义JAVA代码。

脚本分类:

1、 <%%>内容会直接放到_jspService()方法中。

2、<%= %>内容会放到out.print()中,作为out.print()的参数。

3、<%!%>内容会放到_jspService方法外,被类直接包含。

JSP的缺点

实际上,由于JSP的种种缺点,在如今的开发中我们几乎已经不使用了。

1、书写很麻烦,尤其是很复杂的页面,需要不断用<%%>去进行打断。

2、阅读很麻烦

3、复杂度高,运行需要依赖各种环境,JRE,JSP容器,JavaEE

4、占用内存和磁盘,JSP会自动生成.java和.class文件。其中.java文件存放的是解析后的servlet文件,.class文件是运行文件。

5、调试困难:出错后,我们需要在自动生成的servelt文件中寻找错误

6、前后端做不到分离

现在我们通常使用HTML+AJAX的技术来代替,后面会有写AJAX。

为了便于后期维护和开发,我们通常不在JSP文件里面直接写JAVA代码,而是使用JSP展示数据,有关逻辑处理和数据封装我们放到Servlet里面进行处理。

这就引入了一个概念-EL表达式

EL表达式

EXpression Language表达式语言,用来简化JSP页面中JAVA代码

主要功能为:获取数据

语法:${expression}

${brands}:获取域(比如request域,response域)中键为brands的值。

 

 JSTL标签

JSP标准标签库,使用标签取代JSP页面上的JAVA代码。(感觉有点像Mybatis配置mapper.xml文件中的那个标签?)

<c:if test="${flag==1}">
男
</c:if>

<c:if test="${flag==2}>
女
</c:if>

有点类似于增强for循环,这个item就相当于users,var相当于user

for(User user:users){

} 

第二种循环遍历方式,和普通for循环很像 

 MVC模式和三层架构

MVC模式是一种分层开发的模式

M:Modle,业务模型,处理业务。

V:View,视图,界面展示。

C:Controller,控制器,请求处理,调用模型和视图。

MVC的好处:

指责单一,互相不影响。

有利于分工协作。

有利于组件重组。

三层架构

​​​​​​​ 

数据访问层:对数据库进行基本的CRUD操作。

业务逻辑层:对业务逻辑进行封装,组合数据访问层中的基本数据,形成复杂的业务逻辑功能。

表现层:接受请求,封装数据,调用业务逻辑层,(通过JSP展示),响应数据 。

其中,对于不同层我们可以采用框架对其进行优化,在后续学习的Spring系列框架,就分别对应了表现层和业务逻辑层。而对于数据访问层的开发,Mybatis就是其开发框架。

MVC模式和三层框架之间的关系 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拿下7家大厂offer后,整理出来的笔记.....

我第一次接触自动化是在2016年。那时刚毕业一年有余&#xff0c;组内一直做手工功能测试&#xff0c;大概在2018年9月&#xff0c;部门领导要求测试组引入自动化。组内之前从没有开展过任何自动化&#xff0c;测试主管安排了一个刚入职不久的研究生同事去研究。 当时自己内心还…

Jmeter性能测试 -3数据驱动实战

什么是数据驱动&#xff1f; 从数据文件中读取测试数据&#xff0c;驱动测试过程的一种测试方法。数据驱动可以理解为更高级的参数化。 特点&#xff1a;测试数据与测试代码分离&#xff1b;数据控制过程 好处&#xff1a;降低开发和维护成本&#xff0c;减少代码量&#xf…

原型设计工具

常见原型图设计工具 Sketch(国内外通用) 仅支持mac系统&#xff0c;无window系统软件。 Figma(国外) Figma是一个基于浏览器的协作式UI设计工具。 即时设计(国内) 墨刀(国内) 墨刀采用简便的拖拽连线操作&#xff0c;作为一款在线原型设计软件&#xff0c;墨刀支持云端保存…

Docker 设置国内镜像源

Docker 镜像加速 国内从 DockerHub 拉取镜像有时会遇到网络问题&#xff0c;此时可以配置国内的镜像加速来下载。Docker 官方和国内很多云服务商都提供了国内加速器服务&#xff0c;例如如下&#xff1a; 科大镜像&#xff1a;https://docker.mirrors.ustc.edu.cn/网易&#…

SpringSecurity 硅谷通用权限系统:权限管理

由于项目需要 快速入门一下 看的是这篇 比较新比较快 硅谷通用权限系统&#xff1a;权限管理 一、权限管理 1、权限管理介绍 每个系统的权限功能都不尽相同&#xff0c;各有其自身的业务特点&#xff0c;对权限管理的设计也都各有特色。不过不管是怎样的权限设计&#xff0c;大…

Flutter 笔记 | Flutter 容器组件

Padding 这个组件最能体现Flutter与其他UI框架的一个不同点&#xff0c;那就是在其他UI框架中padding基本都是作为组件的一个属性&#xff0c;例如在html中常见的布局标签都有padding属性&#xff0c;Android中也是如此&#xff0c;但是在Flutter中组件并没有一个叫padding的属…

财务共享时代企业数智化应用能帮我们做些什么?

随着企业规模的不断扩大和业务范围的逐步扩展&#xff0c;财务工作的难度和复杂度也在不断提高&#xff0c;传统的手工录入和处理方式呈现出流程长、效率低、易出错等问题。为了提升财务工作的效率和准确性&#xff0c;越来越多的企业开始利用数智化应用打造企业内部的财务数智…

初识web自动化测试,快速成长指南!

目录 自动化 说明 优点 自动化测试 自动化测试能解决什么问题&#xff1f; 相关知识 Web自动化测试 定义 什么Web项目适合做自动化测试? Web自动化测试在什么阶段开始? 所属分类 Web自动化测试工具选择 主流的Web自动化测试工具 Selenium 概念 特点 环境搭建…

防火墙直路部署,上下行连接交换机的主备备份组网

组 网 需 求 如图所示&#xff0c;企业的两台FW的业务接口都工作在三层&#xff0c;上下行分别连接二层交换机。上行交换机连接运营商的接入点&#xff0c;运营商为企业分配的IP地址为1.1.1.1。现在希望两台FW以主备备份方式工作。正常情况下&#xff0c;流量通过FW_A转发。当F…

前端线上接口503-nginx跨域proxy_pass;proxy_set_header

nginx大怨种 前端线上接口503-nginx跨域 前端线上接口503-nginx跨域 前提&#xff1a;vue项目本地接口通过proxy都可使用&#xff0c;但是项目部署在服务器上后发现所有接口出现503如下状况 简而言之&#xff1a;页面部署在域名为https://aa.bb.cc.com/vehicle/#/下&#xff0…

Rocky Linux 9 x86_64 OVF (sysin)

Rocky Linux 9 x86_64 OVF (sysin) 以社区方式驱动的企业 Linux 请访问原文链接&#xff1a;https://sysin.org/blog/rocky-linux-9-ovf/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Rocky Linux 9.0 (5.14.0-70.13.1.el9…

财务共享领先实践,看看他们是怎么做的

随着信息技术的快速发展&#xff0c;由于创新商业模式的出现&#xff0c;金融结构、操作策略和流程正在发生变化。大数据、云计算、人工智能、机器人流程自动化&#xff08;RPA&#xff09;等新兴技术正在应用于金融及财务领域&#xff0c;以优化财务管理流程并提高运营效率。财…

公司来了个测试开发,听说是00后,上来一顿操作给我看呆了...

5年测试&#xff0c;应该是能达到资深测试的水准&#xff0c;即不仅能熟练地开发业务&#xff0c;而且还能熟悉项目开发&#xff0c;测试&#xff0c;调试和发布的流程&#xff0c;而且还应该能全面掌握数据库等方面的技能&#xff0c;如果技能再高些的话&#xff0c;甚至熟悉分…

若依框架在未登录的情况下访问swagger3.0页面,出现弹窗的解决方法

若依框架在未登录的情况下访问swagger3.0页面&#xff0c;出现弹窗的解决方法 效果展示&#xff1a; 解决方法&#xff1a;在ShiorConfig.java类中找到shiroFilterFactoryBean方法&#xff0c;然后在filterChainDefinitionMap里面put你要过滤的地址&#xff0c;如下&#xff…

高通开发系列 - 音频驱动中的APR通道不能打开问题

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 问题概述问题现象问题分析问题解决问题概述 对msm8909平台进行内核升级,相应的其音频驱动也需要进行升级,使用了同平台的音频驱动作…

CDN 带宽与上传下载速率关系?

带宽&#xff08;Bandwidth&#xff09;单位用 bps(bit/s)&#xff0c;表示每秒钟传输的二进制位数。 下载速率单位用 Bps(Byte/s) 表示&#xff0c;表示每秒钟传输的字节数。 1Byte&#xff08;字节&#xff09; 8bit&#xff08;位&#xff09;&#xff0c;即下载速率 带宽…

使用U盘给笔记本安装Deepin桌面版(Ubuntu同理)

一、镜像下载 Deepin官网官方ISO镜像源 下载完成后会得到一个 deepin-desktop-community-20.9-amd64.iso 的文件 这个文件就是我们要安装的Deepin的系统镜像文件 二、制作USB启动盘 准备一张至少8G的U盘 或者 内存卡读卡器 这里我选择使用 Rufus 制作USB启动盘 Rufus官网…

利用Django REST framework构建RESTful Web API

本文首发自「慕课网」(www.imooc.com)&#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注"慕课网"及“慕课网公众号”&#xff01; 作者&#xff1a;ExcellentDavid | 慕课网讲师 这次&#xff0c;我们以师生管理系统为例&#xff0c…

红队免杀,一句话木马的套路

一句话木马的套路 the-backdoor-factory 安装 Kali下 方式一&#xff1a; git clone https://github.com/secretsquirrel/the-backdoor-factory 方式二&#xff1a; apt-get install backdoor-factory 使用说明 ./backdoor.py -h 检查待检测软件是否支持&#xff08;如…

实验篇(7.2) 03. 部署物理实验环境(下) 远程访问 ❀ Fortinet网络安全专家 NSE4

【简介】考虑到有很多人初次接触FortiGate防火墙硬件&#xff0c;因此在讲解部署物理实验环境的时候&#xff0c;防火墙的初次登录内容介绍的比较多&#xff0c;以致于需要将文章分下、下二篇。下篇我们重点介绍服务器的配置及部署。 防火墙的接口规划 在部署服务器之前&#x…