Servlet的任务是得到一个客户的请求,再发回一个响应。

请求:

容器控制着Servlet的一生,它会创建请求和响应对象、为Servlet创建一个新线程或分配一个线程,另外调用Servlet的service()方法,并传递请求和响应对象的引用作为参数。

每个客户请求都会分配一个单独的线程来处理,但是Servlet实例只有一个(对于一个JVM而言)

在一个JVM中,一个Servlet实例只有一个,因此Servlet的构造函数、init()初始化函数、destory()销毁函数都调用一次。

Servlet的构造函数不要重写,就使用父类HttpServlet的构造方法;service()方法也不要重写,就使用父类HttpServlet的service()方法。init()初始化方法可以重写,doGet()或者doPost()方法必须重写一个或都重写。

Servlet的构造函数只是实例化了一个普通的对象,要想成为Servlet,对象必须具备一些“Servlet特性”。

HTTP1.1里有8个方法,不过对于大多数Servlet开发来说,只会用到doGet()、doPost()方法。

GET和POST的区别:①POST有一个体。【GET和POST都能发送参数,但是GET的参数只能放在请求行中,参数数量有限制;而POST方法可以将参数放在体中,想放多少放多少】

②另外,GET方法,参数会显示在浏览器的地址栏,不隐私不安全。③GET请求可以建立书签,而POST不能。④GET方法对服务器不会做任何改变,POST方法可以。

HTTP GET方法只是要得到东西,它不会修改服务器上的任何内容。所以,GET方法是幂等的。它能执行多次,而且不会产生任何不好的副作用。POST不是幂等的,POST体中提交的数据可能用于不可逆转的事务。

获取请求中的一个参数:String s = request.getParameter("color");  获取请求中的多个参数:String[] arr = request.getParameterValues("sizes");

响应:

response.setContentType("text/html; charset=utf-8");

response.setContentType("application/jar");  //告诉浏览器要发回什么类型的内容,一般总是要写在最前面

对于输出,只有2种选择,字节或字符

使用response.sendRedirect("http://www.oreilly.com"); 进行Servlet重定向(客户端跳转)。参数是一个字符串,可以是绝对URL,也可以是相对URL。

请求分派(服务器端跳转),重定向(客户端跳转)。

Head First Servlets & JSP 学习笔记 第四章 —— 作为Servlet的更多相关文章

  1. Head First Servlets & JSP 学习笔记 第三章 —— MVC迷你教程

    临渊羡鱼,不如退而结网!是时候动手搞事情了! 我们的四大步骤: ①分析用户的视图(也就是浏览器要显示的东西),以及高层体系结构: (这个就是所谓的前端吧?用JSP?JSP可以当成Html来用吧?高层体 ...

  2. Head First Servlets & JSP 学习笔记 第十一章 —— Web应用部署

    jar:java archive(java归档) war:web archive(web归档) war文件只是Web应用结构的一个快照,采用了一种更可移植的压缩形式(它实际上就是一个jar文件).建立 ...

  3. Head First Servlets & JSP 学习笔记 第七章 —— 作为JSP

    <%@ …… %> 这是指令 <%@ page ……import="java.util.Date" %> 这是page指令,import是page指令的一个 ...

  4. Head First Servlets & JSP 学习笔记 第五章 —— 作为Web应用

    初始化参数:(init-param) 初始化参数写在web.xml文件中:(写在<servlet>标签内部) <servlet> <servlet-name>Bee ...

  5. Head First Servlets & JSP 学习笔记 第十三章 —— 过滤器的威力

    过滤器可能是最强大的Web应用开发工具了! 与Servlet非常类似,过滤器就是Java组件,请求发送到Servlet之前,可以用过滤器截获和处理请求:另外Servlet结束工作之后,但在响应发回给客 ...

  6. Head First Servlets & JSP 学习笔记 第六章 —— 会话状态

    MVC中的M(模型),通常就是一个普通的类,这个类里面的信息就是业务逻辑. 会话(Session) 我们可以使用一个HttpSession对象,来保存横跨多个请求的会话状态. HTTP协议使用的是无状 ...

  7. [Python学习笔记][第四章Python字符串]

    2016/1/28学习内容 第四章 Python字符串与正则表达式之字符串 编码规则 UTF-8 以1个字节表示英语字符(兼容ASCII),以3个字节表示中文及其他语言,UTF-8对全世界所有国家需要 ...

  8. Head First Servlets & JSP 学习笔记 第二章 —— Web应用体系结构

    Servlet没有main()方法,所以Servlet受其他人控制,这个其他人就是容器!而Tomcat就是一种容器. 容器向Servlet提供Http请求和Http响应:容器来调用Servlet的do ...

  9. o'Reill的SVG精髓(第二版)学习笔记——第四章

    第四章:基本形状 4.1线段 SVG可以使用<line>元素画出一条直线段.使用时只需要指定线段起止点的x和y坐标即可.指定坐标时可以不带单位,此时会使用用户坐标,也可以带上单位,如em. ...

随机推荐

  1. 2018SDIBT_国庆个人第五场

    A - ACodeForces 1060A Description Let's call a string a phone number if it has length 11 and fits th ...

  2. Linux:条件变量

    条件变量:     条件变量本身不是锁!但它也可以造成线程阻塞.通常与互斥锁配合使用.给多线程提供一个会合的场所. 主要应用函数:     pthread_cond_init函数     pthrea ...

  3. JDBC使用步骤分哪几步?

    (1) 加载JDBC驱动程序: Cllass.forName(" 驱动程序" );   //你要连接的数据库对象 (2) 建立连接 Connection conn=DriverMa ...

  4. CSS3性能体验

    如今许多新技术名词在不断的被提及中,已然向我们靠近.某篮球运动员说了:“变向过人”不是超级明星的专利,也许我也可以试着去做,现在看起来效果还不错...那么,现在我们来体验CSS3:CSS3中的动画功能 ...

  5. Java解决小孩围圈问题

    问题描述:一堆小孩围成一个圈,从第一个小孩开始数,每数到第三个便把第三个孩子删去,数到只剩一个小孩为止,并求该孩子的具体编号. 解决办法 1. package test; public class C ...

  6. servlet(1)request常用方法

    HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息. req ...

  7. MongoDB常用查询,排序,group,SpringDataMongoDB update group

    MongoDB查询 指定查询并排序 db.getCollection('location').find({"site.id":"川A12345","s ...

  8. OpenCV之Vec3f

    Vec3f表示的是3通道float类型的 Vect,就相当于3通道float类型的图像(这是其中一个具体化),解释可以从源代码中看出来. 下面给出一个具体的例子: Vec3f point = Vec3 ...

  9. python中的文件的读写

    python中的 w+ 的使用方法:不能直接 write() 后,在进行读取,这样试读不到数据的,因为数据对象到达的地方为文件最后,读取是向后读的,因此,会读到空白,应该先把文件对象移到文件首位. f ...

  10. 修改 Tomcat Connector运行模式 优化Tomcat运行性能

    omcat是一个小型的轻量级应用服务器,也是JavaEE开发人员最常用的服务器之一.不过,许多开发人员不知道的是,Tomcat Connector(Tomcat连接器)有bio.nio.apr三种运行 ...