zoukankan      html  css  js  c++  java
  • java-Servlet

    1.什么是Servlet?
    sun公司制订的一种用来扩展web服务器功能的组件规范。
    (1)用来扩展web服务器功能
    早期的web服务器(apache http server,iis等)只能够处理静态资源的请求(即需要事先写好并存放到硬盘上,比如html文件,图片等),不能够处理动态资源的请求(需要计算,然后生成相应的html),所以,需要扩展其功能。
    早期使用CGI程序来扩展。
    CGI(了解):
    Common Gateway Interface(通用网关接口),可以使用
    c/c++,perl等语言来开发CGI程序。因为可移植性差,性能
    也不是很好,所以现在用得很少了。
    (2) 组件规范
    1)什么是组件?
    符合规范,实现部分功能的,并且需要部署到容器里面才能
    运行的软件模块。
    Servlet就是一个组件,需要部署到Servlet容器里面才能运行。
    2)什么是容器?
    符合规范,为组件提供运行环境的程序。
    比如Tomcat(雄猫)就是一个Servlet容器。
    2.如何写一个Servlet?
    step1. 写一个java类,实现Servlet接口或者继承
    HttpServlet类。
    step2.编译。
    step3.打包。
    创建一个具有如下结构的文件夹:

    appname (应用名,可以自定义)
    WEB-INF
    classes (放 .class文件)
    lib (可选的,放.jar文件)
    web.xml (部署描述文件)

    step4.部署
    将step3创建好的文件夹拷贝到容器指定的某个位置。
    注:可以使用jar命令将step3创建好的文件夹进行压缩
    (压缩成.war为后缀的文件),然后再拷贝。
    step5.启动容器,访问Servlet
    http://ip:port/appname/url-pattern
    注: url-pattern在web.xml中设置。
    3.Servlet是如何运行的?
    比如,在浏览器地址栏输入 http://ip:port/appname/hello
    step1.浏览器依据ip,port建立与服务器之间的连接。
    step2.浏览器会将请求数据打包(即按照http协议的要求制作
    请求数据包),然后将该数据包发送给服务器。
    step3.服务器拆包(即按照http协议将请求数据包中的数据解析出来),
    并将解析到的数据添加到request对象上,同时,创建一个response
    对象。
    step4.服务器创建servlet实例,然后调用其service方法。
    注:服务器会将request对象和response对象作为参数传进来,
    可以通过request对象获取请求相关的数据(比如,获得请求参数值),然后将处理结果写到response对象上。
    step5.服务器将response对象上的数据取出来,打包(即按照http协议要 求制作响应数据包),然后将数据发送给浏览器。
    step6.浏览器拆包,生成相应页面。
    4.常见的错误
    (1)404
    1)含义: 依据请求路径,找不到对应的资源(
    比如,找不到对应的servlet)。
    注:404是一个状态码(状态码是一个三位数字,由http协议规定其含义,
    表示服务器处理请求的一种状态)。
    2)错误原因:
    a.应用部署失败。
    b.请求路径写错。
    (2)500
    1)含义:系统出错。
    2)错误原因:
    a.描述文件写错,比如,类名不正确。
    b.源代码有问题。
    (3)405
    1)含义:找不到处理方法。
    2)错误原因:
    service方法不符合规范。
    5.http协议(了解)
    (1)什么是http协议?
    是一种网络应用层协议,规定了浏览器与web服务器之间如何通信
    以及相应的数据包的格式。
    (2)如何通信?
    step1.建立连接。
    step2.发送请求数据包。
    step3.发送响应数据包。
    step4.关闭连接。
    一次请求,一次连接。如果浏览器要向服务器发送新的请求,就需要
    重新建立新的连接。
    优点:服务器可以利用有限的连接为尽可能多的请求服务。
    (3)数据包的格式
    1)请求数据包
    a.请求行 (请求类型 请求资源路径 协议类型和版本)
    b.若干消息头
    (了解)
    消息头是一些键值对(使用": "分隔),由http协议
    规定其含义,浏览器和服务器之间可以利用消息头来传递一些
    特定的消息。比如浏览器可以通过发送"user-agent"消息头
    来告诉服务器,浏览器的类型和版本。
    c.实体内容
    只有当请求类型为post时,实体内容才会有数据。
    2)响应数据包
    a.状态行 (协议类型和版本 状态码 状态描述)
    注: 200 正常
    b.若干消息头
    服务器也可以发送一些消息头给浏览器,比如发送
    content-type消息头,告诉浏览器,服务器返回的
    数据的类型(MIME类型)。
    c.实体内容
    程序处理的结果,浏览器会解析出来,然后生成相应的
    页面。
    (4)请求类型
    1)get请求
    a.哪些情况下,浏览器会发送get请求?
    直接在浏览器地址栏输入某个地址。
    点击链接。
    表单默认的提交方式。
    b.特点
    会将请求参数添加到请求资源路径的后面,只能提交
    少量数据给服务器。
    注:请求行大约只能存放约2k左右的数据。
    会将请求参数显示在浏览器地址栏,不安全。
    注:比如路由器就会记录请求地址(包含了请求参数)
    2)post请求
    a.哪些情况下,浏览器会发送post请求?
    将表单的method属性设置为"post"。
    b.特点
    会将请求参数放到实体内容里面,能够提交大量数据
    给服务器。
    不会将请求参数显示在浏览器地址栏,相对安全。
    注:post请求和get请求都不会对请求参数加密。

    我是初学者,如有更新不好的,欢迎这位大神指出,谢谢大家!

    更多精彩以后更新,转载注明!

  • 相关阅读:
    解Bug之路-记一次存储故障的排查过程
    自己动手写SQL执行引擎
    从linux源码看socket(tcp)的timeout
    解Bug之路-记一次JVM堆外内存泄露Bug的查找
    从linux源码看epoll
    可拖拽圆形进度条组件(支持移动端)
    Threejs模仿实现滴滴官网首页地球动画
    css实现朋友圈照片排列布局
    H5页面设置title,解决设置默认title为空时闪烁问题
    vue-cli3.0本地代理cookie跨域请求Nginx配置
  • 原文地址:https://www.cnblogs.com/CaiNiao-TuFei/p/7658555.html
Copyright © 2011-2022 走看看