1.servlet
servlet是和平台无关的服务器组件,可以交互式的来浏览和修改数据,生成动态的web内容。它运行于
servlet容器中
2.servlet容器
servlet容器负责servlet和客户的通信和调用servlet方法。
servlet和客户通信采用“请求/相应”模式。
3.创建servlet,及其工作原理
(1)创建一个HelloServlet.java类,实现Servlet接口,实现接口方法

init()
service();
getServletConfig();
getServletInfo();
destory();

(2)在/WEB-INF/web.xml里面配置HelloServlet
做两件事
a.注册:把servlet名字和对应的class注册到servlet容器中。

<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.servlet.HelloServlet</servlet-class>
</servlet>

b.定义url:即页面可以通过什么样的url可以访问到servlet,/是根目录

<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet1</url-pattern>
</servlet-mapping>

c.当通过浏览器访问url: http://127.0.0.1/8080/view-servlet/HelloServlet访问是

容器首先把根目录截取出来:http://127.0.0.1/8080/view-servlet/
获取servlet名字:HelloServlet
根据servlet名字,找到servlet对应的类
调用类中对应的doGet() doPost()方法

3.servlet方法和生命周期,以下方法都是有servlet容器调用(servlet响应请求过程)

(1)构造器:只调用一次,第一次请求到达时,初始化servlet(说明servlet是单实例,非线程安全)
(2)init():只调用一次,创建完实例后,用于初始化servlet,传入ServletConfig 参数
(3)service():多次调用,用于响应请求。
(4)destory():只调用一次,所在web应用被卸载前调用。

4.load-on-startup参数:

<load-on-startup>param</load-on-startup>
(1)param为负数时,容器启动时,不加载servlet
(2)param>=0时,值越大,启动越晚

5.servlet映射细节

(1)一个servlet可以有多个servlet-mapping与之匹配
(2)通配有两种方式
a. /* (带下划线)
b. *.do *.action *.aa(不带下划线)
/*.do不合法

6.init方法中的 ServletConfig,封装了servlet信息

(1)获取servlet的初始化参数<init-param>
<init-param>
<param-name>p1</param-name>
<param-value>v1</param-value>
</init-param>
获取方法:arg0.getInitParameter("p1")
(2)获取ServletContext

7.ServletContext

(1)可以由ServetConfig获取
arg0.getServletContext()
(2)可以认为代表当前WEB应用,可以获取当前web应用的各个反面的信息
a. 获取全局初始化参数
<context-param>
<param-name>c1</param-name>
<param-value>c2</param-value>
</context-param>
b.获取当前web应用某一个文件,在容器中的绝对路径。
getRealPath("") c.获取当前web应用的名称
getContextPath();
d.获取输入流
getResourceAsStream("/WEB-INF/class/jdbc.properties") web根目录

8.Http简介
(1)什么是http

web浏览器与web服务器之间,一问一答的交互过程,必须遵循一定规则,这个规则就是http协议。
http(超文本传输协议),是一个应用层协议,用于定义,web浏览器与web服务器之间的数据交换的过程,及交换
过程中,数据的格式。

(2)http会话方式分四步

a.建立连接
b.发送请求
c.回应请求
d.关闭连接

(3)http请求结构:

一个请求行
GET http://192.168.1.246:10085/manager/objcetstore/add_obj_user.json?obj_name=lvyafei&obj_password=123456&_=1451025520332 HTTP/1.1
多个消息头:
Host: 192.168.1.246:10085
Proxy-Connection: keep-alive
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://192.168.1.246:10085/manager/views/service/index.html
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
Cookie: X-LENOVO-SESS-ID=gfp0p4t3dbr3km3eemmrl95sp1; language=zh; JSESSIONID=aaaCFA_Q49wlj7MXN2xhv; lenovo_user_id=1; lenovo_user_name=admin; lenovo_user_pwd=fbc683e842c2c61496de800fed2d0de3
空行
实体内容
obj_name:lv
obj_password:123456
_:1451025520332

(4)http响应结构

一个状态行
HTTP/1.0 200 OK
多个消息头
Server: Tengine/2.0.3
Date: Fri, 25 Dec 2015 07:10:34 GMT
Content-Type: application/json;charset=UTF-8
X-Cache: MISS from Gateway-02
Via: 1.0 Gateway-02 (squid/3.1.9)
一个空行 实体内容
<html><body>.....</body></html>

(5)POST和GET请求的区别

a. GET http://localhost:8080/HelloServlet1?txt=lvyf&passwd=123
特点:把请求参数放在url的问号后面,传输数据一般在1K以下
b. POST 在Request Headers下面有一栏FormData,请求参数在FormData里面
特点:把请求参数放在FormData里面,以http消息的实体内容发送到服务器,传输数据量大

9.在servlet里面获取请求信息

(1)
servlet的service(ServletRequest request, ServletResponse response)方法
ServletRequest(接口)封装了请求信息
ServletResponse(接口)封装了响应信息
(2)获取参数:request.getParamter("username");

10.HttpServlet

HttpServlet是一个Servlet,针对Http请求定制
在service方法中,把ServletRequest转为HttpServletRequest,然后就可获取请求的方法是post还是get
,根据请求方式创建doPost,doGet方法。

11. get请求-->到达service--service里面获取HttpServlet对象-->HttpServletRequest对象获取请求方式-->调 对应的doXX()

12.请求转发和重定向的区别?

HttpServletResponse.sendRedirect方法
RequestDispatcher.forward方法
(1)看名字就可以看出来RequestDispatcher的转发,只是向服务器内部转发,重定向是响应,不仅可向内部,也可向
外部发送请求。
(2)forward在转发者和被转发者之间共享HttpServlet对象资源,重定向,被重向的地址获取不到HttpServlet资源

servlet和http请求的更多相关文章

  1. Servlet处理get请求时的中文乱码问题

    我们都知道,使用Servlet处理get请求时,如果get请求的参数中有中文,直接接收会是乱码,这个时候我们使用类似下面的语句来处理乱码: 12345 String name = request.ge ...

  2. Servlet获得Http请求,GET/POST

    Servlet获得Http请求 Http请求信息格式 请求行(方法提交方式,URI,Http协议版本) GET方式提交:URI会包含查询字符串 POST方式提交:URI不会包含查询字符串 请求头 Ho ...

  3. web基础----->servlet中得到请求的数据

    对tomcat的源码做一些分析,今天我们就开始servlet中的请求分析. form表单中的默认类型 一.在index.jsp中get请求: <form action="Paramet ...

  4. Servlet和HTTP请求协议

    Servlet和HTTP请求协议 Servlet和HTTP请求协议 Servlet和HTTP请求协议 有待补充... servlet servlet applet 概念 servlet是运行在服务器上 ...

  5. Java Servlet学习笔记(四)Servlet客户端Http请求

    Servlet 客户端 HTTP 请求 当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的.您可以查看 HTTP ...

  6. servlet 如何处理多请求访问以及线程讲解

    servlet 如何处理多请求访问以及线程讲解 场景:js循环500次请求同一个后台接口,接口内部逻辑:1.查询商品数量,2.扣减商品数量 ,那么该接口是否需要考虑多线程并发安全问题? 分析: 1.先 ...

  7. javaweb servlet中使用请求转发乱码

    乱码的方式有很多,这里指出一种不容易想到的 *请确保您的页面单独访问正常,经过servlet请求转发时,有PrintWriter out = response.getWriter()不正常,没有正常 ...

  8. servlet容器处理请求过程

    下图是关于tomcat服务器接收客户请求并作出响应的图例. tomcat不仅仅只是一个servlet容器,也是一个web服务器,servlet容器在web服务器之内或者说servlet容器托管于web ...

  9. Servlet中的请求转发和重定向

    跳转和重定向 有的时候客户端请求到达服务端后需要对请求重新转发到其它Servlet甚至别的服务器,这就需要跳转和重定向. 区别 一般来说,跳转是服务器内部跳转,例如将请求从一个Servlet转发给另外 ...

随机推荐

  1. 使用XmlSerializer序列化可空属性

    使用XmlSerializer可以方便的将对象序列化为xml,实现应用之间的数据交互.但是XmlSerializer却不能很好地序列化类型中的可空字段. 例如,有如下定义的类Person: [Seri ...

  2. 看了汤姆大叔的“你真懂JavaScript吗?”的一些感慨

    看了汤姆大叔的“你真懂JavaScript吗?”,里面有5道题目,我都一一作了,然后在chrome的控制台里面运行了一遍,虽然只错了一道,但还是细细读了下答案,在此总结一下,看看是否对大家对这些Jav ...

  3. BZOJ2599 [IOI2011]Race

    传送门 点分治,黄学长的选根方法会T掉,换了这个人的选根方法就可以了. 当然,你也可以选择黄学长的奇淫优化 //BZOJ 2599 //by Cydiater //2016.9.23 #include ...

  4. JS-制作网页特效——选项卡效果(水平,点击)

    //总结:这个样式的思维很重要,以前刚开始做,想的都是,怎么获取到自己点击的是哪一个li,然后给他以对应的div样式.后来发现难点是,怎么找到另外两个没有被点击的li和他们对应的div.把他们的样式去 ...

  5. su su- sudo的区别

    linux su命令参数及用法详解(linux切换用户命令) su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码   linux su 命令 建议大家切换用户的时候 使用 su ...

  6. css3实现小黄人

    效果就像这样: 不废话,直接上代码! hrml代码: <!DOCTYPE html> <html> <head lang="zh"> <m ...

  7. JQuery------动态添加的元素on方法不起作用解决方法

    转载: http://www.jb51.net/article/70342.htm

  8. 初学Memcached安装及使用(CentOS7)

    1.yum install memcached安装memecached 2.chkconfig memcached on设置memcached开机启动 3.service memcached star ...

  9. ecshop去头部和掉底部版权

    1.去掉头部版权 打开includes/lib_main.php $page_title = $GLOBALS['_CFG']['shop_title'] . ' - ' . 'Powered by ...

  10. 一个 Sql语句优化的问题- STATISTICS 统计信息

    前段时间,同事遇到一个 Sql语句的问题,一个列表分页功能响应在30 s以上,看数据库里面的数据条数,数据量也不大,相关字段的一些索引也都有,可就是慢.于是找出具体的sql 语句出来分析,分页功能主要 ...