• 一超文本转移协议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 远航 预备篇相关推荐

  1. 微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 提取util公用方法 |基于最新版1.0开发者工具

    iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...

  2. 数据分析师的编程之旅——Python爬虫预备篇(2)前端设计

    作者:李禹锋,重庆芝诺大数据分析有限公司数据挖掘工程师. 有一个程序猿的岗位叫做前端工程师,当前市场需求量也不小,主要是以HTML5框架(H5).CSS3样式表和JavaScript语言(简称JS)为 ...

  3. 添物零基础到大型全栈架构师 不花钱学计算机及编程(预备篇)- 概述

    不花钱学计算机及编程 (预备篇) --概述:如何学习计算机及编程 class="video_iframe" height="375" width="5 ...

  4. 从零开始的 Rust 语言 blas 库之预备篇(1)—— blas 基础介绍

    从零开始的 Rust 语言 blas 库之预备篇(1)-- blas 基础介绍 下一篇:从零开始的 Rust 语言 blas 库之预备篇(2)-- blas 矩阵格式详解 文章部分参考:https:/ ...

  5. Servlet第六篇【Session介绍、API、生命周期、应用、与Cookie区别】

    2019独角兽企业重金招聘Python工程师标准>>> 什么是Session Session 是另一种记录浏览器状态的机制.不同的是Cookie保存在浏览器中,Session保存在服 ...

  6. ant的下载与安装——mybatis学习笔记之预备篇(一)

    看到这个标题是不是觉得有点奇怪呢--不是说mybatis学习笔记吗,怎么扯到ant了?先别急,请容我慢慢道来. mybatis是另外一个优秀的ORM框架.考虑到以后可能会用到它,遂决定提前学习,以备不 ...

  7. Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】

    2019独角兽企业重金招聘Python工程师标准>>> 什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直 ...

  8. mysql workbench_爬虫实例:玩转mysql(预备篇)

    考完试的第一篇文章,开心~ /1.什么是数据库/ 数据库是"按照数据结构来组织.存储和管理数据的仓库".是一个长期存储在计算机内的.有组织的.可共享的.统一管理的大量数据的集合. ...

  9. Servlet第四篇【request对象常用方法、应用】

    什么是HttpServletRequest HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这 ...

最新文章

  1. HarmonyOS之常用布局StackLayout的使用
  2. wdcp 去掉index.php,Nginx环境下Oneindex去除网址内的“?”
  3. execjs执行js出现window对象未定义时的解决_10个常见的JS语言错误总汇
  4. Flink 里程碑版本即将发布,快点入手
  5. combox数据过滤 wpf_- - WPF:筛选ItemCollection的ComboBox也会筛选绑定到同一ComboBoxes的其他ItemsSource_c#_酷徒编程知识库...
  6. php多级查询,MySQL 多级查询
  7. ClassicLink概述
  8. 深度学习——Nesterov方法的学习笔记
  9. python的作用域分别有几种_Python中作用域的深入讲解
  10. 深入浅出数据库索引原理
  11. Skype for business之Skype会议直播
  12. C++中圆周率Π的几种表示方法arccos(-1), 2arcsin(1), 4arctan(1)的用法
  13. Wi-Fi6移动热点功能配置
  14. Sublime 如何替换换行符
  15. Eigen aligned_allocator
  16. the connection to the server was unsuccessful(file ///android_asset/www/index.html)
  17. 如何在Jupyter Notebook中编写R程序
  18. iOS-Core-Animation-Advanced-Techniques(三)
  19. 《版式设计——日本平面设计师参考手册》—第1章如何存储旧版本的InDesign文件...
  20. PTA 最佳情侣身高差

热门文章

  1. AMD显卡驱动升级:《帝国时代4》性能暴涨45%,玩家热情再回归!
  2. OERu使大学教育负担得起
  3. 北京移动推被叫全免加剧竞争
  4. 验证码无法显示:Could not initialize class sun.awt.X11GraphicsEnvironment 解决方案
  5. ppt复制切片器_攻略|致敬20个可以提升效率的PPT操作技巧
  6. IDEA(2019.2)启动tomcat时控制台console出现乱码——淇℃伅
  7. Android 自定义加载动画LoadingView
  8. 提升树莓派性能的方法
  9. 前端加密之使用Firefox来解密
  10. 绕过杀软(一)—— PowerShell 进程隐藏与 NetCat进行联动