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

news2024/9/27 17:25:03

 一、基本概念

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/jakartaee
                      https://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.coloradmin.cn/o/1920021.html

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

相关文章

基于YOLOV8的数粒机-农业应用辣椒种子计数计重双标质量解决方案

一:辣椒种子行业背景调查 中国辣椒年产量稳居世界第一,食辣人口超5亿。中国辣椒全球闻名,小辣椒长成大产业,带动全球食品行业腾飞。 在中国,“辣”是不少地方餐桌上的一大特色。从四川的麻辣火锅到湖南的剁椒鱼头再到陕西的油泼辣子面,由南到北,总有食客对辣有着独一份偏…

力扣-回溯法

何为回溯法&#xff1f; 在搜索到某一节点的时候&#xff0c;如果我们发现目前的节点&#xff08;及其子节点&#xff09;并不是需求目标时&#xff0c;我们回退到原来的节点继续搜索&#xff0c;并且把在目前节点修改的状态还原。 记住两个小诀窍&#xff0c;一是按引用传状态…

连接与隔离:Facebook在全球化背景下的影响力

在当今全球化的背景下&#xff0c;Facebook作为全球最大的社交网络平台&#xff0c;不仅连接了世界各地的人们&#xff0c;还在全球社会、经济和文化中发挥着深远的影响。本文将深入探讨Facebook在全球化进程中的作用&#xff0c;以及其对个体和社会之间连接与隔离的双重影响。…

【区块链农场】:农场游戏+游戏

我的酒坊是一款非常受玩家欢迎的经营手游,游戏中你需要合理经营一家酒厂,将其做大做强。通过制定合理的战略,例如新建厂房,并采用传统工艺制作,针对不同的人群研制多重口味。

Ubuntu与Windows通过WIFI与以太网口共享网络,Ubuntu与Windows相互ping通,但ping百度失败

Linux开发板&#xff08;正点原子阿尔法_IMX6U&#xff09;与Ubuntu的文件传输SCP 报错 SSH: no matching host key type found. Their offer: ssh-rsa-CSDN博客 前面的文章提到了如何将Ubuntu与Windows通过WIFI共享网络给以太网&#xff0c;从而实现Linux开发板、Ubuntu、Win…

Umi.js 项目中使用 Web Worker

1.配置 Umi.js 在 Umi.js 中&#xff0c;需要通过配置来扩展 Webpack 的功能。在项目根目录下修改 config/config.ts 文件&#xff1a; export default defineConfig({chainWebpack(config) {config.module.rule(worker).test(/\.worker\.ts$/).use(worker-loader).loader(wo…

常见网页问题解决

用edge浏览器打印功能时&#xff0c;出现瞬间或加载几秒后突然闪退情况&#xff0c;本来以为是浏览器出了问题&#xff0c;去重置设置也没有&#xff0c;后来又下载了Chrome浏览器&#xff0c;没想到还是一样&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;想着…

系统服务综合实验

实验需求&#xff1a; 现有主机 node01 和 node02&#xff0c;完成如下需求&#xff1a; 在 node01 主机上提供 DNS 和 WEB 服务dns 服务提供本实验所有主机名解析web服务提供 www.rhce.com 虚拟主机该虚拟主机的documentroot目录在 /nfs/rhce 目录该目录由 node02 主机提供的…

判断链表中是否有环(力扣141.环形链表)

这道题要用到快慢指针。 先解释一下什么是快慢指针。 快慢指针有两个指针&#xff0c;走得慢的是慢指针&#xff0c;走得快的是快指针。 在这道题&#xff0c;我们规定慢指针一次走一步&#xff0c;快指针一次走2步。 如果该链表有环&#xff0c;快慢指针最终会在环中相遇&a…

MySQL数据库基本操作-DDL和DML

1. DDL解释 DDL(Data Definition Language)&#xff0c;数据定义语言&#xff0c;该语言部分包括以下内容&#xff1a; 对数据库的常用操作对表结构的常用操作修改表结构 2. 对数据库的常用操作 功能SQL查看所有的数据库show databases&#xff1b;查看有印象的数据库show d…

02. 存储引擎

1. 前言 在校招或者社招面试中&#xff0c;无论你是 Java 后端、Cpp 后端、Python 后端&#xff0c;面试官都会详细地考察各种语法细节、框架知识&#xff0c;但是大多数候选人入职之后&#xff0c;都会体会到 "面试造火箭&#xff0c;上班拧螺丝"。面试时我们熟悉各…

Python | Leetcode Python题解之第229题多数元素II

题目&#xff1a; 题解&#xff1a; class Solution:def majorityElement(self, nums: List[int]) -> List[int]:cnt {}ans []for v in nums:if v in cnt:cnt[v] 1else:cnt[v] 1for item in cnt.keys():if cnt[item] > len(nums)//3:ans.append(item)return ans

C#绘制阻抗圆图初步

阻抗圆图&#xff0c;或者叫史密斯图&#xff0c;是无线电设计方面用的&#xff1b; 基本的阻抗圆图如下&#xff0c; 下面尝试用C#能不能画一下&#xff1b; 先在网上找一个画坐标的C#类&#xff0c;它的效果如下&#xff1b; 自己再增加一个函数&#xff0c;可以绘制中心在…

【JSP+Servlet+Maven】——优质外卖订餐系统之概论部分

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大二学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…

PPTP、L2TP、IPSec、IPS 有什么区别?

随着互联网的发展&#xff0c;保护网络通信的安全越来越重要。PPTP、L2TP、IPSec、IPS是常见的网络安全协议和技术&#xff0c;在保护网络通信安全方面发挥着不同的作用和特点。下面介绍PPTP、L2TP、IPSec、IPS之间的区别。 点对点隧道协议&#xff08;PPTP&#xff09;是一种用…

使用大模型进行SQL迁移的实践总结

在现代化的项目管理和运维工作中&#xff0c;利用大模型&#xff08;如ChatGPT&#xff09;处理复杂任务已成为一种高效手段。近期我们在一个项目中尝试利用大模型将MySQL导出的SQL语句迁移为达梦信创数据库格式&#xff0c;通过几轮操作&#xff0c;我们深刻体会到提示词工程的…

C# 串口数据转网口实现空气风速风向检测

1.窗体搭建 添加time(定时器) 因为需要风速和风向自动刷新 2.进行网口空气检测 ①服务器连接按钮 // 连接按钮private void button1_Click(object sender, EventArgs e){if (button1.Text "连接"){ConnectSocke();// 连接服务器}else{CloseSocket(); // 关闭服务器…

基于html开发的在线网址导航在线工具箱源码

基于html开发的在线网址导航在线工具箱源码&#xff0c;将全部文件复制到服务器&#xff0c;入口文件是index.html 如需修改网址&#xff0c;可修改index.html 如需修改关于页面&#xff0c;可修改about里面的index页面 源码下载&#xff1a;https://download.csdn.net/down…

基于YOLOV8的数粒机视觉计数解决方案

一:行业背景调查 随着全球市场商品大规模工业化生产技术的大规模发展,其中对各类产品生产包装以及原材料供给有了更多精准计数的要求,这些要求主要分布在一些产量较大,产品颗粒较小,单个成本较高的商品中,近几年主要从医药包装领域和接插件包装领域开始对产品包装中的计…

【git】:初识Git 和 Git 的安装

目录 学习 Git 的目标 Git 安装 Linux-centos Linux-ubuntu Windows 学习 Git 的目标 技术目标 掌握 Git 企业级应用&#xff0c;深刻理解Git操作过程与操作原理&#xff0c;理解工作区&#xff0c;暂存区&#xff0c;版本库的含义 掌握 Git 版本管理&#xff0c;自由进⾏…