JavaWeb开发 —— Web入门

news2024/12/26 23:37:38

目录

一、Spring

二、SpringBootWeb快速入门

三、HTTP协议

1.  概述

2.  请求协议

3.  响应协议

四、Web服务器 - Tomcat

1.  介绍

2.  基本使用

3.  入门程序解析


一、Spring

① 官网:http://spring.io

 Spring 发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个项目用于完成特定的功能。

③ Spring全家桶:

而我们直接基于 Spring Framework 框架的开发会存在配置繁琐、入门难度大两大缺点。

因此,又推出 Spring Boot 来简化配置、快速开发,但是其底层仍是Spring 。


Spring Boot 可以帮助我们非常快速的构建应用程序、简化开发、提高效率。

如何快速构建一个Spring应用:https://spring.io/quickstart

二、SpringBootWeb快速入门

① 需求:使用 SpringBoot 开发一个web应用,浏览器发起请求 /hello 后,给浏览器返回字符串 "Hello World ~"。

基于 Spring Boot 开发一个Web应用并启动,再打开浏览器并在地址栏访问Web应用(http:协议、localhost:当前本机服务、8080:端口号、/hello:访问的资源),发送请求会被Web程序处理,最终返回字符串给浏览器并展示。

 ② 开发步骤:

  1. 创建 springboot 工程,并勾选web开发相关依赖。
  2. 定义 Hellocontroller 类,添加方法 hello,并添加注解。
  3. 运行测试。
//请求处理类
@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        System.out.println("hello world");
        return "hello world";
    }
}

//启动类:启动Springboot工程
@SpringBootApplication
public class SpringbootWebPro01Application {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootWebPro01Application.class, args);
    }

}

三、HTTP协议

1.  概述

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

  • 客户端浏览器请求服务器获取数据,因此浏览器就需要向服务器端发送请求,服务器端进而向浏览器响应对应数据。
  • 而浏览器向服务器发送请求就需要携带请求数据,服务器接收这些数据后就解析这些数据,而服务器要想成功解析这些数据,就需要知道浏览器发送过来的数据的具体信息。
  • 因此,浏览器和服务器之间要建议一定的协议,浏览器发送数据按照该格式发送,服务器端也按照该格式进行解析。

例如上述 /hello 案例:

 ② 特点:

  1. 基于TCP协议:面向连接,安全
  2. 基于请求-响应模型的:一次请求对应一次响应
  3. HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。缺点:多次请求间不能共享数据。优点:速度快

2.  请求协议

 常见请求头:

Host请求的主机名
User - Agent浏览器版本,例如Chrome浏览器的标识类似MOzilla/5.0 ... Chrome/79,IE浏览器的标识类似Mozilla/5.0 (WindowsNT ....) like Gecko
Accept表示浏览器能接收的资源类型,如 text/* ,image/* 或者 */* 表示所有。
Accept - Language表示浏览器偏好的语言,服务器可以据此返回不同语言的网页。
Accept - Encoding表示浏览器可以支持的压缩类型,例如gzip,deflate等。
Content - Type请求主体的数据类型。
Content - Length请求主体的大小(单位:字节)。

请求方式 - GET:请求参数在请求行中,没有请求体,如:/brand/findAll?name=OPPO&status=1。GET请求大小是有限制的。

请求方式 - POST:请求参数在请求体中,POST请求大小是没有限制的。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="get">
  姓名:<input type="text" name = "name">
  密码:<input type="password" name="password">
  <input type="submit" value="提交表单Get">
</form>

<br><br><br>

<form action="" method="post">
  姓名:<input type="text" name = "name">
  密码:<input type="password" name="password">
  <input type="submit" value="提交表单Get">

</form>
</body>
</html>

3.  响应协议

① 响应状态码:

1xx响应中-临时状态码,表示请求已经接收,告诉客户端应该继续请求或者如果它已经完成则忽略它。
2xx成功-表示请求已经被成功接收,处理已完成。
3xx重定向-重定向到其他地方,让客户端再发起一次请求以完成整个处理。
4xx客户端错误-处理发生错误,责任在客户端。如:请求了不存在的资源、客户端未被授权、禁止访问等。
5xx服务器错误-处理发生错误,责任在服务端。如:程序抛出异常等。

② 常见的响应状态码:

状态码英文描述解释
200OK客户端请求成功,即处理成功,这是我们最想看到的状态码
302Found指示所诸求的资源已移动到出Location响应头给定的URL,浏览器会自动重新访问到这个页面。
304Not Modified告诉客户端。你请求的资源至上次取得后,服务端并未更改。你直接用你本地级存吧,隐式重定向。
400Bad Request客户端请求有语法错误,不能被服务器所理解。
403Forbidden服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源。
404Not Found请求资源不存在,一般是URL输入有误,或者网站资源被删除了。
405Method Not Allowed请求方式有误,比如应该用GET请求方式的资率,用了POST
428Precondition Required服务器要求有条件的请求,告诉客户端委想访问该资源,必须携带特定的请求头。
429Too Many Requests指示用户在给定时间内发送了太多请求("限速"),配合Retry-After(多长时间后可以请求]响应头一起使用。
431Request Header Fields Too Large请求头太大,服务器不题愈处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
500Internal Server Error服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧。
503Service Unavailable服务器尚未准备好处理请求。服务器刚刚启动,还未初始化好。

 状态码大全:http://cloud.tencent.com/developer/chapter/13553

③ 常见响应头:

Content-Type表示该响应内容的类型,例如:text/html,application/json。
Content-Length表示该响应内容的长度(字节数)。
content-Encoding表示该响应压缩算法,例如gzip。
Cache-Control指示客户端应如何缓存,例如:max-age=300表示可以最多缓存300秒。
Set-Cookie告诉浏览器为当前页面所在的域设置cookie。

四、Web服务器 - Tomcat

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

我们只要在服务器端安装一个Web服务器,比如Apache Tomcat,我们就可以将我们开发好的应用部署在Tomcat服务器上,启动服务器后就可以打开浏览器直接访问到部署在Tomcat服务器上的应用程序。

1.  介绍

① 概念:Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范 
② JavaEE:Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJBRMI、JSP、Servlet、XML、JMS、Java lDL、JTS、JTA、JavaMail、JAF。
③ Tomcat 也被称为Web容器、Servlet容器。Servlet程序需要依赖于Tomcat才能运行。
④ 官网:https://tomcat.apache.org/

2.  基本使用

① 下载:官网下载,地址 https://tomcat.apache.org/download-90.cgi

② 安装:绿色版,直接解压即可

③ 卸载:直接删除目录即可

④ 启动:双击:bin\startup.bat

  • 控制台中文乱码:修改 conf / logging.properties
  • java.util.logging.ConsoleHandler.level = FINE
    java.util.logging.ConsoleHtandler.formatter = org.apache.juli.OneLineFormatter
    java.util.logging.ConsoleHandler.encoding = GBK

⑤ 关闭:

  • 直接x掉运行窗口:强制关闭
  • bin\shutdown.bat:正常关闭
  • Ctrl+C:正常关闭

常见问题:

① 启动窗口一闪而过:检查JAVA_HOME环境变量是否正确配置。

② 端口号冲突:找到对应程序,将其关闭掉。

  • 可以通过任务管理器-详细信息,结束掉java.exe进程
  • 也可以重新配置Tomcat端口号(conf/server.xml)
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"/>

注意事项:HTTP协议默认端口号为80,如果将Tomcat端口号改为80,则将来访问Tomcat时,将不用输入端口号。

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

3.  入门程序解析

① 起步依赖:

  • spring-boot-starter-web:包含了web应用开发所需要的常见依赖。
  • spring-boot-starter-test:包含了单元测试所需要的常见依赖。
  • 官方提供的starter:https://docs.spring.io/spring-boot/docs/2.7.4/reference/htmlsingle/#using.build-systems.starters

② 内嵌Tomcat:

  •  在SpringBoot Web开发当中,已经将Tomcat集成进来。
  •  所以在我们运行启动类在启动SpringBoot项目时,会自动将内部的Tomcat服务器启动起来,并且占用Tomcat默认端口号8080。
  •  而这个端口号并不是之前安装的Web的Tomcat,而是SpringBoot外部环境内置的Tomcat,也叫内嵌Tomcat。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/420950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022 idea 从原型创建maven项目框架--以创建niif-processors为列

目录一、idea配置二、下载archetype-catalog.xml文件三、创建设置四、创建成功截图一、idea配置 在如下两张图片花圈的位置添加如下参数 -Dmaven.wagon.http.ssl.insecuretrue -Dmaven.wagon.http.ssl.allowalltrue -Dmaven.wagon.http.ssl.ignore.validity.datestrue 二、下载…

Qt Quick - 导航控件综述

Qt Quick - 导航控件综述一、概述二、StackView控件三、SwipeView控件四、TabBar控件五、TabButton控件一、概述 Qt Quick Controls提供了一系列导航模型。 控件功能Drawer可以用滑动手势打开和关闭的侧滑动面板StackView提供基于堆栈的导航模型SwipeView允许用户通过横向滑动…

面试官:谈谈你对TypeScript有什么了解

TypeScript 相关面试题1.说说你对 TypeScript 的理解&#xff1f;与 JavaScript 的区别是什么特性区别2.说说你对 TypeScript 中类的理解&#xff1f;应用场景&#xff1f;是什么使用方式继承修饰符私有修饰符受保护修饰符只读修饰符静态属性抽象类应用场景3.说说 typescript 的…

简单易用的公司网页模板,助您快速建站

在当今数字化时代&#xff0c;拥有一个高质量的公司网页是每个企业成功的关键。然而&#xff0c;对于那些没有技术专业知识的人来说&#xff0c;创建一个专业的网页可能是一项艰巨的任务。但是&#xff0c;现在有许多简单易用的公司网页模板可用于帮助您快速建站。 下面&#…

【CSS】文字溢出问题 ( 强制文本在一行中显示 | 隐藏文本的超出部分 | 使用省略号代替文本超出部分 )

文章目录一、文字溢出问题二、文字溢出处理方案三、代码示例一、文字溢出问题 在元素对象内部显示文字 , 如果文本过长 , 则会出现文本溢出的问题 ; 下面的示例中 , 在 150x25 像素的盒子中 , 显示 骐骥一跃&#xff0c;不能十步;驽马十驾&#xff0c;功在不舍; 一段话 , 明显…

【初识C++】(缺省参数和函数重载)

文章目录一、缺省参数1.缺省参数定义2.缺省参数分类2.1全缺省参数2.2半缺省参数二、函数重载1.函数重载概念2.构成重载的几种方式为什么会有函数重载及其原理一、缺省参数 1.缺省参数定义 缺省参数是在函数的声明中给定参数一个指定的值。 如果传参没有给定参数&#xff0c;那…

三百左右蓝牙耳机选哪个?300左右无线蓝牙耳机推荐

多数人消遣的方式一般是听听音乐玩玩游戏&#xff0c;想要更好的体验感最少不了的一定就是蓝牙耳机了&#xff0c;可对于大多数人来说&#xff0c;irpods之类的属实太贵了&#xff0c;所以更多人追求性价比&#xff0c;之前也买过不靠谱的耳机&#xff0c;用几天就坏了&#xf…

MySQL数据库:索引

一、索引简介 1.概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引&#xff0c;并指定索引的类型&#xff0c;各类索引有各自的数据结构实现。 相当于是给数据库中的数据建立了一个目录&#xff0c;通过目录可以知道…

QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。

QT多线程5种用法第一种 主线程(GUI)第二种 子线程1继承自QThread头文件 movetothread4.h源文件 movetothread4.cpp子线程1对象的创建第二种 子线程2继承自QThread头文件源文件对象创建位置&#xff08;销毁&#xff09;第三种 子线程3继承自QThread头文件源文件对象的创建第四种…

基于matlab仿真机械手

一、前言该示例显示了处于主动立体视觉模式的操纵器。它说明了立体渲染属性的效果以及如何使用立体视觉 VRFIGURE 属性。仅当图形卡支持四缓冲 OpenGL 渲染并由图形卡驱动程序启用时&#xff0c;操纵器才会以活动立体视觉模式显示。请注意&#xff0c;只有当您使用带有主动快门…

Android 布局 Fragment

Android 布局 FragmentFragment出现的初衷生命周期onCreate()onPause()onAttach()onCreateView()onActivityCreated()onDestroyView()onDetach()您可能还想扩展几个子类&#xff0c;而非 Fragment 基类&#xff1a;DialogFragmentListFragmentPreferenceFragmentCompat同系列文…

2.3.2单链表的插入删除

按位序插入&#xff08;带头结点&#xff09; 将第i-1个结点的指针指向第i个结点。 头节点看作是第0个结点。 s->datae //设定s指针的数据域为e s->nextp->next //将p指针指向的位置赋值给s指针指向的位置 p->nexts //再将s的数据域赋值给p指针指向的位置…

浅析分布式理论的CAP

大家好&#xff0c;我是易安&#xff01; 今天让我们来聚焦于分布式系统架构中的重要理论——CAP理论。在分布式系统中&#xff0c;可用性和数据一致性是两个至关重要的因素&#xff0c;而CAP理论就是在这两者之间提供了一种权衡的原则&#xff0c;帮助我们在设计分布式系统时进…

MATLAB基于BP神经网络的光伏发电太阳辐照度预测(源码链接在文末)

光伏发电功率主要受太阳辐照度影响&#xff0c;所以准确预测太阳辐照度对光伏功率预测十分重要。程序采用小波分解先对辐照度数据进行分解&#xff0c;然后再用bp神经网络对分解的辐照度数据分别预测&#xff0c;再组合作为最后的预测结果。 人工神经网络(Artificial Neural …

研0进阶式学习---数据库1

目录Excel和数据库数据库的分类数据库的举例数据库基本结构数据库管理系统xampp、Navicat、MySQL基础知识与界面展示数据库基本连接步骤Excel和数据库 Excel和数据库都是用来存储数据的工具&#xff0c;但它们有以下区别和联系&#xff1a; 区别&#xff1a; 数据类型&#…

Java实现内网穿透

使用场景 1、当公司的一些系统功能使用了第三方服务时&#xff0c;通常第三方会回调我们的接口。在对接阶段&#xff0c;为了方便debug&#xff0c;我们肯定希望能回调到我们本地电脑上来。 2、当你在公司想访问部署在家里电脑的服务或者文件时。 3、当你的外地同事想访问你…

搭建nginx反向代理实现动静态分离

搭建nginx反向代理实现动静态分离一、实现高可用动静分离二 实验步骤2.1 安装nginx和开启路由转发2.2 实现lvs负载均衡2.3 实现动态网页功能2.4 实现nginx反向代理2.5 重启服务网页查看一、实现高可用动静分离 1、部署目的 ①用户访问业务时访问虚拟ip由lvs负责转发请求到业务…

LAMP及论坛搭建

1.编译安装apache 关闭防火墙&#xff0c;将安装Apache所需软件包传到/opt目录下 systemctl stop firewalld.service setenforce 0[rootlocalhost opt]# lsapr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2安装环境依赖包 yum -y install gcc gcc-c make pc…

淘宝商品数据分析怎么操作?从哪些方面下手?

说起淘宝上面的商品可谓是成千上万&#xff0c;因此要是想对这些商品进行数据分析的话&#xff0c;也是需要一些技能的&#xff0c;并不是所有的数据都特别重要&#xff0c;我们需要学会选择比较重要的数据来进行分析。详细内容还请各位接着往下看! 一、根据淘宝指数分析以下相…

【JSP学习笔记】2.JSP 结构、生命周期及语法

前言 本章介绍JSP的结构、生命周期及语法。 JSP 结构 网络服务器需要一个 JSP 引擎&#xff0c;也就是一个容器来处理 JSP 页面。容器负责截获对 JSP 页面的请求。本教程使用内嵌 JSP 容器的 Apache 来支持 JSP 开发。 JSP 容器与 Web 服务器协同合作&#xff0c;为JSP的正…