JavaWeb---Tomcat---Servlet

JavaWeb

1、基本概念

静态网页无法与人工交互

动态网页可以人工交互

技术栈:Servlet、JSP、PHP

简介:在Java中,动态web资源开发的技术统称为JavaWeb.

2、web应用

web应用程序“可以提供浏览器访问的程序。

注意:网上可以访问的资源,都是储存在摸个计算机(服务器)上。通过URL(地址)去访问这个地址。

这个统一的web资源会被放置在同一个文件夹上,web应用程序–>Tomcat(服务器),将web应用部署在服务器上。

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

3、组成部分

包括(静态web,动态web):

  1. 网页前端:html javaScript CSS
  2. 技术栈:JSP Servlet
  3. java程序
  4. jar包
  5. 配置文件

3.1、静态web

静态网页存在的缺点:

1.web页面无法动态更新,所有用户看到的都是同一个页面

2.无法和数据库交互(数据无法持久化,用户无法交互)

3.伪动态(轮播图,点击特效)

Javascript[实际开发用的最多]

VBScript

3.2、动态web

  1. 客户端发送请求到服务端
  2. 服务端经过webServer 插件过滤请求
  3. webServer Plugin分别处理动态资源与静态资源
  4. 其中静态资源由webServer来处理请求
  5. 动态资源则由Servlet/JSP来处理,再发送给webServer,WebServer再处理请求,病发送响应给客户端

缺点:

1.加入服务器的动态web资源出现错误时,后台就需要修改,重新发布。----停机维护

优点:

1.动态更新,所有用户看到的不是同一个

2.人工交互

3.数据库交互

4、Web服务器

4.1、技术讲解

ASP:

  • ​ 微软:国内最早流行的是ASP

  • ​ 在HTML中嵌套VB脚本,ASP+COM

  • ​ 在ASP开发中,页面比较乱,维护成本高

  • ​ 在ASP中使用是C#

  • ​ IIS

PHP

  • PHP开发速度快,功能强大,跨平台,代码简单(WP,中国70%网站使用)
  • 无法承载大访问量的情况(局限性)

JSP/Servlet

B/S:浏览器和服务器

C/S:客户端和服务器

  • sun公司主推的B/S架构
  • 基于Java语言的
  • 可以承载三高问题(高并发,高可用,高高性能)
  • 语法像ASP,ASP–>JSP,加强市场强度

4.2、Web服务器

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

4.2.1、IIS(暂时了解)

微软的:windows中自带的

4.2.2、Tomcat

对初学者来说,不错的选择;

可用尝试手写Tomcat;

下载Tomcat

1.解压或者安装

2.了解配置文件及目录结构

3.了解这个东西的作用

注意:同样适用于其他软件(包括Java以及其他)

rt.jar是Java的核心jar包

Tomcat

1、启动Tomcat

  • 选择Tomcat文件夹中bin目录下的startup.bat启动
  • 选择Tomcat文件夹中bin目录下的shutdown.bat启动

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

可能遇到的问题:

​ 1.Java环境变量没有配置

​ 2.闪退问题:需要配置兼容性

​ 3.乱码问题:配置文件中设置

2、配置Tomcat

Tomcat—>conf—>server.xml(服务器核心配置文件)

server.xml用处:

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

​ Tomcat的默认端口号:8080

​ MySQL:3306

​ HTTP:80

​ https:443

<Connector port="8081" 			redirectPort="8443" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="utf-8"/>
2.可以配置主机的名称

​ 默认主机名为:localhost->127.0.0.1

​ 默认网站应用存放的位置为:webapps

<Host name="localhost" unpackWARs="true" autoDeploy="true" appBase="webapps">

3、发布一个网站

3.1、猴版

将自己写的网站,放置到服务器(Tomcat)中指定的web应用的文件夹(webapps)下,就可以访问了。

步骤一、准备启动Tomcat

步骤二、打开服务器

步骤三、测试是否打开服务器

步骤四、成功打开服务器

步骤五、进入webapps准备建立猴版网站

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DYxjbgPy-1614861455676)(https://img.imgdb.cn/item/6040d0d8360785be54699746.png)]

步骤六、复制一份项目

步骤七、建立项目

步骤八、删除不必要文件

步骤九、配置文件

步骤十、配置成功

步骤十一、测试新建项目

步骤十二、意外惊喜

步骤十三、关闭服务器

3.2、网站应该有的结构

--webapps:Tomcat服务器的web目录
	-zhangtaoStudy:网站的目录名(项目的名称)
		- WEB-INF:放置网站程序的
			-classes:java程序
			-lib:web应用所依赖的jar包
			-web.xml
		-	index.html:默认的首页
		-	static:其他文件夹
			-css
			-js
			-img
		........

4、HTTP

4.1、什么是HTTP

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

  • ​ 文本:html,字符串,、、、
  • ​ 超文本:图片,音乐,视频,定位,地图…
  • ​ 默认端口:80
  • ​ HTTPS默认端口:443
4.2、两个时代

http1.0

​ HTTP/1.0:客户端可以与服务端连接后,只能获得一个web资源,断开后无法再连接

http2.0

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

4.3、HTTP请求

客户端—>发送请求(request)—>服务器

eg:baidu

Request URL: https://www.baidu.com/	请求地址
Request Method: GET		get方法/post方法
Status Code: 200 OK		状态码:200
Remote Address: 36.152.44.95:443
Referrer Policy: strict-origin-when-cross-origin
Accept:text/html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;
Cache-Control:max-age=0
Connection: keep-alive
1.请求行
  1. 请求行中的请求方式:GET
  2. 请求方式:GET,POST(重点),head,delete,put,tract…
  • ​ get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据,不安全。但是比较高效率、
  • ​ post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据,安全。但是不高效
2.消息头
Accept		告诉浏览器,它所支持的数据类型
Accept-Encoding	支持哪种编码格式 GBK UTF-8 GB2312	ISO8859-1
Accept-Language	告诉浏览器,它的语言环境
Cache-Control	缓存控制
Connection	告诉浏览器,请求完成是断开还是保持连接
HOST:主机......
4.4、HTTP响应

服务器—>发送响应(response)—>客户端

baidu 响应

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

200:表示响应请求成功

3**:请求重定向(重新到新的位置上)

404:表示网页不存在,找不到资源

5**:服务器代码错误 500 502:网关错误

5、Maven

5.1、为什么需要学习Maven

​ 1.在Javaweb开发中,需要使用大量的jar包,我们手动导入。

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

目前用来就是方便导入jar包

3.Maven 的高级之处在于,他会帮你导入这个jar包所依赖的其他jar包

5.2、Maven项目架构管理工具

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

有约束,不要去违反。

Maven会规定如何去编写Java代码,必须按照这个规范来。

5.3、maven配置

5.4、maven阿里云镜像

镜像作用:加速我们的下载

国内建议使用阿里云镜像:

 <mirror>
      <!--This sends everything else to /public -->
      <id>nexus-aliyun</id>
      <mirrorOf>*</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>

5.5、本地仓库

https://blog.csdn.net/CDW2328/article/details/90113194

建立一个本地仓库:localRepository

<localRepository>F:\Maven\apache-maven-3.6.3-bin\apache-maven-3.6.3\maven-repo</localRepository>

5.6、在IDEA中创建Maven项目

虚拟路径映射

5.7、pom.xml文件

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

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>

项目打包方式:

  • jar:java 应用

  • war:Javaweb应用

    <?xml version="1.0" encoding="UTF-8"?>
    
    <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>
    
      <groupId>org.example</groupId>
      <artifactId>MavenDemo1</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>war</packaging>
    
      <name>MavenDemo1 Maven Webapp</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
      <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>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    
      <build>
        <finalName>MavenDemo1</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>
    
    

5.8、Maven配置时候可能遇到的问题:

1.Maven由于约定大于配置,所以我们之后可能遇到我们写的配置文件无法被导出或生效的问题:

​ 解决方案: Maven资源导出配出

2.Tomcat闪退问题

3.IDEA中每次都重复配置Maven

​ 解决方案:在IDEA的全局配置中进行配置,设置中找到Maven进行默认配置

4.Maven项目中Tomcat无法配置

5.9、Maven使用过程中可能遇到的问题:

1、无法导入

​ (兼容性问题)—unable to import Maven

​ 大概原因:Maven版本问题和JDK的兼容性

​ 目前解决方法:将版本降低一个版本

2、Tomcat闪退问题

​ jdk以及jre问题

3、IDEA中每次都重复配置Maven

​ 全局配置以及项目配置

​ 在全局配置中,以后就不用再修改

​ https://blog.csdn.net/weixin_44494373/article/details/108932403?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522160925339716780261984035%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=160925339716780261984035&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-5-108932403.pc_search_result_cache&utm_term=IDEA%E4%B8%ADMaven%E9%BB%98%E8%AE%A4%E9%85%8D%E7%BD%AE%E5%9C%A8%E5%93%AA%E9%87%8C

4、Maven项目中Tomcat无法配置

​ 没有artifact文件

​ https://blog.csdn.net/weixin_44494373/article/details/108932403?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522160925339716780261984035%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=160925339716780261984035&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-5-108932403.pc_search_result_cache&utm_term=IDEA%E4%B8%ADMaven%E9%BB%98%E8%AE%A4%E9%85%8D%E7%BD%AE%E5%9C%A8%E5%93%AA%E9%87%8C

个人建议:多刷新几次

5、Maven默认web项目中web.xml版本过老
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
</web-app>
<!--版本过老-->

使用Tomcat的头文件版本:

<?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>

个人建议:直接在文件中附加一个note.md在这个笔记里面添加所需要的文件(包括web.xml等等)

6、新建文件夹
  • 在src–>main的目录下面新建Java文件夹以及resource文件夹。
  • IDEA会自动配置文件夹类型,直接新建即可。
7、Maven仓库的使用

https://mvnrepository.com/

官方的Maven的jar包仓库

eg:搜索Servlet的jar

其中标签代表的是作用域的意思,删除掉。代表在任何地方都可以使用。

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <!--作用域-->
            <scope>test</scope>
        </dependency>
    </dependencies>

Servlet

Sun在API中提供了一个接口叫做Servlet,如果想要开发一个Servlet程序,只需要完成两个小步骤:

1.编写一个类,实现Servlet接口

2.把开发好的Java类部署到web服务器上

把实现Servlet接口的Java程序叫做Servlet

1、HelloServlet

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

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

删除SRC目录,之后直接建立模块。这个空的工程就是主工程Maven。

在这个Maven的pom.xml中导入依赖

<!--    导入依赖-->
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值