Javaweb之Http协议andTomcatandServelt的内容~1

简介: Javaweb之Http协议andTomcatandServelt的内容~

JavaWeb技术栈:

B/S架构;Browser/server:浏览器/服务器架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端,浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可


好处:易于维护升级:服务器升级后,客户端无需任何部署就可以使用到新版本

静态资源:HTML,CSS,JavaScript,图片等,负责页面展现
动态资源:Servlet,JSP等,负责逻辑处理
数据:负责存储数据
HTTP协议:定义通信规则
Web服务器:负责解析HTTP协议,解析请求数据,并发送响应数据

HTTP协议:

概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则

HTTP协议特点:

1:基于TCP协议:面向连接,安全

2:基于请求-响应模型的:一次请求对应一次响应

3:HTTP协议是无状态的协议:对于事务处理没有记忆能力,每次请求-响应都是独立的

缺点:多次请求不能共享数据
优点:速度快

HTTP–请求数据格式:

请求数据分为3部分:

1:请求行:请求数据的第一行,其中GET表示请求方式,/表示请求资源路径,HTTP/1.1表示协议版本
2:请求头:第二行开始,格式为:key:value形式
3:请求体:POST请求的最后一部分,存放请求参数

举例:

常见HTTP请求头:

GET请求和POST请求的区别:

1:GET请求请求参数在请求行中,没有请求体
  POST请求请求参数在请求体中
2:GET请求请求参数大小有限制,POST没有

举例:

HTTP–响应数据格式:

响应数据分为3部分:

响应行:响应数据的第一行,其中HTTP/1.1表示协议版本,200表示响应状态码,OK表示状态码描述
响应头:第二行开始,格式为key:value形式
响应体:最后一部分,存放响应数据

常见的响应头:

常见的响应码:

常见的响应状态码:

Web服务器—Tomcat:

web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让web开发更加便捷,主要功能是"提供网上信息浏览服务"

概念:

Tomcat是Apache 软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范

JavaEE:

Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和,包含13项技术规范: JDBCJNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAFTomcat 也被称为 Web容器、Servlet容器,Servlet 需要依赖于 Tomcat才能运行


Tomcat的安装及使用:

官网传送门!

由于TomCat是绿色软件,因此我们只需要将其解压到当前目录即可,解压完成后打开bin目录下的该文件

有很多的小伙伴在打开时,会遇到闪退问题[包括我也是],大家可通过这篇文章查看解决方法

如果打开该文件后显示如下内容,则证明你已启动成功啦!

但仔细看,我们会发现其中有很多乱码,是由于TomCat和JDK编码不一致所导致的!

解决TomCat中的乱码问题:

找到apache-tomcat-8.5.85文件中的conf目录,打开下述文件:

找到文件中的这行代码:

将其修改为如下所示:

修改完成后再次打开TomCat,乱码问题被解决

关于TomCat的关闭,有以下三种方式:

1:直接点击右上角的"×":这种方法是强制关闭,并不是我们推荐的,因为很多数据都来不及保存
2:bin\shutdown.bat:正常关闭:这种方法虽然可以正常关闭,但很麻烦,每次都要找到该目录,因此也不是最优选择
3:Ctrl+C:正常关闭,这种使我们最推荐的

修改TomCat端口号:

打开conf目录下的下述文件:

找到该行代码:

将8080修改为80,关闭并保存

HTTP协议默认端口号为80,如果将Tomcat端口号改为80,则将来访问TomCat时,将不用输入端口号

端口号的配置范围为 0-65535,但0-1024 基本都是系统配置,为了避免端口号冲突,我们应尽量不要用这些端口号去进行配置,此外还有一些特殊的端口号,例如:3306(数据库),8080(HTTP)这些端口号都属于特别容易发生冲突的,尽量不要去进行配置,可以自定义一些不是很特殊的端口号,例如:1982, 3456 等等


打开TomCat后,在浏览器输入如下:


TomCat—部署项目:

TomCat部署项目:将项目放置到webapps目录下,即部署完成

一般JavaWeb项目会被打包成war包,然后将war包放到webapps目录下,TomCat会自动解压war文件

IDE中创建Maven Web项目:

编译后的Java字节码文件和resources的资源文件,放到WEB-INF下的classes目录下

pom.xml中依赖坐标对应的jar包,放到WEB-INF下的lib目录下

创建Maven Web项目:

File-new-project:

等待加载成功即可,网络不好的小伙伴需要耐心等待哦

加载完成后是这个样子!

右击:

如果在打包的过程中出现下述这种错误:

解决方法为:在.xml文件中加入下述代码

 <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.3.1</version>
      </plugin>
    </plugins>
  </build>

再次打包,打包成功!

在IDE中使用Tomcat—集成本地Tomcat:

点击file—>settings:

下载插件

在pom.xml文件中添加下述代码:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
            </plugin>
        </plugins>
 </build>

右击进入下述步骤,运行即可

右击:

显示如下:

为什么会出现个helloworld呢?

这实际是系统自动生成的,如下所示:

Servlet:

Servlet是Java提供的一门动态web资源开发技术

Servlet是JavaEE规范之一。其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由web服务器运行Servlet

public interface Servlet
Defines methods that all servlet must implement
A servlet is a small Java program that runs within a Web server

访问servlet:

创建web项目,导入servlet依赖坐标:

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
</dependency>

创建servlet类:实现servlet接口,并重写接口中的所有方法,并在service方法中输入一句话

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
//在类上使用@WebServlet注解,配置该servlet的访问路径
@WebServlet("/demo1")
public class Myservlet implements Servlet {
    public void init(ServletConfig servletConfig) throws ServletException {
    }
    public ServletConfig getServletConfig() {
        return null;
    }
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
          //最终会在控制台输出
            System.out.println("hello");
    }
    public String getServletInfo() {
        return null;
    }
    public void destroy() {
    }
}

导入后,启动Tomcat,浏览器输入URL,访问该servlet

相关文章
|
15小时前
|
缓存 开发框架 网络协议
必知的技术知识:HTTP协议和SOCKS5协议
必知的技术知识:HTTP协议和SOCKS5协议
|
17小时前
|
移动开发 缓存 网络协议
Beetlex实现完整的HTTP协议
Beetlex实现完整的HTTP协议
|
2天前
|
Web App开发 缓存 安全
HTTP协议 -JavaWeb基础必知
HTTP协议 -JavaWeb基础必知
10 0
|
6天前
|
机器学习/深度学习 安全 数据安全/隐私保护
【计算机网络】深度学习HTTPS协议
【计算机网络】深度学习HTTPS协议
16 0
|
6天前
|
机器学习/深度学习 前端开发 JavaScript
【计算机网络】深度学习使用应用层的HTTP协议
【计算机网络】深度学习使用应用层的HTTP协议
29 0
|
7天前
|
缓存 网络协议 应用服务中间件
深入理解 web 协议(一)- http 包体传输
深入理解 web 协议(一)- http 包体传输
|
8天前
|
监控 小程序 前端开发
基础入门-抓包技术&HTTPS协议&WEB&封包监听&网卡模式&APP&小程序
基础入门-抓包技术&HTTPS协议&WEB&封包监听&网卡模式&APP&小程序
|
9天前
|
Java 应用服务中间件 程序员
JavaWeb基础第四章(SpringBootWeb工程,HTTP协议与Web服务器-Tomcat)
JavaWeb基础第四章(SpringBootWeb工程,HTTP协议与Web服务器-Tomcat)
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
最近在线上往hbase导数据,因为hbase写入能力比较强,没有太在意写的问题。让业务方进行历史数据的导入操作,中间发现一个问题,写入速度太快,并且业务数据集中到其中一个region,这个region无法split掉,处于不可用状态。
1312 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
Every Programmer Should Know These Latency Numbers 1秒=1000毫秒(ms) 1秒=1,000,000 微秒(μs) 1秒=1,000,000,000 纳秒(ns) 1秒=1,000,000,000,000 皮秒(ps) L1 cache reference .
625 0