Head First Servlet&JSP(beta版)


一.Servlet&JSP概述

1.1 简单的访问流程

每个人在学习编程时候都想自己创建一个网站,这时候,Servlet和JSP就是很好的选择。
当我们访问一个网站时候,最简单的流程是:

  1. 用户在web浏览器上输入url,请求(request)一个资源
  2. 请求发送到web服务器上,服务器根据url来查找资源
  3. 没找到,就会显示404;找到了,就会把资源-----例如html页面,响应(response)到客户

1.2 http协议

http协议是处于TCP/IP协议的应用层。

TCP端口:共有0~65536个逻辑端口

  • HTTP:80
  • FTP(文件传输协议):21
  • Telnet:23
  • SMTP:25
  • TIME:37
  • POP3:110
  • HTTPS:443

一般在0~1023的端口号已经被占用,所以定义时最好不要选择

1.2.1请求request

1.2.1.1 GET方法

GET:请求任务并获得资源返回,get请求中的字数有限(取决于服务器),若用户在搜索框中输入很长一段文字,就会出现异常
get
如图所示,用get发送的数据会出现在url后面,显示在地址栏中,这样信息就全部暴露了,所以这种方法不适用于发送私密信息,不过可以用它来建立书签
我们还要注意Accept这行,决定了能接受的从服务器返回的类型

1.2.1.2 POST方法

POST:可以请求,同时向服务器发送表单数据。浏览器可以用它做复杂的请求,加到最后的消息体当中去,也可以发送加密信息,因为他的信息不会存在url上

post

1.2.2 HTTP响应response

但你向浏览器发出请求get,post时,服务器就会返回你想要的资源,附在最后
response

MIME类型:响应首部+资源=http响应。在响应首部中Content-type的值称为MIME类型,他的作用是告诉浏览器要接收的数据是什么。
例如response.setContentType("text/html");告诉浏览器要显示text/html类型的数据

1.3 URL---统一资源定位器

之前一直再说URL,那URL到底是什么呢?
顾名思义,定位服务器上的资源,一般是一个地址
P20

1.4 web服务器

web服务器擅长读取静态页面,那怎么处理动态内容呢?比如实时显示服务器时间?
CGI(Common Gateway Interface)来辅助服务器处理动态信息,使用Perl编写。现在好像用fastCGI(先不管)。
我们javaweb中用Servlet扮演辅助应用程序的角色,把参数(请求和响应)分配其中,并且再处理
下面是流程:
动态

目前有两种Web服务器软件:IIS和Apache
j2ee(Java 2 Enterprise Edition),一个完整的web服务器由一个web容器(Tomcat)与一个EJB容器(weblogic和websphere)组成

二.Web应用体系

2.1 容器

Servlet是web服务器器的辅助应用程序,又受控于容器。
当客户发送一个请求时,由容器来分发给Servlet,容器又称web容器,本文中一般指代Tomcat。
容器
容器把各种必备的j2se代码封装起来,例如Socket、线程安全、servlet的生命周期管理、jsp支持和日志等等。不需要我们再去写,只需要调用方法就可以了。
分发请求的流程如下,虽然我觉的并不需要了
容器 1
容器 2

2.2 Servlet的映射

tomcat怎么找到Servlet的呢?
可以使用xml属性映射来找到

Servlet的文件路径名称在WEB-INF的classes下,一般的Servlet有3个名字
如图:

  1. URL名<url-pattern>
  2. 秘密的内部名,也就是<servlet-name>
  3. 实际的文件名,<servlet-class>一般写的Servlet文件的路径名
    此处输入图片的描述
    为什么要这么多名字,不能直接写路径名称吗?
    通过映射,你只需要修改xml文件就好了,不用在jsp或html里面改动文件,而且客户不会直接得知你文件的位置,即灵活又安全。

xml

xml文件又称为部署文件(DD),它的作用除了映射外,还有其他很多作用,比如定制安全角色、错误页面、标记库、初始配置init()等等强大作用


posted @ 2017-12-13 21:10  ikonon  阅读(1238)  评论(0编辑  收藏  举报
levels of contents