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 ...
随机推荐
- matplotlib 并列条形图
1 绘制并列条形图,并在条形图上加标注 1.1 代码 from matplotlib import pyplot from matplotlib import font_manager import ...
- 『无为则无心』Python基础 — 8、Python中的数据类型(数值、布尔、字符串)
目录 1.数据类型介绍 2.数值型(Number) 3.布尔型(bool) 4.None(空值) 5.常量 6.字符串(String) 1.数据类型介绍 (1)什么是数据类型 在生活中,我们日常使用的 ...
- 【学习】自定义view
自定义控件其实很简单1/2 Canvas的使用 自定义控件其实很简单1/3 Shader与画布的旋转 自定义控件其实很简单2/3 view的测量 自定义控件其实很简单1/4 FontM ...
- 『心善渊』Selenium3.0基础 — 8、使用CSS选择器定位元素
目录 1.CSS选择器介绍 2.CSS选择器定位语法 3.Selenium中使用CSS选择器定位元素 (1)通过属性定位元素 (2)通过标签定位元素 (3)通过层级关系定位元素 (4)通过索引定位元素 ...
- 如何在国产龙芯架构平台上运行c/c++、java、nodejs等编程语言
高能预警:本文内容过于硬核,涉及编译器原理.cpu指令集.机器码.编程语言原理.跨平台原理等计算机专业基础知识,建议具有c.c++.java.nodejs等多种编程语言开发能力,且实战经验丰富的资深开 ...
- Centos7搭建k8s集群
一.部署环境 操作系统:CentOS Linux release 7.6.1810 (Core) 安装软件: docker:18.06.3-ce kubernetes:v1.15.4 二.部署架构: ...
- 浅读tomcat架构设计之Pipeline-Valve管道(4)
tomcat Container容器处理请求是使用Pipeline-Valve管道来处理的,后续写的tomcat内存马,和他紧密结合 Pipeline-Valve是责任链模式,责任链模式是指在一个请求 ...
- 接口自动化框架搭建Unittes+HTMLTestRunner
本次主要尝试搭建接口自动化框架,基于 unittest+HTMLTestRunner 框架主要模块: config: 存放配置文件 lib: 封装了一些接口前置函数:处理各种事物 log: 存放生成的 ...
- SpringMVC(2)经典的HelloWorld实现
我机器的开发环境为: Ubuntu12.04(不同操作系统对本系列项目没有影响): 开发工具:Eclipse For JavaEE: 数据库:MySql5.5.35; 运行环境:TomCat V7.0 ...
- 详解Docker 端口映射与容器互联
详解Docker 端口映射与容器互联 1.端口映射实现访问容器 1.从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的. 当容器中运行 ...