web基础1-web基本概念、IDEA、tomcat和maven
web入门1-web基本概念、IDEA、tomcat和maven
一、基本概念
二、web服务器
2.1 三种技术
ASP
微软:国内
最早流行的就是ASP (JSP都是后面出来的)
- 在HTML中嵌入了VB脚本,ASP+COM
 - 在ASP开发汇总,基本一个页面,,类似于jsp
 - 语言用的C#,服务区用的IIS
 
- 
缺点:一个页面都是有几千行的业务代码,页面极其混乱。维护成本高。
<h1> <h1> <h1> <h1> <% System.out.println("hello happy"); %> </h1> </h1> </h1> <h1> </h1> </h1> 
PHP
- 优点:PHP开发速度很快,功能很强大,跨平台,代码很简单。
 - 缺点:无法承载大访问量的情况,所以又局限性。
 
JSP/servlet
JSP本质上是servlet,是sun公司主推的B/S架构
优点:
- 基于JAVA语言的,所有的大公司,或是一些开源的组件,都是用java写的。
 - 可以承载三高问题带来的影响。
 - 语法像ASP,ASP=》JSP,可以吸引最早的ASP程序员来,加强市场竞争度。
 
2.2 web服务器
服务器是一种被动的操作,用来处理用户的一些
请求和给用户一些响应信息
IIS
微软的:ASP ,微软自带的web服务器
tomcat
Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,最新的Servelet和JSP规范总是能在Tomcat中得到体现,因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web应用服务器
Tomcat服务器是一个免费的开源代码的web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户 不是很多的场合下普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应HTML页面的访问请求。实际上Tomcat是Apache服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。
诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servelet。另外,Tomcat和IIS等服务器一样,具有处理HTML页面的功能,另外它还是一个Serlet和JSP容器,独立的Servelet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
Weblogic
三、使用tomcat
3.1 准备工作
- 
下载
 - 
安装或者解压
 - 
了解配置文件和目录结构
 - 
这个东西的作用
 
3.2 安装tomocat
tomcat官网https://tomcat.apache.org/
3.3 Tomcat启动和配置
直接解压到本地电脑目录,文件夹信息如下:

3.3.1 启动、关闭Tomcat

可能遇到的问题:
- Java环境变量没有配置
 - 闪退问题:需要配置兼容性
 - 乱码问题:配置文件设置
 
3.3.2 核心配置文件server.xml
修改端口
tomcat默认端口:8080
 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
修改主机名
默认主机名:localhost=》127.0.0.1
默认项目位置:appbase
</Host>
	    <Host name="www.happy.com"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->
        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
      </Host>
3.4 Tomcat发布一个网站
简要步骤
复制一个目录,随便重命名下,如下:
- 将自己写的网站,放到tomcat指定的web应用的文件夹webapps下,就可以访问了。
 

打开创建一个index.html

网站结构:
网站应有的结构:
- webapps  //Tomcat服务器的web目录
    -ROOT
    -happydemo   //网站的目录名
    	-WEB-INF
    		-classess //java程序
    		-lib      //web应用所依赖的jar包
    		-web.xml  //网站配置文件
    	-index.html   //默认的首页
    	-static
    		-css
    			-style.css
    		-js
    		-img
四、HTTP
4.1 是什么是HTTP
HTTP(超文本传输协议)是一个简单的请求-响应协议。它通常运行在TCP之上。
- 文本:html,字符串,
 - 超文本:图片,音乐,视频,定位,地图...
 - 80
 
它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以及ASCII码形式给出:而消息内容则具有一个类似MIMI的格式。这个简单模型是早期WEB成功之臣,因为它是的开发和部署是那么的直接了当。
https:加了一个s安全的
- 443
 
4.2 两个时代
- http1.0
- http/1.0:客户端可以与web服务器连接后,只能获得
一个web资源,就断开连接。 
 - http/1.0:客户端可以与web服务器连接后,只能获得
 - http2.0
- http1.1:客户端可以与web服务器连接后,可以获得
多个web资源。 
 - http1.1:客户端可以与web服务器连接后,可以获得
 
4.3 http请求
- 客户端=》发请求=》服务器
 
Request URL: https://www.baidu.com/    //请求地址
Request Method: GET    //get方法/post方法
Status Code: 200 OK		//状态码:200
Remote Address: 103.235.46.39:443		//IP地址
Referrer Policy: strict-origin-when-cross-origin
1、请求行
- 请求行中的请求方式:get
 - 请求方式:get、post、delete、put
- get:请求能够携带的参数比较少,大小有限制。会在浏览器的URL地址栏显示数据内容,不安全,但高效
 - post:请求携带的参数和内容大小没有限制,在body内,不会在浏览器显示数据内容,相对安全,但不高效。
 
 
2、请求头
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Host: 127.0.0.1:8080
If-Modified-Since: Sat, 16 Apr 2022 03:26:37 GMT
If-None-Match: W/"24-1650079597944"
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36
4.4 http响应
- 服务器=》返回响应=》客户端
 
1、响应行(状态码)
200:请求响应成功 200
3**:请求重定向
- 重定向:你重新到我给你的位置去:
 
4XX:找不到资源 404
- 资源不存在
 
5XX:服务器代码错误:500 502网关错误
2、响应头
Bdpagetype: 2		
Bdqid: 0xad449e7700047286
Cache-Control: private		//缓存控制
Connection: keep-alive		//连接,保持活着,走的http1.1
Content-Encoding: gzip		//编码
Content-Type: text/html;charset=utf-8	//字符类型
Date: Sat, 16 Apr 2022 04:10:55 GMT
Expires: Sat, 16 Apr 2022 04:10:55 GMT
Server: BWS/1.1
Set-Cookie: BDSVRTM=402; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=35836_36177_31660_34813_36167_34584_36122_36125_36260_26350_36103_36061; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Traceid: 1650082255061298919412485278300916445830
Transfer-Encoding: chunked
X-Frame-Options: sameorigin
X-Ua-Compatible: IE=Edge,chrome=1
五、Maven
为什么需要Maven
- 
在javaweb开发找那个,需要使用大量的jar包,我们手动去导入;
 - 
如何能够让一个东西自动帮我导入和配置这个jar包
 
为此,maven诞生了
5.1 Maven项目架构管理工具
我们目前用来就是方便导入jar包的!
Maven的核心思想:
约定大于配置
- 
有约束,不要去违反。
 - 
Maven会规定好你该如何去编写我们的Java代码,必须按照这个规范来。
 
5.2 maven准备工作
- 
下载,完成后解压即可;

 - 
解压后,了解配置和目录
 

5.3.1 核心配置文件settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
  
	<localRepository>D:\data\apache-maven-repository</localRepository> 
  	
    <pluginGroups>  
    	<pluginGroup>org.codehaus.mojo</pluginGroup>
  	</pluginGroups>
  	
    <proxies>   
  	</proxies>
  	
    <servers>
        <!-- server
         | Specifies the authentication information to use when connecting to a particular server, identified by
         | a unique name within the system (referred to by the 'id' attribute below).
         |
         | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
         |       used together.
         |
        <server>
          <id>deploymentRepo</id>
          <username>repouser</username>
          <password>repopwd</password>
        </server>
        -->
  	</servers>
  	<mirrors>	 
                 <!-- maven官方镜像 -->
        <!--      <mirror>-->
        <!--       <id>mirrorId</id>-->
        <!--       <mirrorOf>central</mirrorOf>-->
        <!--       <name>Human Readable Name </name>-->
        <!--       <url>http://repo1.maven.org/maven2/</url>-->
        <!--      </mirror>-->
        <!-- 阿里云镜像1 -->		 
        <mirror>
            <id>Central</id>
            <url>https://repo1.maven.org/maven2</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
        <mirror>
             <id>alimaven</id>
             <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
            <mirrorOf>central</mirrorOf>
        </mirror>
   		<!-- 阿里云镜像2 -->
        <mirror> 
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
      
    <profiles>   
    </profiles>
  <!-- activeProfiles
   | List of profiles that are active for all builds.
   |
  <activeProfiles>
    <activeProfile>alwaysActiveProfile</activeProfile>
    <activeProfile>anotherAlwaysActiveProfile</activeProfile>
  </activeProfiles>
  -->
</settings>
<mirrors> 镜像,方便下载使用,国内有maven镜像
5.3 环境变量配置
- M2_HOME maven目录下的bin目录,springboot很多引用了这个地址
 - MAVEN_HOME maven的目录
 - 在path中配置 %MAVEN_HOME%\bin
 
配置完毕后重启cmd生效

5.4 配置阿里云mirror
- 
镜像:mirrors
- 作用:加速我们的下载
 
 - 
国内建议使用阿里云的镜像(不用原来的mvn库)
 
<mirror>
 <id>alimaven</id>
 <name>aliyun maven</name>
 <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
 <mirrorOf>central</mirrorOf>
</mirror>
重要参数mirrorOf
最好不要 <mirrorOf>*</mirrorOf>,这要会拦截所有下载请求去当前mirror所在的远程服务器。
通过查看相关资料发现原来是mirrorOf配置引起的原因,详细配置如下:
* = everything
external:* = everything not on the localhost and not file based.
repo,repo1 = repo or repo1
*,!repo1 = everything except repo1
//例子:
<mirrorOf>*</mirrorOf>  //拦截所有请求
<mirrorOf>central</mirrorOf> //拦截所有请求central库的请求
<mirrorOf>*,!repo1</mirrorOf>   //拦截everything except repo1  
所以可以如下配置,pom文件中请求resp1的指向私库,而请求central的指向阿里云
<mirrors>
    <mirror>
        <id>public</id>
        <mirrorOf>resp1</mirrorOf>
        <name>company repo</name>
        <url>http://maven.ccba.com:8081/content/groups/public/</url>
    </mirror>
    <mirror>
        <!--aliyun mirror reponstory -->
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>central repo</name>    
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
</mirrors>
5.5 本地仓库
在本地的仓库(对应有远程的仓库)
<localRepository>D:\data\apache-maven-repository</localRepository>
5.6 在IDEA中使用Maven
- 
启动IDEA
 - 
创建一个Maven项目
 - 
等待项目初始化完毕(如果是第一次使用maven可能会等待较长)
 - 
观察maven仓库中多了什么东西
 - 
确认Idea中的maven项目
Idea项目创建成功后,需要确认一下
 

一个纯净的maven项目就创建好了

5.7 pom文件

在Maven项目中,资源配置文件默认是放在resources目录下的。但有时我们在编写项目时,配置文件可能会被我们放置的别的目录,Maven由于它的
约定大于配置,所以默认的maven项目在构建编译时不会把我们其他目录下的配置文件导出到target目录中,从而导致配置文件无法导出或者生效的问题。解决方案:在项目的pom.xml文件中手动配置资源过滤,让它把src/main/java目录下的.properties和.xml文件也能够被导出。
解决方案:在build中配置resources.来防止我们资源导出失败的问题
<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
5.8 idea依赖查看

六、 IDEA修改项目文件夹属性
方式一:

方式二:

七、IDEA添加tomcat


解决警告问题:
为什么会有这个问题:现在并没有找到项目artifact,我们访问一个网站,需要指定一个web项目的原始文件夹。然后将这个文件夹发布到tomcat目录,并设置项目访问context。



                
            
        
浙公网安备 33010602011771号