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 ...
随机推荐
- 详解Redis主从复制原理
文章首发于公众号 "蘑菇睡不着" 前言 Redis 的主从复制和 MySQL 差不多,主要起着 数据备份,读写分离等作用.所以说主从复制对 Redis 来说非常重要,而无论是面试还 ...
- python之list列表(基础篇)
特点:1.有序的 2.可以存放多个元素 3.每个元素可以是任何数据类型,4,通过下标值访问1,定义一个空列表 2,定义一个非空列表 3.访问列表中的元素(同str类型) 4,切片与步长(同str类型 ...
- js jquey 笔记
1.使用insertAfter 如果插入在tr后添加多行数据,数据会倒过来注意组字符串需要倒着循环 1).html方法,给元素添加html代码或者清空html代码(参数为空字符串): 2).appen ...
- Java:Java中equlas和==的区别
== 比较的是栈内存的地址值,用来判断两个对象的地址是否相同,即是否是指相同一个对象.比较的是真正意义上的指针操作. 基本数据类型如:byte,short,char,int,long,float,do ...
- 常见链表操作-链表中环的检测(JAVA实现)
问题如何检测一个单链表中是否有环,例如下图的例子. 解决思路1:快慢指针法这是最常见的方法.思路就是有两个指针P1和P2,同时从头结点开始往下遍历链表中的所有节点. P1是慢指针,一次遍历一个节点.P ...
- SpringMVC(7)格式化显示
在SpringMVC(六)数据验证中我们介绍了如何验证提交的数据的正确性,当数据验证通过后就会被我们保存起来.保存的数据会用于以后的展示,这才是保存的价值.那么在展示的时候如何按照要求显示?(比如:小 ...
- MySQL 中的转义字符`
` 是 MySQL 的转义符,用来避免列名或者表名和 mysql 本身的关键字冲突. 所有的数据库都有类似的设置,不过mysql用的是`而已.通常用来说明其中的内容是数据库名.表名.字段名,不是关键字 ...
- LeetCode周赛5214
我去,暴力超时,没啥人情味了.难受,一看答案,结果是dp的题目... 思路分析: 1.用个表记录下每个数当前的最大长度,同时是等差,说明有上一个数,那么当前的长度就是上一个数最大加一
- GIS坐标系测绘原理:大地水准面/基准面/参考椭球体/EPSG/SRI/WKT
预热文章系列:<GIS历史概述与WebGis应用开发技术浅解>.<GIS坐标系:WGS84,GCJ02,BD09,火星坐标,大地坐标等解析说与转换>.<OGC标准WMTS ...
- 浅谈C++11中的多线程(一)
摘要 本篇文章围绕以下几个问题展开: 进程和线程的区别 何为并发?C++中如何解决并发问题?C++中多线程的基本操作 同步互斥原理以及多进程和多线程中实现同步互斥的两种方法 Qt中的多线程应用 c++ ...