当前位置: 首页 > news >正文

动态页面技术的发展与应用

jsp

  • 静态页面:web诞生后的html文档,不论多少次访问都是同一份html文档或者是其他的什么文档,所以说是”静态“的。
    • 虽然js能让页面产生互动,但是不论什么人访问,看到的都是放在服务器的那一份写死的文件/文档
    • activex
    • applet
    • flash
  • 动态页面:服务器软件动态编辑html文件,现场照着模板编辑一份给你
  • 模板引擎:
    • 不知道为啥不算动态页面。
    • python从来没有发展出动态页面技术,但是有模板引擎

web相关概念回顾

  1. 软件架构

    1. C/S:客户端/服务器端
    2. B/S:浏览器/服务器端
  2. 资源分类

    1. 静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源.静态资源可以直接被浏览器解析
      • 如: html,css,JavaScript
    2. 动态资源:每个用户访问相同资源后,得到的结果可能不一样。称为动态资源。动态资源被访问后,需要先转换为静态资源,在返回给浏览器
      • 如:servlet/jsp,php,asp…

web服务器软件:

  • 服务器:安装了服务器软件的计算机硬件
  • 服务器软件:接收用户的请求,处理请求,做出响应的进程 比如将tomcat和我们写的代码打成一个jar包,在有一段口号运行;
  • web服务器软件:接收用户浏览器的http请求,处理请求,做出响应(通常是返回html文档)。
    • 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目
    • 如nginx, Apache,微软IIS,还有Tomcat的部分功能
  • Java Servlet容器:
    • 相关概念起源于JavaEE中EJB(企业级javaBean)的容器。

    • 单独的servlet文件需要结合servlet-api相关的JavaEE的jar包,将其初始化后放在容器中管理,才有用

    • Tomcat就是这么一个Servlet容器,顺便还有web服务器功能

      • 常见的java相关的web服务器软件:

        • webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
        • webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
        • JBOSS:JBOSS公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
        • Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范servlet/jsp。开源的,免费的。
      • JavaEE:Java语言在企业级开发中使用的技术规范的总和,一共规定了13项大的规范

      • Tomcat

        1. 下载:http://tomcat.apache.org/
        2. 安装:解压压缩包即可。
          • 注意:安装目录建议不要有中文和空格
        3. 卸载:删除目录就行了
        4. 启动:
          • bin/startup.bat ,双击运行该文件即可

          • 访问:浏览器输入:http://localhost:8080 回车访问自己
            http://别人的ip:8080 访问别人

          • 可能遇到的问题:

            1. 黑窗口一闪而过:

              • 原因: 没有正确配置JAVA_HOME环境变量
              • 解决方案:正确配置JAVA_HOME环境变量
            2. 启动报错:

              1. 暴力:找到占用的端口号,并且找到对应的进程,杀死该进程
                • netstat -ano
              2. 温柔:修改自身的端口号
                • conf/server.xml
                • 一般会将tomcat的默认端口号修改为80。80端口号是http协议的默认端口号。
                  • 好处:在访问时,就不用输入端口号
        5. 关闭:
          1. 正常关闭:
            • bin/shutdown.bat
            • ctrl+c
          2. 强制关闭:
            • 点击启动窗口的×
        6. 配置:
          • 部署项目的方式:

            1. 直接将项目放到webapps目录下即可。

              • /hello:项目的访问路径–>虚拟目录
              • 简化部署:将项目打成一个war包,再将war包放置到webapps目录下。
                • war包会自动解压缩
            2. 配置conf/server.xml文件
              在标签体中配置

              • docBase:项目存放的路径
              • path:虚拟目录
            3. 在conf\Catalina\localhost创建任意名称的xml文件。在文件中编写

              • 虚拟目录:xml文件的名称
          • 静态项目和动态项目:

            • 目录结构
              • java动态项目的目录结构:
                – 项目的根目录
                – WEB-INF目录:
                – web.xml:web项目的核心配置文件
                – classes目录:放置字节码文件的目录
                – lib目录:放置依赖的jar包
          • 将Tomcat集成到IDEA中,并且创建JavaEE的项目,部署项目。

Servlet: server applet

  • 概念:运行在服务器端的小程序
    • Servlet就是一个接口,定义了Java类被浏览器访问的规则。
    • 将来我们自定义一个类,实现Servlet接口,复写方法。

Java Servlet 在遵循Java Servlet 规范(http://java.sun.com/product/servlet/2.2)定义的标准容器环境中运行,容器环境在 HTTP 通信和 We 服务器平台之间实现了一个抽象层。容器环境负责把请求传递给 Servlet,并把结果返回给客户。容器环境也提供了配置Java Servlet 应用的简单方法并且也提供了以声明性的方式使用特殊的基于 Web 应用XML布置描述符对 Java Servlet 应用进行各种管理服务。Java Servlet API中包括了ServletContext 接口,实现与容器环境的交互。

* 快速入门:1. 创建JavaEE项目2. 定义一个类,实现Servlet接口* public class ServletDemo1 implements Servlet3. 实现接口中的抽象方法4. 配置Servlet在web.xml中配置:<!--配置Servlet --><servlet><servlet-name>demo1</servlet-name><servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class></servlet><servlet-mapping><servlet-name>demo1</servlet-name><url-pattern>/demo1</url-pattern></servlet-mapping>* 执行原理:1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径2. 查找web.xml文件,是否有对应的<url-pattern>标签体内容。3. 如果有,则在找到对应的<servlet-class>全类名4. tomcat会将字节码文件加载进内存,并且创建其对象5. 调用其方法

  • Servlet中的生命周期方法:

    1. 被创建:执行init方法,只执行一次
      • Servlet什么时候被创建?
        • 默认情况下,第一次被访问时,Servlet被创建
        • 可以配置执行Servlet的创建时机。
          • 在标签下配置
            1. 第一次被访问时,创建
              • 的值为负数
            2. 在服务器启动时,创建
              • 的值为0或正整数
              • Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
                - 多个用户同时访问时,可能存在线程安全问题。
                - 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值
          1. 提供服务:执行service方法,执行多次
            • 每次访问Servlet时,Service方法都会被调用一次。
          2. 被销毁:执行destroy方法,只执行一次
          • Servlet被销毁时执行。服务器关闭时,Servlet被销毁
          • 只有服务器正常关闭时,才会执行destroy方法。
          • destroy方法在Servlet被销毁之前执行,一般用于释放资源
    • Servlet3.0:
      • 好处:

        • 支持注解配置。可以不需要web.xml了。
      • 步骤:

        1. 创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
        2. 定义一个类,实现Servlet接口
        3. 复写方法
        4. 在类上使用@WebServlet注解,进行配置
          • @WebServlet(“资源路径”)
			@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface WebServlet {String name() default "";//相当于<Servlet-name>String[] value() default {};//代表urlPatterns()属性配置String[] urlPatterns() default {};//相当于<url-pattern>int loadOnStartup() default -1;//相当于<load-on-startup>WebInitParam[] initParams() default {};boolean asyncSupported() default false;String smallIcon() default "";String largeIcon() default "";String description() default "";String displayName() default "";}

IDEA与tomcat的相关配置

1. IDEA会为每一个tomcat部署的项目单独建立一份配置文件* 查看控制台的log:Using CATALINA_BASE:   "C:\Users\fqy\.IntelliJIdea2018.1\system\tomcat\_itcast"2. 工作空间项目    和     tomcat部署的web项目* tomcat真正访问的是“tomcat部署的web项目”,"tomcat部署的web项目"对应着"工作空间项目" 的web目录下的所有资源* WEB-INF目录下的资源不能被浏览器直接访问。
3. 断点调试:使用"小虫子"启动 dubug 启动

相关文章:

动态页面技术的发展与应用

jsp 静态页面&#xff1a;web诞生后的html文档&#xff0c;不论多少次访问都是同一份html文档或者是其他的什么文档&#xff0c;所以说是”静态“的。 虽然js能让页面产生互动&#xff0c;但是不论什么人访问&#xff0c;看到的都是放在服务器的那一份写死的文件/文档activexa…...

1-算法基础-编程基础

1.基本数据类型 char ch A; char s[] "hello";2.const定义常量 const int N 1e5 9;//const定义常量&#xff0c;后续不可被修改 int a[N];3.万能头文件 C11等可用 #include<bits/stdc.h> using namespace std;4.typedef typedef long long kk; kk a[20…...

HarmonyOS应用开发——程序框架UIAbility、启动模式与路由跳转

前言 UIAbility简单来说就是一种包含用户界面的应用组件&#xff0c;用于和用户进行交互。每一个UIAbility实例&#xff0c;对应于一个最近任务列表中的任务。 一个应用可以有一个UIAbility&#xff0c;也可以有多个UIAbility。一个UIAbility可以对应于多个页面&#xff0c;建议…...

node.js-连接SQLserver数据库

1.在自己的项目JS文件夹中建文件&#xff1a;config.js、mssql.js和server.js以及api文件夹下的user.js 2.在config.js中封装数据库信息 let app {user: sa, //这里写你的数据库的用户名password: ,//这里写数据库的密码server: localhost,database: medicineSystem, // 数据…...

目标检测YOLO系列从入门到精通技术详解100篇-【图像处理】图像预处理方法

目录 前言 知识储备 Opencv图像操作 几个高频面试题目 为什么需要图像算法? 算法原理...

Android drawable layer-list右上角红点,xml布局实现,Kotlin

Android drawable layer-list右上角红点&#xff0c;xml布局实现&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <layer-list xmlns:android"http://schemas.android.com/apk/res/android"><itemandroid:id"id…...

网络虚拟化场景下网络包的发送过程

网络虚拟化有和存储虚拟化类似的地方&#xff0c;例如&#xff0c;它们都是基于 virtio 的&#xff0c;因而在看网络虚拟化的过程中&#xff0c;会看到和存储虚拟化很像的数据结构和原理。但是&#xff0c;网络虚拟化也有自己的特殊性。例如&#xff0c;存储虚拟化是将宿主机上…...

《数据结构与测绘程序设计》试题详细解析(仅供参考)

一. 选择题&#xff08;每空2分&#xff0c;本题共30分&#xff09; &#xff08;1&#xff09;在一个单链表中&#xff0c;已知q所指结点是p所指结点的前驱结点&#xff0c;若在q和p之间插入结点s&#xff0c;则执行( B )。 A. s->nextp->next; p->nexts; B. q…...

Raft 算法

Raft 算法 1 背景 当今的数据中心和应用程序在高度动态的环境中运行&#xff0c;为了应对高度动态的环境&#xff0c;它们通过额外的服务器进行横向扩展&#xff0c;并且根据需求进行扩展和收缩。同时&#xff0c;服务器和网络故障也很常见。 因此&#xff0c;系统必须在正常…...

Redis队列stream,Redis多线程详解

Redis 目前最新版本为 Redis-6.2.6 &#xff0c;会以 CentOS7 下 Redis-6.2.4 版本进行讲解。 下载地址&#xff1a; https://redis.io/download 安装运行 Redis 很简单&#xff0c;在 Linux 下执行上面的 4 条命令即可 &#xff0c;同时前面的 课程已经有完整的视…...

ThinkPHP的方法接收json数据问题

第一次接触到前后端分离开发&#xff0c;需要在后端接收前端ajax提交的json数据&#xff0c;开发基于ThinkPHP3.2.3框架。于是一开始习惯性的直接用I()方法接收到前端发送的json数据&#xff0c;然后用json_decode()解析发现结果为空&#xff01;但是打印出还未解析的值却打印得…...

简单理解算法

简单理解算法 前言算法衡量一个好的算法具备的标准算法的应用场景 数据结构数据结构的组成方式 前言 hello&#xff0c;宝宝们~来分享我从一本书中理解的算法。《漫画算法》感觉对我这种算法小白比较友好。看完感觉对算法有了新的理解&#xff0c;计算机学习这么多年&#xff…...

C/C++ 内存管理(2)

文章目录 new 和 delet 概念new 和 delet 的使用new与 delete 底层原理malloc/free和new/delete的区别new / opera new / 构造函数 之间的关系定位new表达式(placement-new)内存泄漏内存泄漏分类如何对待内存泄漏 new 和 delet 概念 new和delete是用于动态内存管理的运算符&am…...

Net6.0或Net7.0项目升级到Net8.0 并 消除.Net8中SqlSugar的警告

本文基于NetCore3.1或Net6.0项目升级到Net7.0&#xff0c;参考连接&#xff1a;NetCore3.1或Net6.0项目升级到Net7.0-CSDN博客 所有项目按照此步骤操作一遍&#xff0c;完成后再将所有引用的包&#xff08;即 *.dll&#xff09;更新升级到最新版&#xff08;注意&#xff1a;有…...

力扣题:字符串的反转-11.22

力扣题-11.22 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;541. 反转字符串 II 解题思想&#xff1a;进行遍历翻转即可 class Solution(object):def reverseStr(self, s, k):""":type s: str:type k: int:rtype: str"&quo…...

Effective C++(二):对象的初始化

文章目录 一、类的初始化二、全局静态对象的初始化 一、类的初始化 对于类中的成员变量的初始化&#xff0c;一般有两种方法&#xff0c;一种是在类中定义的时候直接赋予初值&#xff1a; class CTextBlock { private:std::size_t textLength{ 0 };bool lenisValid{ false }:…...

云原生高级--shell自动化脚本备份

shell自动化脚本实战---备份 数据库备份&#xff1a; 结合计划任务 MySQL、 Oracle 网站备份&#xff1a; tar&#xff0c;异地保存--ftp、rsync 一、数据库备份 1.利用自带工具mysqldump 实现数据库分库备份 分库备份&#xff1a; 1> 如何获取备份的…...

Spring Boot实现热部署

Spring Boot提供了一个名为spring-boot-devtools的开发工具&#xff0c;它可以实现热部署功能。通过使用spring-boot-devtools&#xff0c;可以在修改了resources目录下的内容后&#xff0c;自动重新加载应用程序&#xff0c;而无需手动重启。 以下是使用spring-boot-devtools…...

MVCC-

文章目录 1. 什么是MVCC2. 快照读和当前读3. 复习4. MVCC实现原理之ReadView5. 总结 文章目录 1. 什么是MVCC2. 快照读和当前读3. 复习4. MVCC实现原理之ReadView5. 总结 1. 什么是MVCC 口述&#xff1a;MVCC其实他是解决这种读-写的情况的&#xff0c;当然读-写也可以用 锁来…...

键盘打字盲打练习系列之刻意练习——1

一.欢迎来到我的酒馆 盲打&#xff0c;刻意练习! 目录 一.欢迎来到我的酒馆二.选择一款工具三.刻意练习第一步&#xff1a;基准键位练习第二步&#xff1a;字母键位练习第三步&#xff1a;数字符号键位练习 四.矫正坐姿 二.选择一款工具 工欲善其事必先利其器。在开始之前&…...

某公司前端笔试题(12.30)

1、对象数组去重&#xff1a; 数组去重&#xff1a; const a[{a:1,b:2},{a:2},{a:2},{a:1,c:3},{b:2,a:1}] 结果&#xff1a;[{a:1,b:2},{a:2},{a:1,c:3}] // 判断两个对象的属性值是否一致 const a [{ a: 1, b: 2 }, { a: 2 }, { a: 2 }, { a: 1, c: 3 }, { b: 2, a: 1 }] co…...

Sentinel核心类解读:Node

基本介绍 Sentinel中的簇点链路是由一个个的Node组成的&#xff0c;Node是一个接口。Node中保存了对资源的实时数据的统计&#xff0c;Sentinel中的限流或者降级等功能就是通过Node中的数据进行判断的。 Sentinel中是这样描述Node的&#xff1a; Holds real-time statistics…...

网络安全领域的12个大语言模型用例

网络安全是人工智能最大的细分市场&#xff0c;过去几年网络安全厂商纷纷宣称整合了人工智能技术&#xff08;当然也有很多仅仅是炒作&#xff09;&#xff0c;其中大部分是基于基线和统计异常的机器学习。 随着ChatGPT和类似生成式人工智能技术的飞速发展&#xff0c;基于大语…...

十大网络攻击手段解析,助您建立坚固的网络防线

在互联网高度发达的今天&#xff0c;网络安全问题愈发严峻。 了解网络攻击手段&#xff0c;掌握防御策略&#xff0c;对保障网络安全至关重要。 本文将为您介绍常见的十大网络攻击手段&#xff0c;以及如何应对和防御这些攻击手段&#xff0c;确保网络安全。 一、DDoS攻击 …...

jvm 调优参数

-XX:AlwaysPreTouch 指定JVM启动时即刻分配整个堆内存空间&#xff1b;应用启动会变慢&#xff0c;但是运行时变快。 -XX:MaxRAMPercentage60.0 指定JVM最大堆内存使用比例为60%&#xff1b;适用于容器部署 -XX:MinRAMPercentage60.0 指定JVM最小堆内存使用比例为60%&#xff1…...

OpenCV-Python:计算机视觉介绍

目录 1.背景 2.计算机视觉发展历史 3.计算机视觉主要任务 4.计算机视觉应用场景 5.知识笔记 1.背景 OpenCV是计算机视觉的一个框架&#xff0c;想要学习OpenCV&#xff0c;需要对计算机视觉有一个大致的了解。计算机视觉是指通过计算机技术和算法来模拟人类视觉系统的能力…...

uni-app 微信小程序之自定义中间圆形tabbar

文章目录 1. 自定义tabbar效果2. pages新建tabbar页面3. tabbar 页面结构4. tabbar 页面完整代码 1. 自定义tabbar效果 2. pages新建tabbar页面 首先在 pages.json 文件中&#xff0c;新建一个 tabbar 页面 "pages": [ //pages数组中第一项表示应用启动页&#xff…...

使用 Go 构建高性能的命令行工具

命令行工具&#xff08;CLI&#xff09;在软件开发中扮演着重要的角色&#xff0c;尤其是在自动化工具、开发工具链和服务器管理等领域。Go 语言以其简洁性和高性能而闻名&#xff0c;非常适合用来创建强大且高效的 CLI 工具。本文将详细介绍如何使用 Go 语言来构建 CLI 应用&a…...

微前端框架 qiankun

前言 qiankun是一个基于single-spa的微前端实现库&#xff0c;帮助你构建一个生产可用的微前端架构系统。qiankun支持多种技术栈的微应用接入&#xff0c;提供了简单、解耦、技术栈无关、独立开发、独立运行、增量升级、样式隔离、资源预加载等特性&#xff0c;以及umi插件一键…...

降序子数组最大和算法分析

题目描述&#xff1a; Description 给你一个正整数组成的数组 nums &#xff0c;返回 nums 中一个 降序 子数组的最大可能元素和。子数组是数组中的一个连续数字序列。 已知子数组[numsl​,numsl1​,...,numsr−1​,numsr​]&#xff0c;若对所有 i&#xff08;l < i <…...