JavaWeb(一:基础知识和环境搭建)

 一、基本概念

1.前言

JavaWeb:在Java中,动态web资源开发网页的技术。

web应用分两种:静态web资源和动态web资源

Ⅰ. 静态web资源(如html 页面):

        指web页面中的数据始终是不变。

        所有用户看到都是同一个页面。

        技术:HTML、CSS。

Ⅱ. 动态web资源

        指web页面中的浏览的数据是由服务器提供的。

        所有用户看到都是同一个页面。

        技术:JSP/Servlet、ASP、PHP等。

2.web应用程序

web应用程序:可以提供浏览器访问的程序。

a.html、b.html等多个web资源,这些web资源可以被外界访问,对外界提供服务。

这个统一的web资源会被放在同一个文件夹下,web应用程序—>Tomcat:服务器

web应用程序编写完毕后,若想提供给外界访问:需要一个服务器来统一管理。

3.静态web

.htm,.html,这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取。

 缺点:

① Web页面无法动态更新,所有用户看到的都是同一个页面。

        轮播图,点击特效:伪动态(js)

② 无法和数据库进行交互(数据无法持久化,用户无法交互)。

4.动态web

页面会动态展示:Web的页面展示的效果因人而异。

缺点:假如服务器的动态web资源出现了错误,需要重新编写后台程序,重新发布(停机维护)。

优点:

① Web页面可以动态更新

② 可以和数据库进行交互(数据持久化:用户信息,商品信息)

二、web服务器

1.技术详解

① ASP

微软:国内最早流行的就是ASP;

在HTML 中嵌入VB的脚本,ASP + COM;

在ASP开发中,基本一个页面都有几千行的业务代码,页面极其混乱 --> 维护成本高

C# 编写 + iis服务器 

<h1><h2><h3><h4><%System.out.println("hello");%></h4></h3></h2>
</h1>

② php

PHP开发速度很快,功能很强大,跨平台,代码很简单

无法承载大访问量(局限性)

③ JSP/Servlet

sun公司主推的B/S架构(B/S:浏览器和服务器        C/S:客户端和服务器)

基于Java语言,可以使用很多用开源组件(大多数由 java 编写);

可以承载三高问题(高可用,高并发,高性能)带来的影响;

语法像ASP,让ASP 可以快速转成 JSP,加强市场强度。

2.Tomcat服务器

Tomcat 技术先进、性能稳定,而且免费,实际上运行JSP 页面和Servlet。

(1)安装Tomcat

官网:https://tomcat.apache.org

(2)Tomcat启动 

文件夹作用:

 启动 / 关闭 Tomcat:

访问测试:http://localhost:8080

 (3)Tomcat配置

① 可以配置启动的端口号

        Tomcat的默认端口号是8080

        MySQL:3306

        http:80

        https:443

<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"maxParameterCount="1000"/>

② 可以配置主机的名称

        默认主机名为:localhost --> 127.0.0.1

        默认网站应用存放位置为:webapps

<Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true">

Test:网站是如何进行访问的?

① 输入一个域名,回车

② 检查本机的 host 配置文件内是否有这个域名的映射;

有:直接返回对应的IP地址,这个地址中,有我们需要访问的web程序,可以直接访问

没有:去DNS服务器找,找到的话就返回,找不到就返回找不到。

(4)发布一个web网站 

将写好的网站文件放到服务器 (Tomcat) 中指定的web应用的文件夹 (webapps) 下,就可以访问了

网站应该有的结构:

— webapps : Tomcat服务器的web目录- ROOT- xxx: 网站的目录名- WEB-INF- classes : java程序- lib : web应用所依赖的jar包- web.xml : 网站配置文件- index.html 默认的首页- static- css- style.css- js- img- ……

三、Http

1.定义

HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。

Http:

        文本:html,字符串,~……

        超文本:图片,音乐,视频,定位,地图……

        端口:80

Https(安全的):

        端口:443

2.两个时代

① http1.0

        HTTP/1.0:客户端可以与web服务器连接后,只能获取一个web资源,然后就断开连接了。

② http2.0

        HTTP/2.0:客户端可以与web服务器连接,可以获得多个web资源

3.http请求

客户端 --> 发请求(request) --> 服务器

比如:访问百度

 ① 请求行

// 请求地址
Request URL: https://www.baidu.com/
// 请求方法
Request Method: GET
// 状态代码
Status Code: 200 OK
// 远程地址 + 端口
Remote Address: 14.215.177.38:443

请求方式:Get,Post,HEAD,DELETE,PUT…

        GET:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容。

                        不安全,但高效。

        POST:请求能够携带的参数无限制,大小无限制,不会在浏览器的URL地址栏显示数据内容

                        安全,但不高效。

② 消息头(请求头)

// 告诉浏览器,它所支持的数据类型
Accept: text/html
// 告诉浏览器,它支持哪种编码格式:GBK,UTF-8,GB2312,ISO8859-1
Accept-Encoding: gzip, deflate, br
// 告诉浏览器,它的语言环境
Accept-Language: zh-CN,zh;q=0.9
// 缓存控制
Cache-Control: max-age=0
// 告诉浏览器,请求完成是断开还是保持
Connection: keep-alive

4.http响应

服务器 --> 响应(response)--> 客户端

// 缓存控制
Cache-Control: no-cache
// 保持连接(http1.1)
Connection: keep-alive
// 文本编码类型
Content-Encoding: gzip
// 响应类型
Content-Type: text/html;charset=utf-8

① 响应体

Accept: 告诉浏览器,它所支持的数据类型
Accept-Encoding: 告诉浏览器,它支持哪种编码格式:GBK,UTF-8,GB2312,ISO8859-1
Accept-Language: 告诉浏览器,它的语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完成是断开还是保持
HOST:主机
Refresh:告诉客户端,多久刷新一次
Location:让网页重新定位

② 响应状态码

200:请求响应成功

3xx:请求重定向(304等等)

4xx:找不到资源(404等等)

5xx:服务器代码错误(500代码错误,502网关错误)

四、Maven

在java开发中,需要使用大量的 jar 包,这需要我们手动导入。

1.Maven项目架构管理工具

Maven的作用:自动导入和配置 jar 包

Maven的核心思想:约定大于配置(有约束,不要去违反)。

Maven 会规定好该如何去编写我们的Java代码,必须要按照这个规则来。

2.下载安装Maven

官网:https://maven.apache.org

 下载完成后,解压即可。

3.配置环境变量

在环境变量中,配置以下配置:

        M2_HOME:maven目录下的 bin 目录(目前用不到,后续 spring 会用到)

        MAVEN_HOME:maven 的目录

        在系统的 path 中配置: %MAVEN_HOME%\bin

在 cmd 中输入:mvn -version,测试是否配置成功。

4.阿里云镜像 

镜像:mirrors

作用:加速我们的下载(国内建议使用阿里云的镜像)

<mirror> <id>aliyunmaven</id><mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>https://maven.aliyun.com/repository/public</url>
</mirror>

 5.本地仓库

建立一个本地仓库

 同样在 setting.xml 中对应地方添加如下代码:

<localRepository>D:\apache-maven-3.9.8\maven-repo</localRepository>

6.在IDEA中使用本地仓库 

① 启动 IDEA,创建一个新项目

②  创建一个 maven 项目

③ IDEA中的 maven 设置 

④ 等待项目初始化完毕

⑤  创建文件夹,并标记

⑥ IDEA中配置 Tomcat

⑦ 将web.xm中替换为6.0版本,保持和 Tomcat 一致。

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaeehttps://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"version="6.0"metadata-complete="true">
</web-app>  

7.pom文件 

pom.xml是Maven的核心配置文件

Maven由于它的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题。

解决方案:在build中配置 resources,来防止我们资源导出失败的问题。

<!--maven版本和头文件-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><!--  之前配置的GAV --><groupId>com.mihoyo</groupId><artifactId>javaweb</artifactId><version>1.0-SNAPSHOT</version><!--  package:项目的打包方式jar:java应用war:javaWeb应用--><packaging>war</packaging><!-- 项目依赖 --><dependencies><!-- 具体依赖的jar包配置文件   --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><!-- maven的高级之处在于:会自动帮你导入这个jar包所依赖的其他jar包   --><!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.1.10</version></dependency></dependencies><!--  在build中配置 resources,来防止我们资源导出失败的问题  --><build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources></build>
</project>

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

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

相关文章

python编程实例 输出两个数之间的素数

#输出两个数之间有多少素数 import math mint(input("开始&#xff1a;")) nint(input("结束&#xff1a;")) for i in range(m,n1):for j in range(2,int(math.sqrt(i))1):if i%j0:breakif(jint(math.sqrt(i))):print(str(i),"是一个素数")

DP(2) | Java | LeetCode 62, 63, 343, 96 做题总结(96 未完)

62.不同路径 我的代码&#xff08;报错&#xff09; 写的过程中感到很迷惑的点&#xff1a;①二维数组和这道题目的对应弄不清除&#xff0c;m n的初始化 是 dp[m][n] 还是 dp[n][m] ② class Solution {public int uniquePaths(int m, int n) {int[][]dp new int[m1][n1];d…

单目3D和bev综述

文章目录 SOTA2D 检测单目3d检测单目bev&#xff0c;一般是多目&#xff0c;小鹅通3d bev cam范式Transformer attention is all you need 2017ViT vision transformer ICLR 2021googleDETR 2020DETR3D 2021PETR 2022bevformerLSSbevdetcaddn指标 mAP NDS标注&#xff1a;基于点…

利用js实现图片压缩功能

图片压缩在众多应用场景中扮演着至关重要的角色&#xff0c;尤其是在客户端上传图片时。原始图片往往体积庞大&#xff0c;直接上传不仅消耗大量带宽资源&#xff0c;还可能导致上传速度缓慢&#xff0c;严重影响用户体验。因此&#xff0c;在图片上传至服务器前对其进行压缩处…

嵌入式开发过程中,常见报错以及解决方法

编写不易&#xff0c;仅供学习&#xff0c;参考谢谢&#xff0c;还望理解。 #常见报错 文件最后一行没有新行 翻译&#xff1a;文件的最后一行结束时没有新行 解决方法&#xff1a;定位到&#xff0c;提示报错的 .h 文件 报错行 &#xff0c;加上一个新行 函数定义时与官方提…

网信大数据信用报告查询怎么查?网信大数据有什么作用?

随着互联网的快速发展&#xff0c;大数据技术已经广泛应用于各行各业。其中&#xff0c;网信大数据信用报告查询成为了许多人关注的焦点。那么&#xff0c;如何查询网信大数据信用报告呢?网信大数据又有哪些作用呢?本文将为您一一解答。 一、如何查询网信大数据信用报告? 要…

NodeJS校园快递智能互助平台-计算机毕业设计源码58554

摘 要 随着校园人口的增加和生活节奏的加快&#xff0c;校园快递成为一个重要的服务需求。然而&#xff0c;传统的校园快递方式存在一些问题&#xff0c;例如无法满足快速和高效的需求&#xff0c;易发生丢失或损坏的情况&#xff0c;同时也给快递人员和用户带来不便。因此&am…

C++ 实现图书馆资料管理系统

1、问题描述 &#xff1a; 图书馆中的资料很多&#xff0c;如果能分类对其资料流通进行管理&#xff0c;将会带来很多方 便&#xff0c;因此需要有一个媒体库管理系统。 图书馆共有三大类物品资料&#xff1a;图书、视频光盘、图画。 这三类物品共同具有的属性有&#xff1a;编…

「51媒体」制定《媒体邀约名单》,几点建议

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传加速季&#xff0c;100万补贴享不停&#xff0c;一手媒体资源&#xff0c;全国100城线下落地执行。详情请联系胡老师。 当制定媒体邀约名单时&#xff0c;以下是一些建议&#x…

海事无人机解决方案

海事巡察 海事巡察现状 巡查效率低下&#xff0c;存在视野盲区&#xff0c;耗时长&#xff0c;人力成本高。 海事的职能 统一管理水上交通安全和防治船舶污染。 管理通航秩序、通航环境。负责水域的划定和监督管理&#xff0c;维护水 上交通秩序&#xff1b;核定船舶靠泊安…

日志自动分析-操作系统-GscanLogonTracerf8x

&#x1f3bc;个人主页&#xff1a;金灰 &#x1f60e;作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ &#x1f34a;易编橙终身成长社群&#…

Vue 中的 scoped 和 /deep/ 深度选择器

Vue在组件里写 css 给 <style> 标签加上 scoped &#xff0c;比如&#xff1a; <style lang"less" scoped> &#xff0c;这样的 css 就是局部的&#xff0c;不会影响其他组件。 假设引入了一个子组件&#xff0c;并希望在组件中修改子组件的样式&#x…

阿里云Linux中安装MySQL,并使用navicat连接以及报错解决

首先查询是否安装MySQL // linux 使用yum安装或者rpm安装。(就是一个安装工具类似于applStore&#xff0c;brew不必在意) // 区别&#xff1a;yum会自动安装你要安装的东西的其他依赖&#xff0c;rpm不会但会提示你需要安装的东西&#xff0c;比较麻烦&#xff0c;所以采用yum安…

Camera Raw:首选项 - 常规

Camera Raw 首选项中的常规 General选项卡可以为 Camera Raw 配置一些基础和常用的设置&#xff0c;这些设置可能影响界面的外观、工作流程的便利性和使用体验。 外观 Appearance 颜色主题 Color Theme 可以选择不同的界面颜色主题。 包括&#xff1a;默认值 Default、最亮 Lig…

023-GeoGebra中级篇-几何对象之圆锥曲线

圆锥曲线是解析几何中的重要部分&#xff0c;它们包括椭圆、双曲线、抛物线和圆。通过使用预先定义的变量&#xff08;如数值、点和向量&#xff09;&#xff0c;我们可以动态地构建这些曲线的方程&#xff0c;并观察它们如何随变量的变化而变化。本文将介绍如何通过定义变量来…

如何基于大模型开发应用接口

一、前言 针对自然语言处理方向&#xff0c;以前要开发一个情感分析、命名实体识别之列的应用是非常麻烦的&#xff0c;我们需要完成收集数据、清理数据、构建模型、训练模型、调优模型等一系列操作&#xff0c;每一步都非常耗时。如今大语言模型&#xff08;LLM&#xff09;的…

Hive的分区表分桶表

1.分区表&#xff1a; 是Hive中的一种表类型&#xff0c;通过将表中的数据划分为多个子集&#xff08;分区&#xff09;&#xff0c;每个分区对应表中的某个特定的列值&#xff0c;可以提高查询性能和管理数据的效率。分区表的每个分区存储在单独的目录中&#xff0c;分区的定义…

[Flask笔记]一个完整的Flask程序

前面讲过Flask是一个轻量级Web开发框架&#xff0c;为什么说是轻量级的呢&#xff0c;因为它用短短几行代码就能运行起来&#xff0c;我们一起来看看最简单的flask框架。 安装Flask 在看Flask框架之前我们需要先安装flask模块&#xff0c;学过python的肯定都知道&#xff0c;…

SQL构造一个触发器audit_log

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 构造一个触发…

TPM开启确认

TPM 2.0在系统中开启的确认 方法一 &#xff1a;鼠标右击开始菜单-运行&#xff08;或按下键盘的WinR键&#xff09;&#xff0c;输入tpm.msc&#xff0c;然后 回车 弹出窗口 方法二&#xff1a;通过“设置>权限和安全>Windows安全中心>设备安全性” 点击Devices s…