Servlet 远航 预备篇
- 一超文本转移协议HTTP
- 1HTTP请求
- 2HTTP响应
- 二Tomcat
- 1下载和配置Tomcat
- 2Tomcat环境变量
- 3启动和停止Tomcat
- 4定义Context
- 5定义资源
趁着现在项目不是很紧,我打算抽出一些时间写个Servlet和JSP的一个专题, 算是对自己这么多年来的一个技术总结吧!
我们会从最基础的开始包括HTTP协议的讲解,逐渐深入到最后的java主流框架都会进行深入的源码解析.Let’s get to work…
一.超文本转移协议(HTTP)
HTTP协议使得Web服务器与浏览器之间可以通过互联网(Internet)或者企业内部网(Intranet)来交换数据.万维网联盟(W3C)是一个开发标准的国际化社区,它负责修订和维护这个协议.HTTP的第一个版本是HTTP0.9,之后是HTTP1.0 最后又被HTTP1.1取代.HTTP1.1是在W3C的RFC2616中定义的.
Web服务器每天24小时运行,随时等待HTTP客户端的连接和资源请求.在HTTP中,总是由客户端发起连接,服务端从不主动连接客户端.在查找某个资源时,用户是通过点击一个包含URL(Uniform Resource Locator,统一资源定位器)的链接,或在他的浏览器地址栏中输入一个URL进行的.
- 下面举URL的两个例子:
http://google.com/index.html
http://facebook.com/index.html
URL的第一部分是http,它是协议的标识.并非所有的URL都用HTTP.例如下面两个例子,虽然没用HTTP,但它们是有效的:
mailto:joe@example.com
ftp://marketing@ftp.example.org
一般来说,URL的格式是这样的:
protocol://[host.]domain[:port][/context][/resource][?query string]
或者如下所示:
protocol://IP address[:port][/context][/resource][?query string]
- 方括号中的内容都是可选的,因此URL可以像http://yahoo.ca或者http://192.168.1.9这么简单.另外,IP地址其实就是分配给某一台计算机或者另一种设备的一个数字签名.一台计算机可以有多个域名,因此,几个域名也可以同时共用一个IP地址.例如可以不用http://google.com,也可以用http:/209.85.143.99 为查询某个域名的IP地址可以在控制台使用ping命令,如:
ping google.com
IP地址很难记住,人民都喜欢使用域名,但是有些域名是无法买到的,如example.com和example.org,因为它们是留着备用的,如编写文档时作为示例用.
主机名host部分可以有也可以,它们表示的则是互联网或者内部网中另一个完全不同的位置.如http://yahoo.com(没有主机名)与http://mail.yahoo.com(有主机名,为mail)表示的是两个完全不同的位置,www是最盛行的主机名,因此它常常省略.
80是HTTP默认端口号,如果WEB服务器在80端口上就不需要端口号也能到达主机,否则每次访问WEB服务器就需要输入端口号.例如:Tomcat默认端口为8080上允许,因此需要输入端口号:
http:localhost:8080
localhost是一个保留名称,用来表示主机,即正在运行WEB浏览器的这台计算机.
URL中的context部分指应用程序的名称,可以省略.Web服务器可以运行多个context或多个应用程序.其中一个可以设置为默认context,如果请求的是默认中的context资源,则URL中的context部分可以省略.
一个context可以有一个或多个默认资源(一般为index.html index.htm或者default.htm).一个没有资源名称的URL,通常作为默认资源.如歌context中包含多个资源,当客户端没有指定默认资源时,将总是返回优先级最高的那一个.
在资源名称之后,一般是一个或者多个查询字符串.查询字符串是指可以传到服务器进行处理的一个键/值对.
1.1HTTP请求
一个HTTP请求中包含三个部分:
- 方法/统一资源标识符(URI)/协议/版本
- 请求标头
- 实体主体
方法/URL协议版本号,放在请求的第一行.
HTTP1.1支持7种请求类型:GET POST HEAD OPTIONS PUT DELETE以及TRACE
URI用于指定一个互联网资源,是相对于服务器的根目录.以正斜线(/)开头.统一资源定位器(URL)实际上也是一种URI.
请求标头中包含关于客户端环境和请求实体主体的有用信息.各标头之间用一个回车换行序列符隔开
在标头和实体主体之间是一个空行(CRLF),对于HTTP请求格式很重要,CRLF告诉服务器,实体主体从这里开始.
1.2HTTP响应
一个HTTP响应中也包含三个部分:
- 协议/状态码/描述
- 响应标头
- 实体主体
响应标头的第一行告诉我们所使用的协议版本是HTTP1.1,并且请求成功(200)
响应标头包含与HTTP请求中类似的游泳信息.响应实体主体是响应本身的HTML内容.标头和实体主体之间用一系列的回车换行符(CRLF)隔开.
WEB服务器响应成功时返回状态码200,未授权访问状态码是401,未经允许的HTTP方法是405;
二.Tomcat
2.1下载和配置Tomcat
从http:tomcat.apache.org下载最新版本Tomcat,并且应该是zip或gz格式的最新版二进制发行包. 解压完在安装目录下看到几个目录: - bin目录看到几个用来起点和停止Tomcat的程序. - webapps在这里部署应用程序. - conf目录包含了配置文件,包括server.xml和tomcat-users.xml文件. - lib目录,包含了编译Servlet和定制标签所需要的Servlet和JSP的API.
2.2Tomcat环境变量
1.===> 进入bin目录下,双击startup.bat看是否报错。一般肯定会报。
2.===> 右键我的电脑===>高级===>环境变量 新建一个 变量名为 JAVA_HOME 然后变量值是 你的JDK的bin目录的上一层。 再新建一个 变量名为CATALINA_HOME 变量值是你的Tomcat的bin的目录的上一层。
3.===> 进入Tomcat bin目录下 双击shutdown.bat 然后重复1 的操作。看是否报错。应该不报了。
4.===> 进入apache-tomcat-5.5.12\conf 目录下 找到tomcat-users.xml 然后创建一个用户名密码。
5.===>然后进入Tomcat主目录中conf目录下的server.xml文件,找到其中的Connector port=”8080”,并将其更改为Connector port=”8088”
jdk+tomcat环境变量配置在blog里记录一下,以备后用。
JDK环境变量配置:
如果你的JDK安装在C盘里,如:C:\j2sdk1.4.2_05,那么就在系统变量里(当然也可以在用户变量里)点新建:
变量名:JAVA_HOME
变量值:C:\j2sdk1.4.2_05
再次点新建:
变量名:classpath
变量值:.;%JAVA_HOME%\lib\dt.jar;
并在path里加入 .;%JAVA_HOME%\bin;
那么你的JDK就配置成功了,当然最好是再试验一下是否配置成功,那么就写一个简单的程序验证一下:
Public class Test{
public static void main{
System.out.println("successful")
}
}
运行代码,如果没问题,那一切OK,有问题,请检查一下上边所写的是否有错。
Tomcat环境变量配置:
如果你的Tomcat安装在C盘里,如:F:\Tomcat50(在这里切记一下,安装Tomcat时,在其字母周围一定不要存在空格,否则最后可能导致配置不成功)
同样,在系统变量里点新建:
变量名:CATALINA_BASE
变量值:F:\Tomcat50;
再次新建:
变量名:CATALINA_HOME
变量值:F:\Tomcat50;
点击确定后在classpath中加入%CATALINA_HOME%\common\lib\servlet-api.jar;
在path中加入%CATALINA_HOME%\bin;
确定后你的Tomcat就配置好了,同样要验证是否配置成功,那就运行Tomcat,点击启动(或Start service)后,打开浏览器,敲入http://localhost:8080,如果出现页面,那么配置成功。
经常看到许多人问如何配置JDK和JSP,现在我把方法总结下,希望对大家有所帮助。
第一步:下载jdk和tomcat
第二步:安装和配置你的jdk和tomcat:执行jdk和tomcat的安装程序,然后设置按照路径进行安装即可。
1.安装j2sdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的jdk安装在c:\jdk1.6):
JAVA_HOME=c:\jdk1.6
classpath=. ;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\ lib\tools.jar;(.;一定不能少,因为它代表当前路径)
path=%JAVA_HOME%\bin
接着可以写一个简单的java程序来测试JDK是否已安装成功:
public class Test{
public static void main(String args[]){
System.out.println(“This is a test program.”);
}
}
将上面的这段程序保存为文件名为Test.java的文件。
然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令
javac Test.java
java Test
此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印出这句话,你需要仔细检查一下你的配置情况。
2.安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在c: \Tomcat):
CATALINA_HOME: C: \Tomcat
CATALINA_BASE: C: \Tomcat
TOMCAT_HOME: C:\Tomcat
然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的servlet.jar追加到classpath中去,修改后的classpath如下:
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet.jar;
接着可以启动tomcat,在IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。
第三步:建立自己的jsp app目录
1.到Tomcat的安装目录的webapps目录,可以看到ROOT,examples, tomcat-docs之类Tomcat自带的的目录;
2.在webapps目录下新建一个目录,起名叫myapp;
3.myapp下新建一个目录WEB-INF,注意,目录名称是区分大小写的;
4.WEB-INF下新建一个文件web.xml,内容如下:
2.3启动和停止Tomcat
可以使用bin目录下startup.bat(Windows)或startup.sh文件(Unix/Linux/Mac Os)来启动Tomcat. 在浏览器中输入以下地址来测试Tomcat:
http://localhost:8080
运行bin目录下的shutdown.bat(Windows)或shutdown.sh()(Unix/Linux/Mac Os)文件来停止Tomcat.
2.4定义Context
为了将一个Servlet/JSP应用程序部署到Tomcat中,需要显示或隐式地定义一个Tomcat context,每个Tomcat context都表示Tomcat中的一个web应用程序. 显示定义Tomcat context有几种方式:
在Tomcat的conf/Catalina/localhost目录下创建一个XML文件.
context文件中必须包含一个Context元素作为其根元素.没有子元素,并且是文件中的唯一元素.例如:
Context docBase=”C:/apps/commerce” reloadable=”true”/>
它唯一必要属性是docBase,用来指定应用程序的位置.reloadable属性是可选的,如果reloadable存在并且为true,Tomcat会对应用程序进行监测,每当发现这种变更时,Tomcat就会重新载入应用程序.
- 在Tomcat的conf/server.xml文件中添加一个Context元素.
定义context的另一种做法是在conf/server.xml文件中添加一个Context元素.在server.xml的Host标签下添加Context标签,并指定path属性.例如:
<Host name"localhost" appBase="webapps" unpackWARs="true"autoDeploy="true"><Context path="/commerce"docBase="C:/apps/commerce"reloadable="true"/>
</Host
不建议通过server.xml来管理context,因为只有重启Tomcat,更新才会生效.
- 通过将一个war文件或者整个应用程序复制到Tomcat的webapps目录下,来隐式地部署应用程序.
2.5定义资源
定义一个JNDI资源,供应用程序在Tomcat context定义中使用,资源用Context元素下的Resource元素表示.
例如:为了添加一个打开MySQL数据库连接的DataSource资源,需添加这个Resource元素:
<Context [path="/appName"] docBase="..."><Resource name="jdbc/dataSourceName"auth="Container"type="javax.sql.DataSource"username="..."password="..."driverClassName="com.mysql.jdbc.Driver"url="..."/>
</Context>
Servlet 远航 预备篇相关推荐
- 微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 提取util公用方法 |基于最新版1.0开发者工具
iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...
- 数据分析师的编程之旅——Python爬虫预备篇(2)前端设计
作者:李禹锋,重庆芝诺大数据分析有限公司数据挖掘工程师. 有一个程序猿的岗位叫做前端工程师,当前市场需求量也不小,主要是以HTML5框架(H5).CSS3样式表和JavaScript语言(简称JS)为 ...
- 添物零基础到大型全栈架构师 不花钱学计算机及编程(预备篇)- 概述
不花钱学计算机及编程 (预备篇) --概述:如何学习计算机及编程 class="video_iframe" height="375" width="5 ...
- 从零开始的 Rust 语言 blas 库之预备篇(1)—— blas 基础介绍
从零开始的 Rust 语言 blas 库之预备篇(1)-- blas 基础介绍 下一篇:从零开始的 Rust 语言 blas 库之预备篇(2)-- blas 矩阵格式详解 文章部分参考:https:/ ...
- Servlet第六篇【Session介绍、API、生命周期、应用、与Cookie区别】
2019独角兽企业重金招聘Python工程师标准>>> 什么是Session Session 是另一种记录浏览器状态的机制.不同的是Cookie保存在浏览器中,Session保存在服 ...
- ant的下载与安装——mybatis学习笔记之预备篇(一)
看到这个标题是不是觉得有点奇怪呢--不是说mybatis学习笔记吗,怎么扯到ant了?先别急,请容我慢慢道来. mybatis是另外一个优秀的ORM框架.考虑到以后可能会用到它,遂决定提前学习,以备不 ...
- Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】
2019独角兽企业重金招聘Python工程师标准>>> 什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直 ...
- mysql workbench_爬虫实例:玩转mysql(预备篇)
考完试的第一篇文章,开心~ /1.什么是数据库/ 数据库是"按照数据结构来组织.存储和管理数据的仓库".是一个长期存储在计算机内的.有组织的.可共享的.统一管理的大量数据的集合. ...
- Servlet第四篇【request对象常用方法、应用】
什么是HttpServletRequest HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这 ...
最新文章
- HarmonyOS之常用布局StackLayout的使用
- wdcp 去掉index.php,Nginx环境下Oneindex去除网址内的“?”
- execjs执行js出现window对象未定义时的解决_10个常见的JS语言错误总汇
- Flink 里程碑版本即将发布,快点入手
- combox数据过滤 wpf_- - WPF:筛选ItemCollection的ComboBox也会筛选绑定到同一ComboBoxes的其他ItemsSource_c#_酷徒编程知识库...
- php多级查询,MySQL 多级查询
- ClassicLink概述
- 深度学习——Nesterov方法的学习笔记
- python的作用域分别有几种_Python中作用域的深入讲解
- 深入浅出数据库索引原理
- Skype for business之Skype会议直播
- C++中圆周率Π的几种表示方法arccos(-1), 2arcsin(1), 4arctan(1)的用法
- Wi-Fi6移动热点功能配置
- Sublime 如何替换换行符
- Eigen aligned_allocator
- the connection to the server was unsuccessful(file ///android_asset/www/index.html)
- 如何在Jupyter Notebook中编写R程序
- iOS-Core-Animation-Advanced-Techniques(三)
- 《版式设计——日本平面设计师参考手册》—第1章如何存储旧版本的InDesign文件...
- PTA 最佳情侣身高差
热门文章
- AMD显卡驱动升级:《帝国时代4》性能暴涨45%,玩家热情再回归!
- OERu使大学教育负担得起
- 北京移动推被叫全免加剧竞争
- 验证码无法显示:Could not initialize class sun.awt.X11GraphicsEnvironment 解决方案
- ppt复制切片器_攻略|致敬20个可以提升效率的PPT操作技巧
- IDEA(2019.2)启动tomcat时控制台console出现乱码——淇℃伅
- Android 自定义加载动画LoadingView
- 提升树莓派性能的方法
- 前端加密之使用Firefox来解密
- 绕过杀软(一)—— PowerShell 进程隐藏与 NetCat进行联动