JAVAWeb学习

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>

posted @ 2023-01-21 20:50  选手吴  阅读(28)  评论(0编辑  收藏  举报