HttpTomcat

本节内容:

  • Http协议
  • Tomcat服务器

 

下面开始的一系列内容都是JavaEE的内容,主要的内容见下图。JavaEE主要是做服务器端开发。

JavaEE全部规范:
有13门技术,主要做web开发的需要学习servlet和jsp。其他技术,像EJB、 JNDI、JSM现在用的少。

 

一、Http协议

1. 什么是Http协议

HTTP,超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的 一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为 了提供一种发布和接收HTML页面的方法。

 

2. Http协议的组成
Http协议由Http请求和Http响应组成,当在浏览器中输入网址访问某个网站时, 你的浏览器会将你的请求封装成一个Http请求发送给服务器站点,服务器接收到请 求后会组织响应数据封装成一个Http响应返回给浏览器。即没有请求就没有响应。

 

3. Http请求
打开Eclipse,"File"—>"New"—>"Dynamic Web Project",输入项目名,Dynamic web module version选择2.5,点击完成。(关于下图中的tomcat如何集成到eclipse中,下面会演示)

点开项目,在WebContent下新建一个form.html的表单页面,如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form action="#" method="post"> <!-- #代表本页 --><input type="text" name="username"/> <br /><!--没有name属性,数据是提交不到后台的--><input type="password" name="password"/> <br /><input type="submit" name="提交"/> <br /></form>
</body>
</html>

启动WEB12,然后使用IE浏览器访问localhost:8080/WEB12/form.html,使用IE上安装的插件httpwatch抓包。(这个小插件时httpwatch,傻瓜式安装就行。当然有的电脑会安装失败。安装不成功,也没办法。没装成功可以用火狐,火狐自带抓包工具)

注意看请求的参数是在url上。get请求的参数会出现在url和http请求行上。

把form.html中的提交方式改为post,再次访问,输入用户名密码提交:

 (1)请求行

请求方式:POST、GET
请求的资源:/DemoEE/form.html
协议版本:HTTP/1.1

  • HTTP/1.0,发送请求,创建一次连接,获得一个web资源,连接断开。
  • HTTP/1.1,发送请求,创建一次连接,获得多个web资源,保持连接。

 

(2)请求头
请求头是客户端发送给服务器端的一些信息,使用键值对表示key:value

常见请求头描述
Referer浏览器通知服务器,当前请求来自何处。如果是直接访问,则不会有这个头。常用于:防盗链
If-Modified-Since浏览器通知服务器,本地缓存的最后变更时间。与另一个响应头组合控制浏览器页面的缓存
Cookie与会话有关技术,用于存放浏览器缓存的cookie信息
User-Agent浏览器通知服务器,客户端浏览器与操作系统相关信息。
Connection保持连接状态。Keep-Alive表示连接中,close表示已关闭
Host请求的服务器主机名
Content-Length请求体的长度
Content-Type如果是POST请求,会有这个头,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码
Accept

浏览器可支持的MIME类型。文件类型的一种描述方式。
MIME格式:大类型/小类型[;参数]
例如:
text/html ,html文件
text/css,css文件
text/javascript,js文件
image/*,所有图片文件

Accept-Encoding浏览器通知服务器,浏览器支持的数据压缩格式。如:GZIP压缩
Accept-Language浏览器通知服务器,浏览器支持的语言。各国语言(国际化i18n)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(3)请求体

当请求方式是post的时,请求体会有请求的参数,格式如下:

username=zhangsan&password=123

如果请求方式为get,那么请求参数不会出现在请求体中,会拼接在url地址后面

http://localhost:8080...?username=zhangsan&password=123

 

4. Http响应

(1)响应行

  • Http协议
  • 状态码:常用的状态码如下:
    • 200 :请求成功。
    • 302 :请求重定向。
    • 304 :请求资源没有改变,访问本地缓存。
    • 404 :请求资源不存在。通常是用户路径编写错误,也可能是服务器资源已删除。
    • 500 :服务器内部错误。通常程序抛异常。
  • 状态信息:状态信息是根据状态码变化而变化的

 

(2)响应头

响应也都是键值对形式,服务器端将信息以键值对的形式返回给客户端

常见响应头描述
Location指定响应的路径,需要与状态码302配合使用,完成跳转。
Content-Type

响应正文的类型(MIME类型)
取值:text/html;charset=UTF-8

Content-Disposition

通过浏览器以下载方式解析正文
取值:attachment;filename=xx.zip

Set-Cookie与会话相关技术。服务器向浏览器写入cookie
Content-Encoding

服务器使用的压缩格式
取值:gzip

Content-length响应正文的长度
Refresh

定时刷新,格式:秒数;url=路径。url可省略,默认值为当前页。
取值:3;url=www.itcast.cn //三秒刷新页面到www.itcast.cn

Server指的是服务器名称,默认值:Apache-Coyote/1.1。可以通过conf/server.xml配置进行修改。<Connector port="8080" ... server="itcast"/>
Last-Modified服务器通知浏览器,文件的最后修改时间。与If-Modified-Since一起使用。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

补充:响应头Last-Modified

 

(3)响应体

响应体是服务器回写给客户端的页面正文,浏览器将正文加载到内存,然后解析渲染显示页面内容。

 

二、Tomcat

1. Web开发中的常见概念

(1)B/S系统和C/S系统

  • Brower/Server:浏览器 服务器 系统 --网站
  • Client/Server:客户端 服务器 系统 --QQ、飞秋、大型游戏

(2)web应用服务器

供向外部发布web资源的服务器软件。

(3)web资源

存在于web应用服务器可供外界访问的资源就是web资源,例如:存在于web应用服务器内部的Html、Css、js、图片、视频等。

1)静态资源:指web页面中供人们浏览的数据始终是不变。比如:HTML、CSS、 JS、图片、多媒体。
2)动态资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问 web页面看到的内容各不相同。比如:JSP/Servlet、ASP、PHP

javaWEB领域:动态资源认为通过java代码去动态生成html

 

(4)请求和响应

 

(5)请求的URL地址

 

2. Web开发中常用的web应用服务器

  • weblogic:oracle公司的大型收费web服务器 支持全部javaEE规范
  • websphere:IBM公司的大型收费web服务器 支持全部的javaEE规范
  • Tomcat:Apache开源组织下的 开源免费的中小型的web应用服务器,支持 javaEE中的 servlet 和 jsp规范

 

3. Tomcat的下载与安装

(1)下载tomcat

官方地址:http://tomcat.apache.org/,点击左侧菜单栏,选择下载的版本。比如我这里选择下载Tomcat8

 

(2)安装Tomcat

Tomcat有安装版和解压版(绿色版),上面介绍的就是解压版。

解压版,即绿色版,解压后直接使用,用的比较多。

 

4. Tomcat的目录结构

bin:脚本目录。

  • 启动脚本:startup.bat(widnows下)、startup.sh(Linux和Mac下)
  • 停止脚本:shutdown.bat(widnows下)、shutdown.sh(Linux和Mac下)

conf:配置文件目录 (config /configuration)

  • 核心配置文件:server.xml
  • 用户权限配置文件:tomcat-users.xml
  • 所有web项目默认配置文件:web.xml

lib:依赖库,tomcat和web项目中需要使用的jar包

logs:日志文件

  • localhost_access_log.*.txt tomcat记录用户访问信息,星*表示时间。例如:localhost_access_log.2017-10-28.txt

temp:临时文件目录,文件夹内内容可以任意删除。

webapps:默认情况下发布WEB项目所存放的目录。

work:tomcat处理JSP的工作目录。

 

5. Tomcat的启动与运行 

windows下:双击Tomcat下的bin下的startup.bat启动Tomcat

Linux和Mac下:进入tomcat解压后的目录,执行bin/start.sh

在浏览器的地址栏中输入http://localhost:8080,看到如下页面证明启动成功:

tomcat默认8080的页面,找的是webapps/ROOT/index.jsp


6. Web应用的目录结构

注意:WEB-INF目录是受保护的,外界不能直接访问。

serlvet3规范 就不需要web.xml了。一般现在都是基于2.5的规范开发。

 

7. 使用Eclipse绑定Tomcat(Mac下演示)

步骤1:windows下:打开Eclipse,点击Window/Preferences/Server/Runtime Environment;Linux或Mac下:Preference/Runtime Environment

 

步骤2:点击右侧的Add,添加服务器

 

步骤3:输入名字,选择服务器在硬盘的地址,点击Finish

 

步骤4:完成成功

 

步骤5:设置发布位置

修改tomcat发布的位置,修改后,ctrl+s保存即可

 

8. 新建WEB项目,并使用tomcat发布

(1)打开Eclipse,File—>New—>Dynamic Web Project

(2)输入项目名称,选择运行环境,以及servlet规范,点击Finish

(3)选中刚才创建的项目,鼠标右键,Run as—>Run on Server。

 

如果想发布后webapps下应用名和Eclipse中项目的名字不一样,可以选中项目,鼠标右键,选择Properties。输入web,选择"Web Project Settings",输入你想要的应用名。

 

当然,项目不一定要发布在tomcat的webapps目录下,可以放在其他位置,但是需要配置tomcat中的全局server.xml文件。

 

转载于:https://www.cnblogs.com/zhaojiankai/p/7905747.html

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

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

相关文章

python---线程与进程

一 线程 1.1 概述 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流&#xff0c;一个进程中可以并发多个线程&#xff0c;每条线程并行执行不同的任务。 Threading用于提供线程相关…

javascrpt --- 使用jquery添加dom元素和Angular ng-repeat生成select性能比较

今天用两种方法实现了动态的给select添加option的功能. 第一种是用jquery. // html <select id"drag-pointList"></select> // js $(#drag-pointList).children(option).remove(); // 清空之前的option let list res.data.list ; // res是ajax请…

【C语言及程序设计】项目2-15:模块化的简单银行系统设计

问题描述&#xff1a; https://edu.csdn.net/course/play/456/4808 // 银行系统.cpp: 定义控制台应用程序的入口点。 //#include "stdafx.h" #include <stdlib.h> #pragma warning (disable: 4996)int PassTest(); void ibalance(); void withdraw(); void de…

Android 6.0 动态权限申请

1. 概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予&#xff0c;运行时应用不再需要询问用户。在 Android 6.0 或更高版本对权限进行了分类&#xff0c;对某些涉及到用户隐私的权限可在运行时根据用户的需要动态授予。这样就不需要在安装时被强迫同意某些权限。 2. …

el-input输入金额,保留两位小数

需求&#xff1a;“只允许输入金额保留两位小数”&#xff0c;有2种实现方法 方法一&#xff08;通过正则控制&#xff09;&#xff1a; html&#xff1a; <el-inputv-model"inputTable.amount"input"formatNum(form.amount, amount)" ></el-i…

斜率DP总结

chunlvxiong的博客 T1&#xff1a;防御准备 三个月后第一次写博客&#xff0c;我们从这个题开始&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id3156。 这道题DP方程比较好写&#xff1a;用dp[i]表示1到i全部被控制的最小代价&#xff0c;那么dp[i]min{dp[j](i-…

前端使用react-intl-universal进行国际化

一、国际化 / i18n 目前国际化&#xff0c;就是开发者写对象&#xff0c;一个key关联若干语种的翻译。相比于浏览器自带的翻译功能&#xff0c;语义更加准确。 “国际化”的简称&#xff1a;i18n&#xff08;其来源是英文单词 internationalization的首末字符i和n&#xff0c;…

2021前端面试题

基础知识与素养 JS基本功训练与思考 程序设计的渗透与应用 业务技巧的积累与训练 生产力转换 项目的组织架构 转换专业人才的全面生产力 什么样的技术水平决定了你应该学习什么样的知识与技术&#xff0c;什么样的知识与技术水平决定了你到什么样的公司&#xff0c;到什么样的公…

glog日志库使用笔记

日志能方便地诊断程序原因、统计程序运行数据&#xff0c;是大型软件系统必不可少的组件之一。glog 是google的开源日志系统&#xff0c;相比较log4系列的日志系统&#xff0c;它更加轻巧灵活。 在Github上下载glog&#xff0c;解压后用CMake生成VS2017工程&#xff08;默认生成…

elementPlus关闭弹窗,页面原先滚动条消失

一开始以为是弹窗内容超过一屏引起&#xff0c;改为一屏内也不能解决。 打开控制台&#xff0c;发现弹窗后自动给body标签加上了类el-popup-parent–hidden&#xff0c;关闭后也没去除&#xff0c;因此手动删除该类。 document.getElementsByTagName(body)[0].className ;

在Windows下如何创建虚拟环境(默认情况下)

很多小伙伴平时在使用Python的时候&#xff0c;有的项目需要使用Python2来进行开发&#xff0c;有的项目则是需要Python3来进行开发。当不清楚怎么分开环境的时候&#xff0c;此时两个环境开始打架&#xff0c;彼此傻傻分不清楚。虚拟环境作为隔离的利器应运而生&#xff0c;其…

selenium python 入门-元素定位

环境搭建 安装教程 http://www.testclass.net/selenium_python/install-selenium/ chrome浏览器 还需要下载chrome driver 把下载的chromedriver .exe放到chrome安装目录下的Application目录下和 python所在的安装目录下&#xff0c;比如我的目录是C:\Program Files (x86)\Goog…

DPDK helloworld 源码阅读

在 DPDK Programmers Guides 中的 EAL 一篇中有一个图可以很清晰地看到一个DPDK的应用程序的大致执行思路&#xff1a; 初始化检查CPU支持、微架构配置等完成后&#xff0c;执行main()函数。 第一步是 rte_eal_init()&#xff0c;核心初始化和启动。其中线程使用的是pthread库&…

看了吗网址链接

sklearn实战-乳腺癌细胞数据挖掘&#xff08;博主亲自录制视频&#xff09; https://study.163.com/course/introduction.htm?courseId1005269003&utm_campaigncommission&utm_sourcecp-400000000398149&utm_mediumshare # -*- coding: utf-8 -*- ""&qu…

JMeter 性能测试进阶实战

课程简介 本课程制作的主要目的是为了让大家快速上手 JMeter&#xff0c;期间穿插了大量主流项目中用到的技术&#xff0c;以及结合当今主流微服务技术提供了测试 Dubbo 接口、Java 工程技术具体实施方案&#xff0c;注重实践、注意引导测试思维、拒绝枯燥的知识点罗列、善于用…

JavaScript高级程序设计阅读笔记

2020-11-15 通过初始化指定变量类型 数字-1 对象null和null的比较&#xff08;不理解&#xff09;使用局部变量将属性查找替换为值查找&#xff08;算法复杂度&#xff09;循环的减值迭代&#xff0c;降低了计算终止条件的复杂度switch快多个变量声明逗号隔开使用数组和对象字面…

windows任务计划程序 坑

转载于:https://www.cnblogs.com/kaibindirver/p/8109041.html

javascript --- 类、class、事件委托的编程风格

类风格: // 父类 function Widget(width, height) {this.width width || 50;this.height height || 50;this.$elem null; } Widget.prototype.render function($where) {if(this.$elem) {this.$elem.css({width: this.width "px",height: this.height "p…

堆和堆排序

堆和优先队列 普通队列&#xff1a;FIFO&#xff0c;LILO 优先队列&#xff1a;出队顺序和入队顺序无关&#xff0c;和优先级相关。一个典型应用就是操作系统中。动态选择优先级高的任务执行 堆的实现 最典型的堆就是二叉堆&#xff0c;就像是一颗二叉树。这个堆的特点&#xf…

ES5-1 发展史、ECMA、编程语言、变量、JS值

1. 5大主流浏览器及内核&#xff08;自主研发&#xff09; 浏览器内核IEtridentChromewebkit blinkSafariwebkitFirefoxgeckoOperapresto 2. 浏览器的历史 和 JS诞生 1989-1991 WorldWideWeb&#xff08;后来为了避免与万维网混淆而改名为Nexus&#xff09;是世界上第一个网页…