首页 > 编程语言 >JAVAWeb学习

JAVAWeb学习

时间:2023-01-21 21:00:26浏览次数:59  
标签:web JAVAWeb Tomcat 学习 服务器 Maven Servlet hello

1、基本概念

web开发:

  • web,网页的意思
  • 静态web
    • html,css
    • 提供给所有人看的数据始终不会发生变化
  • 动态web
    • 淘宝,几乎所有的网站
    • 提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看见的信息各不相同
    • 技术栈:Servlet/JSP,ASP

1.2、web应用程序

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

  • a.html,b.html 多个web资源可以被外界访问,对外界提供服务;

  • 访问的任何一个页面或者资源,都存在于这个世界的某一台计算机上

  • URL

  • 这个同一的web资源会被放在同一个文件夹下,web应用程序--》Tomcat服务器

  • 一个web应用由多个部分组成(静态web、动态web)

    • html、css、js
    • java程序
    • jar包
    • 配置文件(Properties)

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

1.3静态web

  • *.html, *.htm这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取。通络。

1672646705833

  • 静态web存在的缺点
    • web页面无法动态更新,所有用户看到的都是同一个页面
      • 轮播图、点击特效:伪动态
      • javaScript(实际开发过程中用的最多)
      • VBScript
    • 它无法和数据库交互(数据无法持久化,用户无法交互)

1.4、动态web

页面会动态展示:”web的页面展示效果因人而异“;

1672647040271

缺点:

  • 加入服务器的动态web资源出现错误,我们需要重新编写我们的后台程序,重新发布;
    • 停机维护

优点:

  • web页面可以动态更新,所有用户看到的都不是同一个页面
  • 它可以与数据库交互(数据持久化:商品信息、用户信息......)

1672647205813

2、web服务器

2.1技术

  • PHP
  • ASP
  • JSP/Severlet
    • jsp即在html代码中嵌入java代码

2.2、web服务器

  • IIS

  • Tomacat

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

    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

    诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。

3、Tomcat

3.1、Tomcat启动

文件夹作用1672649053319

启动关闭Tomcat(bin路径下starup.bat)

1672649357914

注意:Tomcat安装在D:\桌面\自己的材料\自己的各类文件\专业课\web实验\apache-tomcat-9.0.56-windows-x64\apache-tomcat-9.0.56\bin

1672651267738

3.2配置

  • 本机Tomcat端口改为9080(conf路径下的server.xml)
  • 环境变量名也做更改

1672670187080

可以配置启动的端口号

  • tomcat默认端口号:8080(本主机为9080)

  • mysql默认端口号为:3306

  • http:80

  • https:443

    <Connector port="9080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    

可以配置主机的名称

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

3.3、发布一个网站

1672671440582

4、Http

4.1什么是Http

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。

  • 文本:html,字符串...
  • 超文本:图片、音乐、视频...
  • 端口号:80

Https:s代表安全的

  • 默认端口号:443

4.2、两个时代

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

4.3、Http请求

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

以百度为例

Request URL:https://www.baidu.com/    请求地址
Request Method:GET   get方法/post方法
Status Code:200 OK   状态码:200
Rmote(远程) Address:14.215.177.39:443    
Accept:	text/html
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2  语言
Cache-Control:max-age=0
Connection:keep-alive

1672674373092

4.4、Http响应

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

以百度为例

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

1672676147590

5、Maven

javaweb开发过程中需要导入jar包,maven这个工具能够自动帮我们导入配置jar包

5.1、Maven项目架构管理工具

方便导入jar包

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

  • 有约束,不要去违反

Maven会规定好我们如何去编写java代码,必须按照这个规范

5.2配置环境变量

在我们的环境变量中

配置如下配置

  • M2_HOME maven下的bin目录
  • MAVEN_HOME maven的目录
  • 这边的系统Path配置更改为 D:\JAVA环境变量\apache-maven-3.8.4\bin
  • 1672681447762

1672680034308

5.3、阿里云镜像

  • 镜像:mirrors

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

    	<mirror>
    	<id>alimaven</id>
    	<mirrorOf>central</mirrorOf>
    	<name>aliyun maven</name>
    	<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
    	</mirror>
    

5.4、本地仓库

在本地的仓库,远程的仓库;

建立一个本地仓库:localRepository

 <localRepository>D:\JAVA环境变量\apache-maven-3.8.4\maven-repo</localRepository>

如图

1672682632986

5.5、在IDEA中使用Maven

1、启动IDEA

2、创建一个Maven新项目

1672712899273

1672712998733

1672713356432

1672713409874

3、等待项目初始化完毕

1672714285229

4、观察Maven仓库中多的东西

5、IDEA中Maven的配置

IDEA创建成功后看一眼Maven的配置

1672714596898

5.6、创建一个普通的Maven项目

1672746212718

1672746372671

这个只有在web应用下才会有

1672746883025

5.7、在IDEA中标记文件夹功能

1672747017243

1672747093659

1672747131167

5.8、在IDEA中配置Tomcat

1672747581890

1672747661244

1672747700376

1672747827309

解决警告问题

必须要的配置:为什么会有这个问题:我们访问一个网站,需要指定一个文件名

1672748017029

1672748203814

1672748249869

Error running 'Tomcat 9': Can't find catalina.jar此处Tomcat的路径没配置好

解决办法:重新配置Tomcat的路径

1672748708704

启动成功:这里能够访问到的Hello World!就是index.jsp中的内容

1672748740173

1672748840342

5.9、pom文件

pom.xml是Maven的核心配置文件

1672749023863

1672749781625

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

1672750015519

6、Servlet

6.1、Servlet简介

  • Servlet就是sun公司开发动态web的一门技术
  • sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个步骤
    • 编写一个类,实现Servlet接口
    • 把开发好的java类部署到web服务器中
  • 应用程序接口英语:Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。由于近年来软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。

把实现Servlet接口的java程序叫做,Servlet

6.2、HelloServlet

Servlet接口sun公司有默认的两个实现类:HttpServlet

1、构建一个普通的Maven项目,删掉里面的src目录,以后我们的学习就在这个项目里面建立Moudel;

2、关于Maven父子工程理解:

​ 父项目中会有:

    <modules>
        <module>servlet-01</module>
    </modules>

​ 子项目中会有:

    <parent>
        <artifactId>javaweb-02-servlet</artifactId>
        <groupId>com.wu</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

父项目中的java子项目可以直接使用

son extends father

3、Maven环境优化

​ (1)修改web.xml为最新的

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                         http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">
</web-app>

​ (2)将maven的结构搭建完整

4、编写一个servlet程序

​ (1)编写一个普通类

​ (2)实现Servlet接口,这里我们直接继承HttpServlet

public class HelloServlet extends HttpServlet {
    //由于get或者post只是请求实现的不同的方式,可以互相调用,业务逻辑都一样;
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //ServletOutputStream outputStream = resp.getOutputStream();
        PrintWriter writer = resp.getWriter();//响应流
        writer.print("Hello,servlet");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }
}

5、编写servlet的映射

​ 为什么需要映射:我们写的是JAVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中注册我们写的Servlet,还需要给它一个浏览器可以访问的路径;

    <!--注册Servlet-->
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.wu.servlet.HelloServlet</servlet-class>
    </servlet>
    <!--Servlet的请求路径-->
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
    <!--访问hello路径,前端会访问com.wu.servlet.HelloServlet-->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

6、配置Tomcat

1674225610647

7、启动测试

1674225896785

6.3、Servlet原理

Servlet是由服务器调用,web服务器在收到浏览器请求之后会:

1674226682041

6.4、Mapping问题

​ 1、一个Servlet可以指定一个映射路径

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
    <!--访问hello路径,前端会访问com.wu.servlet.HelloServlet-->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

​ 2、一个Servlet可以指定多个映射路径

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello1</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello2</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello3</url-pattern>
    </servlet-mapping>

​ 3、一个Servlet可以指定通用映射路径

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello/*</url-pattern>
    </servlet-mapping>

​ 4、默认请求路径

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

​ 5、指定一些后缀或者前缀等等...

可以自定义后缀实现请求映射,注意点:*前面不能加项目映射路径

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>*.wuqingjunhan</url-pattern>
    </servlet-mapping>

标签:web,JAVAWeb,Tomcat,学习,服务器,Maven,Servlet,hello
From: https://www.cnblogs.com/wujunhan/p/17064029.html

相关文章

  • 学习笔记——SpringMVC文件上传与下载
    2023-01-21一、文件下载1、实现文件下载步骤(1)准备文件下载相关步骤(2)将ResponseEntity<T>对象,作为方法返回值(3)为ResponseEntity<T>对象,设置三个参数 2、示例代码@R......
  • LINUX学习之用户及用户组管理(九)
    用户账号管理用户账号的管理涉及添加、删除和修改用户账号信息。而这些操作实际上就是对/etc/passwd文件进行更新useradd命令描述useradd命令用于添加新用户,以下是u......
  • LINUX学习之文本编辑器VIM/VI(八)
    简介VI是Unix操作系统和类Unix操作系统中最通用的文本编辑器VIM编辑器是从VI发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜色辨别语法的正确性,方便......
  • fabric学习笔记10
    fabric学习笔记1020201303张奕博2023.1.22测试实践1.启动网络命令:cdfabric-samples/chaincode-docker-devmode/docker-compose-fdocker-compose-simple.......
  • ZYNQ学习笔记 程序固化
    ZYNQ程序的固化PS:本次实验基于zynq7010芯片,开发软件为vivado2018.3。​ zynq7010和其他的fpga板一样,日常我们开发时使用的JTAG调试下载进去的二进制文件断电后会丢失的......
  • 【Javaweb】Servlet五 | HTTP协议【详解】
    什么是HTTP协议什么是协议?协议是指双方或多方相互约定好,大家都需要遵守的规则,叫协议。所谓HTTP协议,就是指,客户端和服务器之间通信时,发送的数据,需要遵守的规则,叫做HTTP协......
  • 【python】Matplotlib库学习笔记
    Matplotlib是python的绘图库。以下内容主要介绍Matplotlib的子库pyplot。pyplot是常用的2D绘图模块,包含一系列绘图相关函数。plot()函数plot()函数可以用来绘制......
  • Jmeter学习:控制器--吞吐量控制器/模块控制器/开关控制器
    一、吞吐量控制器功能:吞吐量控制器允许用户控制后代元素的执行的次数。有两种模式:执行百分比和指定总数。吞吐量控制器不会影响采样器的TPS,但会控制其内部逻辑的执行次......
  • JDBC学习笔记
    1.JDBC的基本概念  1.1 JDBC是什么   JDBC(JavaDataBaseConnectivityJava数据库连接),可以理解为是一种用于执行SQL语句的API。  1.2JDBC的本质  ......
  • 无监督学习之聚类
    点头出品,必属精品!!!嘿嘿嘿( ̄y▽, ̄)╭![image]嗯~~~~,还是先从聚类到底是什么开始吧。一、聚类概述有关聚类的思考数据挖掘导论中提到过:聚类可以看做一种分类,它用类标号......