[HeadFirst-JSPServlet学习笔记][第一章:前言与概述]
第一章 前言与概述
web服务器做什么?
答:接收客户请求,然后向客户返回结果
web客户做什么?
答:此处客户指浏览器,web客户允许用户请求服务器上的某个资源,并向用户展现请求的结果。
html 客户与服务器间的语言
http 客户域服务器间传输的通道
HTTP是一个简单的请求/响应序列:
请求流的关键要素
- HTTP方法(要完成的动作)
- 要访问的页面(URL)
- 表单参数(如方法采纳数)
响应流的关键要素
- 状态码(表明请求是否成功)
- 内容类型(包括文本、图片、HTML等等)
- 内容(具体的HTML、图片、文本等等)
HTTP**请求**
POST与GETGET 的参数直接加到URL后面,即请求行
//请求行
GET /select/selectBeerTaste.jsp?color=dark&taste=malty HTTP/1.1
//请求首部
Host: www.wickedlysmart.com
User-Agent: Mozilla/5.0 (Macintosh; U;PPC Mac OS X Mach-O;en-US;
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.7,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
Accept-Language :en-US,en;q=0.5
Accept-Encoding:gzip,deflate
Accept-Charset:ISO-8859-1,UTF-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alivePOST 的参数放到消息体.
//请求行
POST /advisor/selectBearTaste.do HTTP/1.1
Host: www.wickedlysmart.com
User-Agent: Mozilla/5.0 (Macintosh; U;PPC Mac OS X Mach-O;en-US;
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.7,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
Accept-Language :en-US,en;q=0.5
Accept-Encoding:gzip,deflate
Accept-Charset:ISO-8859-1,UTF-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive color=dark&taste=malty//消息体,参数放在消息体当中
HTTP响应剖析:什么是MIME类型?
HTTP响应包含一个首部和一个体,首部信息告诉浏览器使用了什么协议,请求是否成功,以及体中包括的内容是什么类型。体包含了让浏览器显示的具体内容(例如,HTML)
HTTP/1.1 200 OK //Web服务器正在使用的协议版本 响应的HTTP状态码 状态码的文本版本
Set-Cookie: JSESSIONID=0AABDSA2DS4FD2321EFDSWDASD2;Path=/testEL
Concent-Type:text/html //内容响应的指称为MIME类型,与请求的Accept相关
Content-Length: 97
Date: Wed, 19 Nov 2003 03:25:40 GMT
Server: Apache-Coyote/1.1
Connetion: close <html>
...
</html>URL(Uniform Resource Locators) 统一资源定位符
TCP端口
- HTTP: 80
- HTTPS: 443
- FTP: 21
- POP3:110
- SMTP: 25
- TIME: 37
- 0-1023的TCP端口已经保留,自己的服务端程序不能使用这些端口
Web 服务器自己不做的两件事情
1. 动态内容
Web服务器应用只提供静态页面,但是有一个”辅助“应用可以生成非静态的及时页面,而且这个辅助能与Web服务器通信。动态页面可以是一个编目,Web日志,甚至是一个随机显示图片的页面
比如返回当前时间的页面,实际上是辅助应用编写HTML代码返回给服务器应用,再由服务器应用传输给客户
2. 在服务器上保存数据
CGI程序就是上述的辅助应用
大多数CGI程序被编写成Perl脚本,不过用C,Python和PHP。
配置tomcat
http://www.cnblogs.com/pannysp/archive/2012/03/07/2383364.html
servlet揭秘
1. 建立目录树
project1 |--src
|--classes
|--etc
2. 编写名为Ch1Servlet.java的servlet,放在src目录中
[zip文件] javax.servlet jar包
http://download.csdn.net/detail/pupingpp/5835867
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*; public class Ch1Servlet extends HttpServlet{
public void doGet(HttpServletRequest request,
HttpServletResponse response
)throws IOException{
//标准servlet声明 PrintWriter out = response.getWriter();
java.util.Date today=new java.util.Date();
out.println("<html>"+
"<body>"+
"<h1 align=center> HF\'s Chapter1 Servlet</h1>"+"<br>"+today+"</body>"+"</html>");
}
}
3. 创建一个部署描述文件(deployment descriptor,DD),名字为web.xml,把它放在etc目录中。
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<Servlet>
<Servlet-name>Chapter1 Servlet</Servlet-name>
<Servlet-class>Ch1Servlet</Servlet-class>
</Servlet> <servlet-mapping>
<servlet-name>Chapter1 Servlet</servlet-name>
<url-pattern>/Serv1</url-pattern>
</servlet-mapping>
</web-app>
4.在现有tomcat目录下建立这个目录树..
tomcat\webapps\ch1\WEB-INF\classes
5.从project1目录编译servlet…
%javac -classpath D:/apache-tomcat-7.0.68/lib/servlet-api.jar -d classes src/Ch1Servlet.java
为了调用servlet-api 中的 javax.servlet,并存在classes文件夹中
6.把Ch1Servlet.class文件复制到WEB-INF/classes,并把web.xml文件复制到WEB-INF.
7.运行Tomcat..
8.打开浏览器键入
http://localhost:8080/ch1/Serv1
9.每次更新servlet类或部署描述文件都需要关闭Tomcat;
总结:
1. servlet就是java版本的CGI
2. jsp就是镶嵌在html中的java
[HeadFirst-JSPServlet学习笔记][第一章:前言与概述]的更多相关文章
- 《C#并发编程经典实例》学习笔记-第一章并发编程概述
并发编程的术语 并发 同时做多件事情 多线程 并发的一种形式,它采用多个线程来执行程序. 多线程是并发的一种形式,但不是唯一的形式. 并行处理 把正在执行的大量的任务分割成小块,分配给多个同时运行的线 ...
- [编程笔记]第一章 C语言概述
//C语言学习笔记 第一讲 C语言概述 第二讲 基本编程知识 第三讲 运算符和表达式 第四讲 流程控制 第五讲 函数 第六讲 数组 第七讲 指针 第八讲 变量的作用域和存储方式 第九讲 拓展类型 第十 ...
- 《跟我学Shiro》学习笔记 第一章:Shiro简介
前言 现在在学习Shiro,参照着张开涛老师的博客进行学习,然后自己写博客记录一下学习中的知识点,一来可以加深理解,二来以后遗忘了可以查阅.没有学习过Shiro的小伙伴,也可以和我一起学习,大家共同进 ...
- JavaScript高级程序设计学习笔记第一章
作为学习javascript的小白,为了督促自己读书,写下自己在读书时的提炼的关键点. 第一章: 1.JavaScript简史:Netscape Navigator中的JavaScript与Inter ...
- C语言学习笔记第一章——开篇
本文章B站有对应视频 (本文图片.部分文字引用c primer plus) 什么是C语言 顾名思义,c语言是一门语言,但是和我们所讲的话不同,它是一门编程语言,是为了让机器可以听懂人的意思所以编写的一 ...
- Java学习笔记 第一章 入门<转>
第一章 JAVA入门 一.基础常识 1.软件开发 什么是软件? 软件:一系列按照特定顺序组织的计算机数据和指令的集合 系统软件:DOS,Windows,Linux 应用软件:扫雷.QQ.迅雷 什么是开 ...
- c#高级编程第七版 学习笔记 第一章 .NET体系结构
第一章 .NET体系结构 本章内容: 编译和运行面向.NET的代码 Microsoft中间语言(Microsoft Intermediate Language,MSIL或简称IL)的优点 值 ...
- GIT学习笔记——第一章
git之vim编辑器退出命令 # 学习笔记 张文军微博主页 张文军码云主页 张文军新浪云主页 张文军博客主页 ## 刚学习git,好多东西没接触过,进入vim后不知道如何出来了,网上找了很多都 ...
- Java 学习笔记 第一章:Java语言开发环境搭建
第一章:Java语言开发环境搭建 第二章:常量.变量和数据类型 第三章:数据类型转换.运算符和方法入门 1.Java虚拟机——JVM JVM(Java Virtual Machine ):Java虚拟 ...
随机推荐
- (转)Web.config配置文件详解(新手必看)
花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <? ...
- jquery easyui-datagrid 如何清空数据
//清空原有数据 方法1: var item = $('#filegrid').datagrid('getRows'); if (item) { ; i >= ; i--) { var in ...
- .net安装windows服务配置文件config
.net安装windows服务 : 在windows服务的项目(WindowsService1)代码文件中有一个app.config 配置文件,可以通过此文件进行时间等的更改而无需重新生成项目:那我们 ...
- javaScript中获取鼠标位置的理解
获取鼠标坐标值的总结为了避免混淆知识点 通过<javaScript高级程序设计>查到这些 event.clientX event.clientY event.pageX event.pag ...
- Linux Shell(初识)
什么是Shell:Shell是一个命令解释器. Linux下支持shell的种类: 1. Bourne Shell(简称sh) 2.C Shell(简称csh) 3.Korn Shell(简称ksh ...
- 手把手教你如何使用webpack+react
上一篇随笔讲述了新手入门入门前端 里面提到的第四阶段跟上当前前端的发展需要入门一个框架和自动化工具,当时推荐的是webpack+react 今天正好有空,也把自己入门webpack + react 的 ...
- LAMP 环境搭建之源码包编译安装
mysql用的二进制包安装. Apache php 用的源码包 mysql版本5.5.46 Apache版本2.4.7 PHP版本:5.5 mysql安装部分参考了阿铭linux的内容. 这是 ...
- [C入门 - 游戏编程系列] 序言篇
记得学习C语言的时候,看着别人能写各种各样的小游戏和小软件,甚是羡慕.而自己,虽然说语法都会,但是真正上手写个几百行的代码,就显得力不从心.曾经一度很是郁闷,看过一些书,大都处于教语法的层面,有些涉及 ...
- jquery-1.10.2 获取checkbox的checked属性总是undefined
项目中用的jquery-1.10.2 需要检测一个checkbox的选中状态,想当然的用 .attr("checked") ,结果发现,无论是否选中,这个值都是 undefined ...
- 阻碍android程序员发展的几个原因
1应该少看网上的android开发相关技术帖子,一个是错误很多,表达也不清楚,很多都是拷贝来拷贝去的.二个是技术变迁快,很多都过时了,经常看android技术相关帖子,养成了一种惰性,遇到问题不是去看 ...