[HeadFirst-JSPServlet学习笔记][第一章:前言与概述]

时间:2021-08-09 09:50:55

第一章 前言与概述

  • web服务器做什么?

    答:接收客户请求,然后向客户返回结果

  • web客户做什么?

    答:此处客户指浏览器,web客户允许用户请求服务器上的某个资源,并向用户展现请求的结果。

  • html 客户与服务器间的语言

  • http 客户域服务器间传输的通道

  • HTTP是一个简单的请求/响应序列:

    • 请求流的关键要素

      • HTTP方法(要完成的动作)
      • 要访问的页面(URL)
      • 表单参数(如方法采纳数)
    • 响应流的关键要素

      • 状态码(表明请求是否成功)
      • 内容类型(包括文本、图片、HTML等等)
      • 内容(具体的HTML、图片、文本等等)
  • HTTP**请求** POSTGET

    • GET 的参数直接加到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-alive
    • POST 的参数放到消息体.

      //请求行
      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