JAVAWEB的基本入门(JSP、Tomcat)>从零开始学JAVA系列
JAVAWEB的基本入门(JSP、Tomcat)
使用idea创建web项目的两种方式
1、直接创建一个web项目(这样创建好的项目可以直接运行)

2、创建一个普通的java项目并配置web模块
新建一个普通的java项目

添加web模块

添加一个打包构建(因为必须要打包才能部署到tomcat中)

配置tomcat并且部署项目到tomcat中
第一步:

第二步:

第三步:配置好该配置的名字(自定义),指定tomcat

第四步:将项目部署到tomcat服务器中

JAVAWeb项目与JAVA项目的区别?
- JAVAWEB项目相比于JAVA项目需要用到JAVAEE的jar包
- JAVAWEB相比于JAVA项目,实现了B/S架构
- JAVAWEB项目可以存放动态网页与静态网页
工作目录与部署目录的区别
- 工作目录是你写的代码所在的目录

- 部署目录是发布到服务器上后映射的目录(访问项目时,以该目录为根目录)
验证:tomcat启动后,访问资源(正常访问),然后删除该目录下的文件就访问不到了

稍微说一嘴,idea在运行tomcat的机制
idea会按照你配置的tomcat为模板,创建一个copy后的tomcat来运行你的项目,每一个项目都会创建一个新的tomcat,以你配置的tomcat为模板
这个路径就是生成的tomcat

浏览器与服务器的小问题
获取浏览器时间和服务器时间
<%@ page import="java.time.LocalDateTime" %>
<%@ page import="java.time.format.DateTimeFormatter" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<%
LocalDateTime date = LocalDateTime.now();
String localDate = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
out.print("服务器时间为:"+ localDate);
Thread.sleep(3000);
%>
<script type="text/javascript">
var date = new Date().toLocaleTimeString();
document.write("浏览器时间为:" + date);
</script>
</head>
<body>
<h1>获得服务器时间和浏览器时间小案例</h1>
</body>
</html>
浏览器向服务器发送请求的3种方式
- 在地址栏中直接输入URL访问(get)
- 超链接的方式(get)
- 表单提交的方式(get/post),推荐使用post
Get请求与Post请求的区别
Get请求的特点
- 传输方式:数据通过URL传递
- 传输格式:只能传输文本格式
- 大小: 传输的数据大小受到限制(URL有最长限制)
- 传输速度快
Post请求的特点
- 请求方式:数据通过数据包的方式隐式传递
- 传输格式:支持任意类型的传输格式
- 大小: 理论上无大小限制(除非服务器端限制上传大小)
- 传输速度相比get慢
Tomcat各目录的作用,以及在IDEA中时候tomcat的一点细节
Tomcat各目录的作用

IDEA中时候tomcat的一点细节
- 运行tomcat项目时,解决修改了静态文件需要重启tomcat服务器的问题

- 在浏览器中访问时,虚拟路径太长的问题

理解HTTP协议
什么是HTTP协议
HTTP协议是超文本传输协议,用于规定发送各种请求,返回何种响应
HTTP工作原理
- HTTP协议遵循 请求(request)/响应(response)模型
- 在客户端没有发送请求给服务端时,服务端无法推送信息给客户端
- 请求时需要建立连接,在服务器完成响应后断开,连接不会一直存在(意味着每一次请求对于服务器来说都是一个新的用户访问了一个请求)
- 一个请求的页面中一旦引入了n个资源文件,则会多出n个请求
- HTTP1.0时,每次请求都会建立新的TCP连接,HTTP1.1 建立的TCP连接可以复用
HTTP协议的特点
- 支持B/S模式
- 简单快速>能够快速有效的处理大量请求
- 灵活> HTTP允许任意传输文件类型,使用content-type设置
- 无状态> 浏览器与服务器之间的连接是不持久的,无法保持事物处理的状态。例如记忆用户名等(需使用cookie或者session解决)
HTTP请求规则
HTTP协议默认端口为:80
HTTPS协议默认端口为:443
requet请求的格式为:
- 请求行:统一资源定位符(URL)、协议版本号
- 消息报头:包含请求的各种信息
- 可能的内容:POST请求发送的数据
response响应的格式为:
- 状态行:包含协议的版本号、响应码
- 消息报头:服务器信息、字符编码格式、MIME类型(文件类型)
- 响应的正文
常见的响应码
1XX:信息相响:表示接受到请求并且继续处理
2XX:处理成功响应:表示动作被成功的接收、理解和接受
3XX:重定向响应:为了完成指定的动作,必须完成进一步处理和操作
4XX:客户端错误:客户请求包含语法错误或者是不能正确执行
5XX:服务器端错误:服务器端不能正确执行一个正确的请求
200 OK //客户端请求成功
302 REDIRECT //重定向
403 Forbidden //服务器收到请求,但是拒绝提供服务(没有权限)
404 Not Found //请求资源不存在,如输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
JAVAWEB的基本入门(JSP、Tomcat)>从零开始学JAVA系列的更多相关文章
- JSP的执行原理、JSP的内置对象、四大作用域解析、MVC模式理解>从零开始学JAVA系列
目录 JSP的执行原理.JSP的内置对象.四大作用域解析.MVC模式理解 JSP的执行原理 这里拿一个小例子来解析JSP是如何被访问到的 首先将该项目部署到tomcat,并且通过tomcat启动 通过 ...
- JAVAWEB过滤器、监听器的作用及使用>从零开始学JAVA系列
目录 JAVAWEB过滤器.拦截器的作用及使用 过滤器Filter 什么是过滤器 为什么要使用过滤器(过滤器所能解决的问题) 配置一个过滤器完成编码的过滤 编写一个EncodingFilter(名称自 ...
- JAVAWEB - Servlet原理及其使用>从零开始学JAVA系列
目录 Servlet原理及其使用 什么是Servlet Servlet的使用 编写一个Servlet,使用继承HttpServlet的方式 配置web.xml 很简单的几个JSP文件 小提示,如果继承 ...
- JAVA数组的基础入门>从零开始学java系列
目录 JAVA数组的基础入门 什么是数组,什么情况下使用数组 数组的创建方式 获取数组的数据 数组的内存模型 为什么数组查询修改快,而增删慢? 查询快的原因 增删慢的原因 数组的两种遍历方式以及区别 ...
- IDEA使用Tomcat时控制台乱码的解决方案>从零开始学JAVA系列
IDEA使用Tomcat时控制台乱码的解决方案 解决方案1,修改启动时虚拟机参数 解决方案2,修改idea的设置 解决方案3,修改idea配置文件 在最后添加一行 '-Dfile.encoding=U ...
- spring框架的学习->从零开始学JAVA系列
目录 Spring框架的学习 框架的概念 框架的使用 Spring框架的引入 概念 作用 内容 SpringIOC的学习 概念 作用 基本使用流程 SpringIOC创建对象的三种方式 通过构造器方式 ...
- Session与Cookie的原理以及使用小案例>从零开始学JAVA系列
目录 Session与Cookie的原理以及使用小案例 Cookie和Session所解决的问题 Session与Cookie的原理 Cookie的原理 Cookie的失效时机 小提示 Session ...
- 数据库建模、面向对象建模>从零开始学java系列
目录 数据库建模 前置知识 使用PowerDesigner数据库建模设计 一对多CDM概念数据模型设计 多对多的PDM物理数据模型设计(针对mysql) PowerDesigner将不同的模型进行转换 ...
- 进入mysql的学习>从零开始学JAVA系列
目录 MySQL的学习 什么是MYSQL 安装MYSQL Window安装MYSQL(压缩包版) 什么是MYSQL 安装MYSQL Window安装MYSQL(压缩包版) MYSQL基本指令 DDL ...
随机推荐
- 【CSAPP】以CTFer的方式打开BufferLab
[WARNING] 本文是对CSAPP附带的Buffer Lab的究极指北,PWN小白趁机来练习使用pwntools和gdb && 用老朋友IDA查看程序逻辑(可以说是抄小路了x. L ...
- js笔记22
1.在拖拽元素的时候,如果元素的内部加了文字或者图片,拖拽效果会失灵? 浏览器会给文字和图片一个默认行为,当文字和图片被选中的时候,会有一个拖拽的效果,即使我们没有人为给他添加.所以当我们点击这个元素 ...
- Unity不规则按钮点击区域(UGUI)
文章目录 一. 前言 二. 最终效果 三. 实现 1.创建UICamera 2. UIPolygon节点 3. 编辑碰撞区域 5. 运行测试 6. UIPolygon代码 一. 前言 游戏开发中,可能 ...
- Netty 框架学习 —— 添加 WebSocket 支持
WebSocket 简介 WebSocket 协议是完全重新设计的协议,旨在为 Web 上的双向数据传输问题提供一个切实可行的解决方案,使得客户端和服务器之间可以在任意时刻传输消息 Netty 对于 ...
- 第9章:Ingress
9.1 Ingress为弥补NodePort不足而生 1 单独用service暴露服务的方式,在实际生产环境中不太合适 ClusterIP 只能在集群内部访问. NodePort 方式的话,测试环境使 ...
- vue3,后台管理列表页面各组件之间的状态关系
技术栈 vite2 vue 3.0.5 vue-router 4.0.6 vue-data-state 0.1.1 element-plus 1.0.2-beta.39 前情回顾 表单控件 查询控件 ...
- NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务
业精于勤,荒于嬉:行成于思,毁于随. 一.MongoDB服务下载安装(windows环境安装) 1.进入官网:https://www.mongodb.com/,点击右上角的 Try Free , 2 ...
- Java高质量面试总结
面试 一般都是由浅到深去问,思路是: 先考察基础是否过关,因为基础知识决定了一个技术人员发展的上限 再通过深度考察是否有技术热情和深度以及技术的广度 同时可能会提出一些质疑和挑战来考察候选人能否与有不 ...
- 浅析富文本编辑器框架Slate.js
浅析富文本编辑器框架Slate.js 本文不是关于Slate.js使用入门的文章,如果还不了解该框架,建议先阅读下官方的文档:Slate官网文档 关于Slate的一些特性 不同于其他编辑器类的库,Sl ...
- 第一章 - Java与线程
目录 01.Java和线程 02.Java与协程 03.CPU缓存结构和java内存模型 04.管程-悲观锁和锁优化 05.乐观锁 - 无锁方案 06.线程安全 07.线程池 08.JUC 09.高并 ...