欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Day30——Java web学习笔记part1

程序员文章站 2022-03-14 08:55:23
...

Java web学习笔记

1、基本概念

JavaWeb,是用Java技术来解决相关web互联网领域的技术总和。web包括两个部分:web服务器端,也叫后端;web客户端,也就是web前端。前端就是用户能看到的部分,比如淘宝网,qq空间,网页上你能看到的都是web前端做的。后端做的就是为前端的展示业务逻辑功能做处理。

Java在客户端的应用有java applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架(Spring MVC、Stripes、Struts 2、Tapestry、Wicket)等等。Java技术对Web领域的发展注入了强大的动力。

Java的Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向对象实现请求和响应的流程,支持Jsp,Freemarker,Velocity等视图。

静态web资源(如html 页面):指web页面*人们浏览的数据始终是不变。

动态web资源:指web页面*人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。

静态web资源开发技术:Html,css,js

常用动态web资源开发技术:JSP/Servlet、ASP、PHP等

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


web应用程序

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

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

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

2、web服务器

Web服务器,一般是指“网站服务器”,是指驻留于互联网上某种类型计算机的程序。Web服务器可以向Web浏览器等客户端提供文档,也可以放置网站文件,让全世界浏览,更可以放置数据文件,让全世界下载。

Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。

Web服务器根据接收到的请求后,向客户端发送响应信息。

3、Tomcat

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

这里学习中所使用的服务器为 Tomcat 9。

Tomcat的使用说明:

可从:http://tomcat.apache.org/官网进行下载,下载为压缩包文件,放在合适的路径下进行解压

对apache-tomcat-9.0.24文件夹下的文件夹作用进行说明:

/bin:启动,关闭的脚本文件

/conf:配置

/lib:依赖的jar包

/logs:日志

/webapps:存放网站的(可将自己写的网站放入,然后测试访问)

对于启动,关闭Tomcat:点击/bin目录下的startup.bat,shutdown.bat即可

启动之后,在网页中访问http://localhost:8080/进行测试。


可对tomcat进行一些配置:

在/conf目录下的server.xml文件中进行配置

1、可以配置启动的端口号

  • tomcat的默认端口号为:8080
  • mysql:3306
  • http:80
  • https:443
<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

2、可以配置主机的名称

  • 默认的主机名为:localhost->127.0.0.1
  • 默认网站应用存放的位置为:webapps
  <Host name="www.112233.com"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">

高难度面试题:

请谈谈网站是如何进行访问的!

  1. 输入一个域名;回车

  2. 检查本机的 C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射;

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

      127.0.0.1       www.XXXXX.com
    2. 没有:去DNS服务器找,找到的话就返回,找不到就返回找不到;

4、HTTP

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。

一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。

一个HTTP"服务器"同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

HTTP默认端口号为80

Https:安全的,端口号为443


  • http1.0

    • HTTP/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接
  • http2.0

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

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

请求行

  • 请求行中的请求方式:GET
  • 请求方式:Get,Post,HEAD,DELETE,PUT,TRACT…
    • get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
    • post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。

消息头

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

Http响应

  • 服务器—响应-----客户端

访问百度为例:

Cache-Control:private    缓存控制
Connection:Keep-Alive    连接
Content-Encoding:gzip    编码
Content-Type:text/html   类型

响应体

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

响应状态码

200:请求响应成功 200

3xx:请求重定向

  • 重定向:重新到所给的新位置;

4xx:找不到资源 404

  • 资源不存在;

5xx:服务器代码错误 500

502:网关错误

5、Maven

Maven 是什么?

Maven 是一个项目管理和整合工具。Maven 为开发者提供了一套完整的构建生命周期框架。开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置,因为 Maven 使用了一个标准的目录结构和一个默认的构建生命周期。

Maven 的主要目的是为开发者提供

  • 一个可复用、可维护、更易理解的工程综合模型
  • 与这个模型交互的插件或者工具

Maven 工程结构和内容被定义在一个 xml 文件中 - pom.xml,是 Project Object Model (POM) 的简称,此文件是整个 Maven 系统的基础组件。

约定优于配置

Maven 使用约定而不是配置,意味着开发者不需要再自己创建构建过程。

开发者不需要再关心每一个配置细节。Maven 为工程提供了合理的默认行为。当创建 Maven 工程时,Maven 会创建默认的工程结构。开发者只需要合理的放置文件,而在 pom.xml 中不再需要定义任何配置。


Maven环境配置

首先保证Java的安装,环境都已配置好

1、下载 Maven 文件

从以下网址下载 Maven :http://maven.apache.org/download.html

2、解压 Maven 文件

解压文件到你想要的位置来安装 Maven

3、配置环境变量

在我们的系统环境变量中

配置如下配置:

  • M2_HOME maven目录下的bin目录
  • MAVEN_HOME maven的目录
  • 在系统的path中配置 %MAVEN_HOME%\bin

4、测试Maven是否安装成功

在命令提示符中使用mvn -version

Day30——Java web学习笔记part1

阿里云镜像

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

配置:

1、在maven的解压文件加下找到conf文件夹,再打开settings.xml,在其中进行配置

Day30——Java web学习笔记part1

本地仓库

建立一个本地仓库:repository

操作如下:

1、在maven的解压目录下手动添加一个repository文件夹

Day30——Java web学习笔记part1

2、在/conf/settings.xml进行配置

Day30——Java web学习笔记part1

在IDEA中使用Maven

1、启动IDEA

2、创建一个MavenWeb项目

Day30——Java web学习笔记part1

3、next,出现GroupId是填写组id,ArtifactId是填写项目名,填完next

4、Day30——Java web学习笔记part1

5、Next,再点击finish

6、出现编程页面后点击右下角的Enable Auto-import(自动导包),

7、出现Build Success即可完成

Day30——Java web学习笔记part1


创建一个普通的Maven项目

1、在创建新项目的时候,选择左边栏的Maven后,直接点击Next

2、像这图所示,此项目为一个普通的Maven项目Day30——Java web学习笔记part1

3、左边project栏中的target文件夹是运行之后才有的,main文件夹下的Java和resources文件夹是手动创建的,并且鼠标右点击Java文件夹,选择Mark Directory As ,选择Sources Root,为蓝色,resources文件夹执行相同的操作,但是选择为Resources Root 。

4、Java文件夹中放置Java源代码,Resources文件夹放置一些配置文件

5、webapp中WEB-INF与它下的web.xml文件为Web的配置,index.jsp为默认启动后出现的网页


在 IDEA中配置Tomcat

1、Day30——Java web学习笔记part1

2、选择下拉框中的Tomcat Server,选择Local

3、服务器的Name可以随意配置,查看JRE是否配置好,Http port为8080,最下面有警告

4、解决警告问题,点击Name下的Deployment,点击右侧加号,选择Artifact

Day30——Java web学习笔记part1

application context处可以写,也可以不写,如写了/s1

访问路径为localhost:8080/s1,这个过程为虚拟路径映射。

5、运行,结果如:

Day30——Java web学习笔记part1

POM文件

POM 代表工程对象模型。它是使用 Maven 工作时的基本组建,是一个 xml 文件。它被放在工程根目录下,文件命名为 pom.xml。

POM 包含了关于工程和各种配置细节的信息,Maven 使用这些信息构建工程。

POM 也包含了目标和插件。当执行一个任务或者目标时,Maven 会查找当前目录下的 POM,从其中读取所需要的配置信息,然后执行目标。能够在 POM 中设置的一些配置如下:

  • project dependencies
  • plugins
  • goals
  • build profiles
  • project version
  • developers
  • mailing list

需要说明的是每个工程应该只有一个 POM 文件。

  • 所有的 POM 文件需要 project 元素和三个必须的字段:groupId, artifactId,version
  • 在仓库中的工程标识为 groupId:artifactId:version
  • POM.xml 的根元素是 project,它有三个主要的子节点:
    • groupId
    • artifactId
    • version
<?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.fc</groupId>
  <artifactId>javaweb-01-maven</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--Package:项目的打包方式
  jar:java应用
  war:JavaWeb应用
  -->
  <packaging>war</packaging>


  <!--配置-->
  <properties>
    <!--项目的默认构建编码-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!--编码版本-->
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <!--项目依赖--><!--Maven会自动帮用户导入这jar包所依赖的其他jar包-->
  <dependencies>
    <!--具体依赖的jar包配置文件-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </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>

maven由于他的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题,解决方案:

<!--在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>