Web-第七天 HTTP&Tomcat学习 今日内容介绍 访问tomcat下已经发布的web项目 今日内容学习目标 能够描述出浏览器和服务器交互过程 能够产生HTTP请求协议格式 能够产生HTTP响应协议格式 看得懂WEB项目的目录结构 使用Tomcat发布web项目,并成功访问 在eclipse下发布web项目 为了可以通过浏览器访问到自己tomcat下的web项目,我们需要先了解以下内容: HTTP协议:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。用于定义WEB浏览器与WEB服务器之间交换数据的过程。 HTTP协议的作用 HTTP协议是学习JavaWEB开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点。 HTTP协议的特点 基于请求/响应模型的协议。请求和响应必须成对;先有请求后有响应。 HTTP协议默认的端口:80 例如:http://www.:80 HTTP/1.0,发送请求,创建一次连接,获得一个web资源,连接断开。 HTTP/1.1,发送请求,创建一次连接,获得多个web资源,连接断开。 HTTP请求协议、HTTP响应协议。 HTTP请求包括:请求行、请求头、请求体 HTTP响应包括:响应行、响应头、响应体 准备工作进行的步骤,步骤1和2是文档后半段讲解的内容,此处暂时了解即可。 1. 创建项目,JavaWeb项目,选择版本为2.5 步骤1:在eclipse中New/Dynaimc Web Project 步骤2:创建day12 web项目 2. 测试用例,编写“form.html”页面,并提供两个表单,分别设置表单的提交方式为:get和post。将表单提交位置设置成#,表示提交到当前表单。 <form action="#" method="get"> 用户名:<input type="text" name="username" value="jack" /> <br/> 密码:<input type="text" name="password" value="1234" /> <br/> <input type="submit" value="get提交" /> </form> <form action="#" method="post"> 用户名:<input type="text" name="username" value="jack" /> <br/> 密码:<input type="text" name="password" value="1234" /> <br/> <input type="submit" value="post提交" /> </form> 3. 安装HttpWatch,用于抓取HTTP协议的数据包(抓包) 操作系统不同,浏览器不同,需要的HttpWatch的版本不同。 HTTP请求格式:请求行、请求头、请求体。 如下图,我们提供两种请求方式抓包结果: GET请求抓包数据: POST请求抓包数据: 请求行 例如:POST /day09/01.http/form.html HTTP/1.1 请求行必须在HTTP请求格式的第一行。 请求行格式:请求方式 资源路径 协议/版本 请求方式:协议规定7种,常用两种:GET和POST GET请求: 将请求参数追加在URL后面,不安全。例如:form.html?username=jack&username=1234 URL长度限制GET请求方式的数据大小。 没有请求体 POST请求 请求参数显示请求体处,较安全。 请求数据大小没有显示。 只有表单设置为method=”post”才是post请求.其他的都是get请求。 常见GET请求:地址栏直接访问、<a href=””>、<img src=””> 等 请求头 例如:Host: localhost:8080 请求头从第二行开始,到第一个空行结束。及请求头和请求体之间存在一个空行。 请求头通常以键值对(key:value)方式传递数据。 key为规范规定的固定值 value 为key对应的取值,通常是一个值,可能是一组。 常见请求头 描述 (红色掌握,其他了解) 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) 请求体 通常情况下,只有post请求方式才会使用到请求体,请求体中都是用户表单提交的数据,每一项数据都使用键值对(k=v),多组值使用&相连。 例如;username=jack&password=1234 HTTP响应格式:响应行、响应头、响应体 如下图,我们提供的响应的抓包结果(HttpWatch只支持GBK编码,否则中文会出现乱码) 响应行 例如:HTTP/1.1 200 OK 格式:协议/版本 状态码 状态码描述 状态码:服务器与浏览器用于确定状态的固定数字号码 200 :请求成功。 302 :请求重定向。 304 :请求资源没有改变,访问本地缓存。 404 :请求资源不存在。通常是用户路径编写错误,也可能是服务器资源已删除。 500 :服务器内部错误。通常程序抛异常。 响应头 响应头也是用的键值对k:v 服务器通过响应头来控制浏览器的行为,不同的头浏览器操作不同。 常见请求头 描述 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. //三秒刷新页面到www. Server 指的是服务器名称,默认值:Apache-Coyote/1.1。可以通过conf/server.xml配置进行修改。<Connector port="8080" ... server="javahelp"/> Last-Modified 服务器通知浏览器,文件的最后修改时间。与If-Modified-Since一起使用。 响应体 响应体,就是服务器发送给浏览器的正文。 WEB采用B/S通信模式,通过超文本传送协议(HTTP, Hypertext transport protocol)进行通信。通过浏览器地址栏编写URL,向服务器发送一个请求,服务器端根据请求进行相应的处理,处理完成之后,会向浏览器作出一个响应,及将服务器端资源发送给浏览器。 C/S架构:Client/Server 客户端/服务器。要求客户端电脑安装一个客户端程序。 常见应用:QQ,迅雷,360,旺旺 等 优点: 1. 用户体验好,效果炫 2. 对信息安全的控制较强 3. 应用服务器运行数据负荷较轻,部分计算功能在客户端完成。 缺点: 1. 占用硬盘空间 2. 维护麻烦 3. 安装使用依赖其他条件 B/S架构:Browser/Server 浏览器/服务器 。通过浏览器与服务器交互,不需要安装其他程序 常见应用:网银系统,淘宝,京东 12306 等 优点: 1. 维护和升级简单,无缝升级。 2. 不用必须安装程序,操作系统内置了浏览器。 缺点: 1. 动画效果受浏览器限制 2. 对信息安装控制较差。例如:网银就需要使用U盾,在浏览器端加密。 3. 应用服务器运行数据负荷较重。大部分计算都在服务器端,增加服务器压力。使用Ajax可以改善部分用户体验。 静态资源:指web页面中供人们浏览的数据始终是不变。比如:HTML、CSS、JS、图片、多媒体。 动态资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。比如:JSP/Servlet、ASP、PHP JCP(Java Community Process) Java技术规范制定与更新的国际组织。主要维护规范包括:J2ME、J2SE、J2EE,XML等。 J2EE 企业级开发Java规范。标准规范包括: servlet、jsp、jdbc、xml、jta、javamail等。在java中规范就是接口。J2EE又称为JavaEE。 WEB服务器对JavaEE规范部分或全部支持(实现),也就是WEB服务器实现部分或全部接口。 常见的WEB服务器: 1. Tomcat:Apache组织提供一个免费的小型的服务器软件。支持Servlet和JSP规范。 2. WebLogic:Bea公司的一个收费的大型的服务器软件,后被Oracle收购。支持EE的所有的规范 3. WebSphere:IBM公司的一个收费的大型的服务器软件,支持EE的所有的规范。 4. JBoss:是一个基于J2EE的开放源代码的应用服务器。JBoss是一个管理EJB的容器和服务器,JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。 URL (Uniform Resource Locator) ,统一资源定位符是对互联网上资源位置的一种表示,互联网上的每个文件都有一个唯一的URL。 完整格式如下 协议://域名:端口号/资源位置?参数=值 协议,http、https、ftp等 域名,域名或IP地址,都可以访问WEB资源 端口号,程序必须使用端口号,才可以让另一个计算机访问。http协议的默认端:80 资源位置,用于描述WEB资源再服务器上的位置。 参数=值,浏览器和服务器交互传递的数据 例如: 常见路径 http://www.:80/subject/javaeezly/index.shtml 百度搜索“Java帮帮” https://www.baidu.com/s?cl=3&wd=%B4%AB%D6%C7%B2%A5%BF%CD Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 支持Servlet和JSP 规范,且最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。 tomcat 目前存在很多版本,希望大家了解tomcat的版本,从而知道自己的创建的项目使用的是几版本规范,不同版本的规范技术可能不同。我们学习的WEB5.0,Servlet规范2.5,tomcat至少使用6版本。 官网地址:http://tomcat./whichversion.html Tomcat版本 Servlet版本 JSP版本 EL版本 JavaEE版本 JDK版本 7.0.x 3.0 2.2 2.2 6.0 6 (1.6) 6.0.x 2.5 2.1 N/A 5.0 5 (1.5) 步骤一:下载一个tomcat服务器软件. http://tomcat./download-70.cgi 步骤二:解压下载好的zip文件. 将解压后的文件copy到一个没有中文和空格的路径下即可. 例如:D:\java\tomcat\apache-tomcat-7.0.68 bin:脚本目录 启动脚本:startup.bat 停止脚本:shutdown.bat conf:配置文件目录 (config /configuration) 核心配置文件:server.xml 用户权限配置文件:tomcat-users.xml 所有web项目默认配置文件:web.xml lib:依赖库,tomcat和web项目中需要使用的jar包 logs:日志文件. localhost_access_log.*.txt tomcat记录用户访问信息,星*表示时间。 例如:localhost_access_log.2016-02-28.txt temp:临时文件目录,文件夹内内容可以任意删除。 webapps:默认情况下发布WEB项目所存放的目录。 work:tomcat处理JSP的工作目录。 tomcat解压目录/bin/startup.bat 双击运行启动tomcat 访问路径:http://localhost:8080/ 如果没有配置JAVA_HOME环境变量,在双击“startup.bat”文件运行tomcat时,将一闪立即关闭。且必须配置正确,及JAVA_HOME指向JDK的安装目录 当同一台计算机启动两个tomcat时,第二个tomcat将会在控制台抛异常,摘要信息如下: 严重: Failed to initialize end point associated with ProtocolHandler ["http-bio-8080"] java.net.BindException: Address already in use: JVM_Bind <null>:8080 ... Caused by: java.net.BindException: Address already in use: JVM_Bind ... 控制台将出现大量异常信息,描述的是3个端口被占用(8080、8009、8005 ) 通过 $JAVA_HOME/conf/server.xml修改端口号。 在JavaEE规范中,WEB项目存在一定的目录结构,具体结构如下: 项目名称 (webapps 文件夹) |-----静态资源.HTML,CSS,JS |-----WEB-INF (不能直接通过浏览器进行访问) |----web.xml 当前WEB项目的核心配置,Servlet2.5必须有,3.0可省略。 |----lib 当前WEB项目所需要的第三方的jar的存放位置。 |----classes Java源码编译后生成class文件存放的位置。 步骤1:获得服务器运行环境配置,Window/Preferences/Server/Runtime Environmen 步骤2:添加服务器 步骤3:选择服务器在硬盘的地址,然后所有的都是确定/Next/Finish 步骤4:完成成功 步骤5:设置发布位置 修改tomcat发布的位置 步骤1:项目右键/Run As/Run on Server 步骤2:选择WEB服务器执行程序。 步骤3:选择或添加文本框 今天我们已经学习了tomcat和web项目使用和编写,明天我们将学习动态资源技术Servlet,今天我们将编写servlet的入门案例,所有步骤为固定内容,今天只需完全模仿。 1. 创建 day12 web项目 2. 创建类,继承HttpServlet,复写doGet方法 package cn.com.javahelp.demo01.a_servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloServlet extends HttpServlet{ @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("get请求将执行"); } } 3. 编写配置文件 <servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>cn.javahelp.demo01.a_servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> 4. 浏览器访问 在浏览器地址栏输入:http://localhost:8080/day12/hello 浏览器显示空白页面 控制打印信息 |
|