Javaweb学习笔记!

Javaweb学习笔记!

观看狂神学java javaweb入门到实战学习笔记!

1. 基本概念

1.1 前言

web开发:

  • 静态web
    1. html css
    2. 提供给所有人看的数据始终不会变化!
  • 动态web
    1. 提供给所有人看的数据始终会发生变化,每个人在不同时期,不同地点看到的信息各不相同。
    2. 技术栈:JSP/servlet,ASP,PHP

在Java中,动态web资源开发的技术统称为javaweb

1.2 web应用程序

可以供浏览器访问的程序

  • 多个web资源可以被外界访问,对外提供服务
  • 能访问到的任何一个页面,都存在这个世界某一个角落的计算机上
  • URL
  • 这个统一的web资源会放在同一个文件夹下,web应用程序–>Tomcat:服务器
  • 一个web应用程序由多部分组成(静态web,动态web)
    1. html ,css,js
    2. jsp,servlet
    3. java程序
    4. jar包
    5. 配置文件(Properties)

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

1.3 静态web

在这里插入图片描述

1.4 动态web

  • 优点:

    1. 页面可以动态更新,所有用户看到的都不是同一个页面
    2. 可以和数据库交互(数据持久化,不至于数据丢失!)
  • 缺点:

    假如服务器的动态web资源出现错误,我们需要重新编写后台程序,重新发布!

在这里插入图片描述

2. web服务器

2.1 技术支持

**ASP:**国内最早流行的就是ASP(微软) 原理:C#

PHP:

  1. 开发速度快,功能很强大,跨平台,代码很简单
  2. 无法承载大的访问量(局限性)

JSP/Servlet:

  • B/S:浏览器和服务器
  • C/S:客户端和服务器
    1. sun公司主推的B/S架构
    2. 基于java语言
    3. 可以承载三高问题带来的影响

2.2 网络服务器

服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息!

Tomcat

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。最新的Servlet 和JSP 规范能在Tomcat 中得到体现,Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

3. Tomcat

3.1 安装Tomcat

  1. 官网下载:http://tomcat.apache.org/
    在这里插入图片描述

  2. 解压

在这里插入图片描述

3.2 启动和配置

  1. 文件夹

在这里插入图片描述

  1. 启动和关闭

    startup.sh

    startup.bat

在这里插入图片描述

访问测试:

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

开启后可以访问:

在这里插入图片描述

关闭则不可以:
在这里插入图片描述

可能遇到的问题:

  • Java 环境变量没有配置导致闪退
  • 乱码问题:可在配置文件中配置
  • 闪退问题:需要配置兼容性

3.3 配置文件

Servlet 核心配置文件目录如下:

在这里插入图片描述

可以配置启动的端口号

  • tomcat的默认端口号为:8080
  • mysql:3306
  • http:80
  • https:443

在这里插入图片描述

修改后:
在这里插入图片描述

可配置主机名称

  • 默认的主机名为:localhost–>127.0.0.1
  • 默认网站应用存放的位置为:webapps

修改后:
在这里插入图片描述

修改后重启Tomcat,找不到服务器!

在系统文件夹:

在这里插入图片描述

新增一个映射:

在这里插入图片描述

可以了:(地址一定要输入正确!)

在这里插入图片描述

3.4 面试题

谈谈怎样访问一个网站

  1. 在浏览器输入一个域名,回车;

  2. 本机查看 C:\Windows\System32\drivers\etc\hosts 配置文件是否有相应域名的映射。

    case1: 若有,则直接映射到对应的 IP 地址,进行访问。

    case2: 若无,则去 DNS 服务器上查找对应的 IP ,找到就返回相应的 IP,找不到就不返回。

在这里插入图片描述

3.5 发布一个网站

网站程序结构:

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

4. HTTP

4.1 Http简介

超文本传输协议,是一个简单的请求,响应协议,通常运行在TCP之上!

  • 文本:html,字符串
  • 超文本:图片,音乐,视频,定位,地图…
  • 默认端口:80

**Https:**安全的

  • 默认端口:443

两个时代

  • HTTP/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接(http/1.0)
  • HTTP/2.0:客户端可以与web服务器连接后,可以获得多个web资源(http/1.1)

4.3 HTTP请求

  • 客户端-发请求(Request)—服务器

  • 百度:

    Request URL:https://www.baidu.com/   请求地址
    Request Method:GET    get方法/post方法
    Status Code:200 OK    状态码:200
    Remote(远程) Address:14.215.177.39:443
        
    Accept:text/html  
    Accept-Encoding:gzip, deflate, br
    Accept-Language:zh-CN,zh;q=0.9    语言
    Cache-Control:max-age=0
    Connection:keep-alive
    
1. 请求行
  1. 请求行中的方式:get

  2. 请求方式:get post,HEAD,DELETE,PUT,TRACT…

    get:请求能够携带的参数比较少,大小有限制,会在浏览区显示数据,不安全,但高效。

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

    ​ 但不高效

2. 消息头
Accept:告诉浏览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式  GBK   UTF-8   GB2312  ISO8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机..../.

4.4 HTTP响应

  • 服务器–响应–客户端

  • 百度:

    Cache-Control:private    缓存控制
    Connection:Keep-Alive    连接
    Content-Encoding:gzip    编码
    Content-Type:text/html   类型  
    
1. 响应体
Accept:告诉浏览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式  GBK   UTF-8   GB2312  ISO8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机..../.
Refresh:告诉客户端,多久刷新一次;
Location:让网页重新定位;
2、响应状态码(重要)

200:请求响应成功200
3xx:请求重定向

  • 重定向:你重新到我给你新位置去;

4xx:找不到资源404·资源不存在;
5xx:服务器代码错误 500 502:网关错误

常见面试题:
当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?

  1. 域名解析
  2. 发起TCP的三次握手
  3. 建立起TCP连接后发起http请求
  4. 服务器响应http请求,浏览器得到html代码
  5. 浏览器解析html代码,并请求html代码中的资源(css JavaScript 图片)
  6. 浏览器对页面进行渲染呈现

在我们输入网址按下回车后,DNS服务器会通过当前网址解析这一网址的ip;在查找到IP之后,浏览器会向服务器发起一个tcp连接请求,此请求包含三次握手,如下:
第一次握手:建立链接时,客户端浏览器会发送syn包到服务器,并进入SYS_SENT状态,等待服务器的确认;

第二次握手:服务器收到syn包后,必须确认客户端的syn,同时之间发送一个ack包,即是syn加ack包,此时服务器进入SYN_RECV状态,此时服务器被动打开后,接收到客户端的syn并且发送了ack时状态;

第三次握手:客户端接收到服务器的syn+ack包后,给服务器发送确认包ack,包发送完毕之后,客户端和服务器端进入ESTABLISHED(tcp连接成功)状态,完成了第三次握手。
当三次握手结束后客户端和服务器端就建立好了连接,此时tcp协议断开,开始访问服务器下的默认index.html页面,并调用该访问的资源文件,展示相应的内容

5.Maven

前言

  1. 在Javaweb开发中,需要使用大量的jar包,我们手动去导入;
  2. 如何能够让一个东西自动帮我导入和配置这个jar包。

5.1 Maven项目架构管理工具

目前用来就是方便导入jar包的!
Maven的核心思想约定大于配置

  • 有约束,不要去违反。

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

5.2 下载安装Maven

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

在这里插入图片描述

5.3配置环境变量

在我们的系统环境变量中配置如下配置:

  • M2_HOME maven目录下的bin目录

  • MAVEN_HOME maven的目录

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

在这里插入图片描述

5.4阿里云镜像

  • 镜像:mirrors
  • 作用:加速我们的下载
  • 阿里云的镜像
<mirror>
    <id>nexus-aliyun</id>  
    <mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>  
    <name>Nexus aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url> 
</mirror>

5.5 本地仓库

<localRepository>D:\Sofelodaing\apache-maven-3.8.1\maven-repo</localRepository>

5.6 IDEA中使用Maven

  • 创建一个mavenweb项目

在这里插入图片描述
在这里插入图片描述
等待项目初始化
在这里插入图片描述

如果有错误:

一般出现以下几种情况:

  1. 镜像问题:可以多配置几个镜像

    <mirror>
    	    <id>nexus-aliyun</id>  
    	    <mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>  
    	    <name>Nexus aliyun</name>  
    	    <url>http://maven.aliyun.com/nexus/content/groups/public</url> 
        </mirror>
    	 
    	<mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
        </mirror>
    	
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    	
    	<mirror>
    		<id>central</id>
    		<name>Maven Repository Switchboard</name>
    		<url>http://repo1.maven.org/maven2/</url>
    		<mirrorOf>central</mirrorOf>
    	</mirror>
    	
    	<mirror>
    		<id>repo2</id>
    		<mirrorOf>central</mirrorOf>
    		<name>Human Readable Name for this Mirror.</name>
    		<url>http://repo2.maven.org/maven2/</url>
    	</mirror>
    	
    	<mirror>
    		<id>ibiblio</id>
    		<mirrorOf>central</mirrorOf>
    		<name>Human Readable Name for this Mirror.</name>
    		<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
    	</mirror>
    	
    	<mirror>
    		<id>jboss-public-repository-group</id>
    		<mirrorOf>central</mirrorOf>
    		<name>JBoss Public Repository Group</name>
    		<url>http://repository.jboss.org/nexus/content/groups/public</url>
    	</mirror>
    	
    	<mirror>
    		<id>google-maven-central</id>
    		<name>Google Maven Central</name>
    		<url>https://maven-central.storage.googleapis.com
    		</url>
    		<mirrorOf>central</mirrorOf>
    	</mirror>
    	
    	<!-- 中央仓库在中国的镜像 -->
    	<mirror>
    		<id>maven.net.cn</id>
    		<name>oneof the central mirrors in china</name>
    		<url>http://maven.net.cn/content/groups/public/</url>
    		<mirrorOf>central</mirrorOf>
    	</mirror>
    
  2. 新建maven项目时,Run中报警告:No archetype found in remote catalog. Defaulting to internal catalog.【在远程目录中没有找到原型。默认为内部编录。】,如图:

在这里插入图片描述

解决方案

  1. 可以不用管【因为使用了maven模版构建项目,要从网上获取模版,然而没有找到这个模版或者网络慢,导致获取失败 】,选择File —> 再选择Close Project,关闭项目后重启就可以了。

  2. 参考 https://www.cnblogs.com/loufangcheng/p/12861762.html 这篇文章

    在maven的VM Options加上-DarchetypeCatalog=internal参数,如下:

5.7 文件夹标记

一个完整项目需要新建的文件夹
在这里插入图片描述

在这里插入图片描述

  • 也可以这样设置

    1. 先点击文件,再点击项目结构:

在这里插入图片描述

  1. 点击Model进行设置

在这里插入图片描述

5.8 配置Tomcat

  • 点击这里

在这里插入图片描述

  • 配置

在这里插入图片描述

  • 解决警告问题

    原因是没有关联本地的tomcat,关联本地tomcat即可

在这里插入图片描述

建议暂时不要使用Tomcat10,因为会出现找不到路径问题

在这里插入图片描述

所以我又重新下载了Tomcat9

接下来就是没有创建项目的警告了:这个好办

原因:我们访问一个网站,需要一个文件夹的名字

在这里插入图片描述

解决办法:直接创建一个,如下图

在这里插入图片描述
在这里插入图片描述

  • 启动Tomcat

    intellij IDEA tomcat 启动时 报错
    AJP Connector node not found: set up one in the server.xml

    解决办法:

    把配置tomcat的HTTP端口下面的HTTPs的端口去掉就可以了
    在这里插入图片描述

还要保证你的Tomcat没有正在使用!

  • 启动成功

在这里插入图片描述
在这里插入图片描述

5.9 了解Maven

在这里插入图片描述

核心配置文件:Pom.xml

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

<!--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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

<!--刚才配置的GAV-->
  <groupId>com.liang</groupId>
  <artifactId>javaweb_01_maven</artifactId>
  <version>1.0-SNAPSHOT</version>
<!-- 项目打包方式
  jar:java项目
  war:javawb项目
-->
  <packaging>war</packaging>
<!--配置-->
  <properties>
   <!--项目的默认构建编码-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <!--编译版本-->
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

<!--项目依赖-->
  <dependencies>
    <!--具体依赖的jar包配置文件-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

<!--项目构建用的东西-->
  <build>
    <finalName>javaweb_01_maven</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>
<!--    在build中配置resources , 来防止我们资源导出失败的问题-->
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
</build>

5.10 IDEA操作

目录树:

在这里插入图片描述

因为我没导入spring,所以比较简单
在这里插入图片描述

未完待续

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值