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
  • 缺点:一个页面都是有几千行的业务代码,页面极其混乱。维护成本高。

    <% System.out.println("hello happy"); %>

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 准备工作

  1. 下载

  2. 安装或者解压

  3. 了解配置文件和目录结构

  4. 这个东西的作用

3.2 安装tomocat

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

3.3 Tomcat启动和配置

直接解压到本地电脑目录,文件夹信息如下:

3.3.1 启动、关闭Tomcat

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

可能遇到的问题:
  1. Java环境变量没有配置
  2. 闪退问题:需要配置兼容性
  3. 乱码问题:配置文件设置

3.3.2 核心配置文件server.xml

修改端口

tomcat默认端口:8080

 
修改主机名

默认主机名:localhost=》127.0.0.1

默认项目位置:appbase


	    

        
        

        
        

      

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资源,就断开连接。
  • http2.0
    • http1.1:客户端可以与web服务器连接后,可以获得多个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

  1. 在javaweb开发找那个,需要使用大量的jar包,我们手动去导入;

  2. 如何能够让一个东西自动帮我导入和配置这个jar包

为此,maven诞生了

5.1 Maven项目架构管理工具

我们目前用来就是方便导入jar包的!

Maven的核心思想:约定大于配置

  • 有约束,不要去违反。

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

5.2 maven准备工作

  1. 下载,完成后解压即可;

    https://maven.apache.org/

  2. 解压后,了解配置和目录

5.3.1 核心配置文件settings.xml

<?xml version="1.0" encoding="UTF-8"?>

  
	D:\data\apache-maven-repository 
  	
      
    	org.codehaus.mojo
  	
  	
       
  	
  	
    
        
  	
  		 
                 
        
        
        
        
        
        
        		 
        
            Central
            https://repo1.maven.org/maven2
            central
        
        
             alimaven
             aliyun maven
            http://maven.aliyun.com/nexus/content/groups/public/ 
            central
        
   		
         
            alimaven
            aliyun maven
            http://maven.aliyun.com/nexus/content/repositories/central/
            central
        
    
      
       
    

  


镜像,方便下载使用,国内有maven镜像

5.3 环境变量配置

  • M2_HOME maven目录下的bin目录,springboot很多引用了这个地址
  • MAVEN_HOME maven的目录
  • 在path中配置 %MAVEN_HOME%\bin

配置完毕后重启cmd生效

5.4 配置阿里云mirror

  • 镜像:mirrors

    • 作用:加速我们的下载
  • 国内建议使用阿里云的镜像(不用原来的mvn库)


 alimaven
 aliyun maven
 http://maven.aliyun.com/nexus/content/groups/public/ 
 central

重要参数mirrorOf

最好不要 *,这要会拦截所有下载请求去当前mirror所在的远程服务器。

通过查看相关资料发现原来是mirrorOf配置引起的原因,详细配置如下:

* = everything
external:* = everything not on the localhost and not file based.
repo,repo1 = repo or repo1
*,!repo1 = everything except repo1
//例子:
*  //拦截所有请求
central //拦截所有请求central库的请求
*,!repo1   //拦截everything except repo1  

所以可以如下配置,pom文件中请求resp1的指向私库,而请求central的指向阿里云


    
        public
        resp1
        company repo
        http://maven.ccba.com:8081/content/groups/public/
    
    
        
        nexus-aliyun
        central
        central repo    
        http://maven.aliyun.com/nexus/content/groups/public
    


5.5 本地仓库

在本地的仓库(对应有远程的仓库)

D:\data\apache-maven-repository

5.6 在IDEA中使用Maven

  1. 启动IDEA

  2. 创建一个Maven项目

  3. 等待项目初始化完毕(如果是第一次使用maven可能会等待较长)

  4. 观察maven仓库中多了什么东西

  5. 确认Idea中的maven项目

    Idea项目创建成功后,需要确认一下

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

5.7 pom文件

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

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


        
            
                src/main/resources
                
                    **/*.properties
                    **/*.xml
                
                true
            
            
                src/main/java
                
                    **/*.properties
                    **/*.xml
                
                true
            
        
    

5.8 idea依赖查看

六、 IDEA修改项目文件夹属性

方式一:

方式二:

七、IDEA添加tomcat

解决警告问题:

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