Tomcat服务器与Http协议之请求(get请求、post请求)和响应
来源:互联网 发布:st联盟软件下载 编辑:程序博客网 时间:2024/05/16 02:49
发展历程
1、最早的web服务器-NCSA(美国国家超级计算应用中心的缩写),由于主要开发者的离开,让其前景变得不明朗。所以一些开发者聚集在一起,对其进行了缺陷修复和增强代码,发布了新的版本Apache,即:“打补丁后的Web服务器(A Patchy Web Server)”。
2、Apache软件基金会(ASF),1999年成立。
主要职责:
1、通过供给 硬件、通信和商业基础设施的形式 为 开放、协作式软件开发项目 提供基础。
2、用公司和个人捐赠的资源创建一个独立法定企业,保证这些资源都用于公益事业。
3、为个人志愿者提供法律保护手段以避免受ASF项目相关的法律纠纷的影响。
4、保护Apache商标,以防止其被其他组织滥用。
3、Tomcat工程起源于早期的Java Servlet技术。Servlet是一种可以嵌入特定Web服务器中的Java应用程序(从此摆脱JavaSE基础,开始走向web应用),毫无疑问,第一个Servlet容器,即Java Web服务器是由Sun公司创建的。
于是在1999年的时候,Sun公司把Servlet容器的代码赠与ASF,于是 Servlet引擎+Apache Web服务器=Tomcat服务器。
4、Tomcat服务器第一版本3.x系列,支持Servlet2.2和JSP1.1(所以JSP的出现晚于Servlet)规范。
Tomcat4.0(代号Catalina)发布,Catalina对Tomcat的体系结构进行了完成的重构,并建立了新的代码库,支持Servlet2.3和JSP1.2规范。
5、作为Servlet容器,Tomcat是庞大的一组标准的主要组成部分,这组标准被整体称为Java企业版(Java EE)平台。JavaEE标准定义了一组基于Java的API(应用程序接口),适合为企业创建Web程序~
6、
打好基础
1、web服务软件作用:把本地资源共享给外部访问
2、Tomcat服务器基本操作:
启动: %tomcat%/bin/startup.bat 关闭: %tomcat%/bin/shutdown.bat 访问tomcat主页:http://localhost:8080
3、web应用目录结构
|- WebRoot 根目录 |-静态资源(html+css+javascript+images+xml) 可以直接被浏览器访问到的 |-WEB-INF 不可以直接被浏览器访问到 |-classes 存放class字节码文件 |-lib 存放jar包文件 web.xml web应用的配置文件,配置servlet
4、Servlet技术: 用java语言开发动态资源的技术
5、HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
1)http协议:对浏览器客户端和服务器端之间数据传输的格式规范。 2)http请求:浏览器->服务器端 格式: 请求行(请求方式(GET/POST) 请求资源(URI) http协议版本(http1.1)) 请求头(键值对形式存在。 host、user-agent、referer) 一个空行 实体内容(POST提交的参数) HttpServletRequest对象: 请求对象。获取请求信息。 请求行:request.getMethod() request.getRequestURI/getRequestURL() request.getProtocol(); 请求头: request.getHeader("name") request.getHeaderNames() 实体内容: request.getInputStream() 获取参数数据:(GET或POST) request.getParameter("name") 一个值的参数 request.getParameterValues("name"); 多个值的参数 request.getParameterNames() 所有参数 3)http响应: 服务器->浏览器端 格式: 响应行(http协议版本 状态码 描述) 常用的状态码: 200 302 404 500 响应头( location(结合302状态码完成请求重定向功能)、 refresh(定时刷新)、content-type、 content-disiposition(以下载方式打开)) 一个空行 实体内容 HttpServletResponse对象: 响应对象。设置响应信息。 响应行: response.setStatus(); 响应头: response.setHeader("name","value") 实体内容: (PrintWriter) response.getWriter().writer(); 字符内容 (OutputStream)response.getOutputStream().writer(); 字节内容
Web开发入门
1、软件的结构
C/S(Client - Server 客户端-服务器端)
**典型应用:**QQ,LOL等
特点:
1)必须下载特定的客户端程序。
2)服务器端升级、客户端升级。
B/S(Browser-Server 浏览器-服务器端)
典型应用:微博网页版,4399小游戏(俗称:网站)
特点:
1)不需要安装特定的客户端(只需要安装浏览器即可)
2)服务器端升级,浏览器不需要升级!
例如:就业签约系统和招聘通~
2、服务器
从物理上来说,服务器就是一台PC机器。8核,8G以上,T来计算,带宽100M
(这个去查下,详细讲讲~)
web服务器:PC机器安装一个具有web服务的软件,成为web服务器。
数据库服务器:PC机器安装一个具有数据管理服务的软件,称之为数据库服务器。
邮件服务器:PC机器安装一个具有发送邮件服务的软件,称之为邮件服务器。
3、web服务软件
web服务软件的作用:把本地的资源共享给外部访问。
4、常见的市面上的web服务软件
WebLogic:BEA公司的产品。收费的。支持JavaEE规范。
WebSphere:IBM公司的产品。收费的。支持JavaEE规范。
JBoss:Redhat公司的产品。收费的。支持JavaEE规范。
Tomcat:开源组织Apache的产品。免费的。支持部分的JavaEE规范。(Servlet、jsp、jdbc,但ejb,rmi不支持)
EJB:http://blog.csdn.net/jojo52013145/article/details/5783677
RMI:http://haolloyin.blog.51cto.com/1177454/332426/
Tomcat基本使用
2.1 下载并安装 1)到apache官网。www.apache.org http://jakarta.apache.org(产品的主页) 2)安装版:window (exe、msi) linux(rmp) 压缩版:window(rar,zip) linux(tar,tar.gz)学习时候使用 3)运行和关闭tomcat 3.1 启动软件 a)找到%tomcat%/bin/startup.bat ,双击这个文件 b)弹出窗口,显示信息(不要关闭次窗口) c)打开浏览器,输出以下地址 http://localhost:8080 d)看到一只猫画面,证明软件启动成功! 3.2 关闭软件 a)找到%tomcat%/bin/shutdown.bat,双击这个文件即可! c)打开浏览器,输出以下地址。看到“无法连接”(最好先清空浏览器缓存) 2.2 tomcat软件使用的常见问题 1)闪退问题 原因:tomcat软件是java语言开发的。 tomcat软件启动时,会默认到系统的环境变量中查找一个名称叫JAVA_HOME的变量。这个变量的作用找到tomcat启动所需的jvm。 解决办法; 到环境变量中设置JAVA_HOME的变量 JAVA_HOME= C:\Program Files\Java\jdk1.6.0_30 (注意别配置到bin目录下) 2)端口占用的错误 原因: tomcat启动所需的端口被其他软件占用了! 解决办法: a)关闭其他软件程序,释放所需端口 b)修改tomcat软件所需端口 找到并修改%tomcat%/conf/server.xml文件 <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 3)CATALINA环境变量问题 原因: tomcat软件启动后,除了查找JAVA_HOME后,还会再查找一个叫CATALINA_HOME变量,这个变量的作用是设置tomcat的根目录。 解决办法:建议不要设置CATALINA_HOME变量。检查如果有的话,清除掉!!! 2.3 体验tomcat软件作用 webapps目录: tomcat共享目录。需要共享的本地资源放到此目录中。 2.4 URL URL全名叫统一资源定位符,用于定位互联网的资源。 问题: http://localhost:8081/myweb/test.html http:// 协议。http协议。 localhost 域名。为了找到IP地址。 本地域名: localhost 外部域名:www.baidu.com 8081 端口。软件监听的 8080: tomcat默认的端口 3306:mysql数据库的端口 1521: orace数据库的端口。 /myweb: web应用的名称。默认情况下,在webapps目录下找 /test.html :资源名称。
3、Tomcat目录结构
4、手动开发动态资源
/* 5.1 静态资源和动态资源的区别 静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源。 动态资源: 当用户多次访问这个资源,资源的源代码可能会发生改变 5.2 动态资源的开发技术 Servlet : 用java语言来编写动态资源的开发技术。 Servlet特点: 1)普通的java类,继承HttpServlet类,覆盖doGet方法 2)Servlet类只能交给tomcat服务器运行!!!!(开发者自己不能运行!!!) Servlet手动编写步骤: 1)编写一个servlet程序,继承HttpServlet(导入tomcat服务器lib包下的servlet架包) public class HelloServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //解决中文乱码问题 resp.setContentType("text/html;charset=utf-8"); //向浏览器输出内容 resp.getWriter().write("这是第一个servlet程序。当前时间为:"+new Date()); } } 2)找到HelloServlet类的bin目录下的class字节码,然后把拷贝到tomcat的一个web应用中WEB-INF/classes目录下。 3)在当前web应用下的web.xml文件配置Servlet。 <!-- 配置一个servlet程序 --> <servlet> <!-- servlet的内部名称 ,可以自定义--> <servlet-name>HelloServlet</servlet-name> <!-- servlet类名: 包名+简单类名--> <servlet-class>gz.itcast.d_servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <!-- servlet的内部名称,和上面的名称保持一致!!!--> <servlet-name>HelloServlet</servlet-name> <!-- servlet的访问名称: /名称 --> <url-pattern>/hello</url-pattern> </servlet-mapping> 4)启动tomcat服务器,运行访问 访问servlet: http://localhost:8080/myweb/ */
6、Http协议入门
/* 6.1 什么是http协议 http协议: 对浏览器客户端和服务器端之间数据传输的格式规范 tcp/ip协议:关注的是客户端与服务器之间数据是否传输成功 http协议:是在tcp/ip协议之上封装的一层协议,关注的是数据传输的格式是否规范 6.2 查看http协议的工具 1)使用火狐的firebug插件(右键->firebug->网络) 2)使用谷歌的“审查元素” 3)使用系统自带的telnet工具(远程访问工具) a)telnet localhost 8080 访问tomcat服务器 b)ctrl+] 回车 可以看到回显 c)输入请求内容 GET /myweb/hello HTTP/1.1 Host: localhost:8080 Connection: keep-alive d)回车,即可查看到服务器响应信息。 6.3 http协议内容 请求(浏览器-->服务器) GET /day09/hello HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*;q=0.8 Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive 响应(服务器-->浏览器) HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Length: 24 Date: Fri, 30 Jan 2015 01:54:57 GMT this is hello servlet!!! */
7、http请求
/* GET /day09/hello HTTP/1.1 --请求行 Host: localhost:8080 --请求头(多个key-value对象) User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*;q=0.8 Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive --一个空行 name=eric&password=123456 --(可选)实体内容 7.1 请求行 GET /day09/hello HTTP/1.1 #http协议版本 http1.0:当前浏览器客户端与服务器端建立连接之后,只能发送一次请求,一次请求之后连接关闭。 http1.1:当前浏览器客户端与服务器端建立连接之后,可以在一次连接中发送多次请求。(基本都使用1.1)(寻找资源等图片也是一次请求) #请求资源 URL: 统一资源定位符。http://localhost:8080/day09/testImg.html。只能定位互联网资源。是URI 的子集。 URI: 统一资源标记符。/day09/hello。用于标记任何资源。可以是本地文件系统,局域网的资源(//192.168.14.10/myweb/index.html), 可以是互联网。 #请求方式 常见的请求方式: GET 、 POST、 HEAD、 TRACE、 PUT、 CONNECT 、DELETE 常用的请求方式: GET 和 POST 表单提交: <form action="提交地址" method="GET/POST"> <form> GET vs POST 区别 1)GET方式提交 a)地址栏(URI)会跟上参数数据。以?开头,多个参数之间以&分割。 GET /day09/testMethod.html?name=eric&password=123456 HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*;q=0.8 Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Referer: http://localhost:8080/day09/testMethod.html Connection: keep-alive b)GET提交参数数据有限制,不超过1KB。 c)GET方式不适合提交敏感密码。 d)注意: 浏览器直接访问的请求,默认提交方式是GET方式 2)POST方式提交 a)参数不会跟着URI后面。参数而是跟在请求的实体内容中。没有?开头,多个参数之间以&分割。 POST /day09/testMethod.html HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*;q=0.8 Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Referer: http://localhost:8080/day09/testMethod.html Connection: keep-alive name=eric&password=123456 b)POST提交的参数数据没有限制。 c)POST方式提交敏感数据。 7.2 请求头 Accept: text/html,image/* -- 浏览器接受的数据类型 Accept-Charset: ISO-8859-1 -- 浏览器接受的编码格式 Accept-Encoding: gzip,compress --浏览器接受的数据压缩格式 Accept-Language: en-us,zh- --浏览器接受的语言 Host: www.it315.org:80 --(必须的)当前请求访问的目标地址(主机:端口) If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT --浏览器最后的缓存时间 Referer: http://www.it315.org/index.jsp -- 当前请求来自于哪里 User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) --浏览器类型 Cookie:name=eric -- 浏览器保存的cookie信息 Connection: close/Keep-Alive -- 浏览器跟服务器连接状态。close: 连接关闭 keep-alive:保存连接。 Date: Tue, 11 Jul 2000 18:23:51 GMT -- 请求发出的时间 7.3 实体内容 只有POST提交的参数会放到实体内容中 7.4 HttpServletRequest对象 HttpServletRequest对象作用是用于获取请求数据。 核心的API: 请求行: request.getMethod(); 请求方式 request.getRequetURI() / request.getRequetURL() 请求资源 request.getProtocol() 请求http协议版本 请求头: request.getHeader("名称") 根据请求头获取请求值 request.getHeaderNames() 获取所有的请求头名称 实体内容: request.getInputStream() 获取实体内容数据 7.5 service 和 doXX方法区别 7.6 案例-获取浏览器的类型(user-agent) 7.7 案例- 防止非法链接(referer) 第1次 CSDN/51CTO -> 页面(点击下载) -> 弹出广告页面(点击此处下载) -> 开始下载 第2次 直接点击此处下载 -> 转回广告页面 -> 开始下载 非法链接: 1)直接访问下载的资源 2)不是从广告页面过来的链接 referer: 当前请求来自于哪里。 7.8 传递的请求参数如何获取 GET方式: 参数放在URI后面 POST方式: 参数放在实体内容中 获取GET方式参数: request.getQueryString(); 获取POST方式参数: request.getInputStream(); 问题:但是以上两种不通用,而且获取到的参数还需要进一步地解析。 所以可以使用统一方便的获取参数的方式: 核心的API: request.getParameter("参数名"); 根据参数名获取参数值(注意,只能获取一个值的参数) request.getParameterValue("参数名“);根据参数名获取参数值(可以获取多个值的参数) request.getParameterNames(); 获取所有参数名称列表 7.9 请求参数编码问题 修改POST方式参数编码: request.setCharacterEncoding("utf-8"); 修改GET方式参数编码: 手动解码:String name = new String(name.getBytes("iso-8859-1"),"utf-8"); 指定服务器编码: server.xml文件Connector标签—>URIEncoding="utf-8" */
原文地址:http://blog.csdn.net/tideseng/article/details/70152387
- tomcat服务器与Http协议之请求(get请求、post请求)和响应
- Tomcat服务器与Http协议之请求(get请求、post请求)和响应
- HTTP请求与响应-get和post
- HTTP请求(GET与POST区别)和HTTP响应
- http请求(get 和 post 请求)与响应
- http协议之get 和 post请求
- 网络传输协议(http协议/请求和响应/get方式与post方式)
- Http协议(get请求和post请求)
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- [转载]HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- HTTP请求(GET与POST区别)和响应
- SDUT-数据结构实验之求二叉树后序遍历和层次遍历
- 耦合和解耦的概念解析!
- OKhttp
- 【T-SQL基础】03.子查询
- 玲珑学院OJ 1125
- Tomcat服务器与Http协议之请求(get请求、post请求)和响应
- C# 正则表达式
- sublime的一些使用技巧
- 异步上传文件使用new FormData($(‘#uploadForm‘)[0])序列化表单
- git和github到底是什么的缩写?
- Filter
- 简单springData学习笔记
- C#读取Excel文件
- 利用python实现电脑自动关机