JavaWeb基础—Servlet
一、Servlet是什么
是服务器上运行的Java小应用程序,并被称为JavaWeb三大组件之一
通常我们把实现了Servlet的类,称之为Servlet
Servlet作用主要是
1.接收请求数据
2.处理请求
3.完成响应
二、Servlet的生命周期
1.加载和实例化
2.初始化 (#init()方法)
3.请求处理(#service()方法)
4.服务终止(#destroy方法)
简易的Servlet的运行流程:
服务器接收到Servlet访问请求后,服务器检查是否是首次访问:
是首次访问,则创建Servlet实例(容器通过反射创建),调用实例对象的init()方法,再执行之后的操作
非首次访问,则直接封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。
三、如何编写Servlet
实现servlet三种方式:
1.实现javax.servlet.Servlet接口
2.继承javax.servlet.GenericServlet类
3.继承javax.servlet.http.HttpServlet类(此类继承2中类)
需要重写的是doGet()、doPost();
sun公司为我们提供了1的2 和3 两个默认实现类,通常我们应该采用方式3开发Servlet
HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,
如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,
通常只需要覆写doGet或doPost方法,而不要去覆写service方法。
在myeclispe中编写Servlet
(在new webProject时注意next->next->勾选generate web.xml)
可以直接 new 一个 Servlet,然后再向导中填写name(通常首字母大写并以Servlet结尾),勾选需要的doGet()或doPost()方法

在点击next后,Servlet name 和mapping ,当然是可以使用默认,但这里建议将mapping前的前缀/servlet干掉(访问时可以少写一层)
点击finish后,相关的class mapping配置会由工具自动在web.xml中配置好
<servlet>元素用于注册Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,
分别用于设置Servlet的注册名称和Servlet的完整类名。
一个<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:<servlet-name>和<url-pattern>,
分别用于指定Servlet的注册名称和Servlet的对外访问路径。

之后正确输入访问地址即可访问了!(比如去掉/servlet前缀后的一个例子:http://localhost:8080/day09/HServlet)
servlet特性(小细节):
1.单例
2.线程不安全:当多个客户端并发访问同一个Servlet时,web服务器会为每一个客户端的访问请求创建一个线程,并在这个线程上调用Servlet的service方法,因此service方法内如果访问了同一个资源的话,就有可能引发线程安全问题
(不在servlet创建成员,创建局部变量即可
可以创建无状态成员
可以创建有状态成员,但状态为只读(明星拍照举例))
3.效率高
4.servlet可以有多个访问路径,也可以使用通配符<url-parten>/servlet/*
(精确度越高,匹配越少,优先级越高,*只能放两边)
JavaWeb基础—Servlet的更多相关文章
- JavaWeb基础-servlet
Servlet简介 Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤: 1.编写一个Java类,实现s ...
- JavaWeb基础—Servlet重要对象
一.ServletConfig对象 当servlet配置了初始化参数后(<init-param> <param-name> <param-value>),web容器 ...
- Javaweb基础--->Servlet(转载)
今天看到这篇博客,感觉还不错,拿来借鉴学习一下. 一.Servlet 是什么? Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客 ...
- JavaWeb基础: ServletContext
基本概念 Web容器在启动时,会为每个Web应用程序都创建一个对应的ServletContext对象,它代表当前Web应用. ServletContext(javax.servlet.http.Ser ...
- JavaWeb基础: 学习大纲
JavaWeb基础: Web应用和Web服务器 JavaWeb基础: Tomcat JavaWeb基础:HTTP协议和基于Restful的架构 JavaWeb基础: Web工程配置文件 JavaWeb ...
- JavaWeb基础知识总结
JavaWeb基础知识总结. 1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供 ...
- 超详细的Java面试题总结(四 )之JavaWeb基础知识总结
系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...
- 关于java基础、多线程、JavaWeb基础、数据库、SSM、Springboot技术汇总
作者 : Stanley 罗昊 本人自行总结,纯手打,有疑问请在评论区留言 [转载请注明出处和署名,谢谢!] 一.java基础 1.多态有哪些体现形式? 重写.重载 2. Overriding的是什么 ...
- JavaWeb学习——Servlet相关的接口和类
JavaWeb学习——Servlet相关的接口和类 摘要:本文主要学习了Servlet相关的接口和类. Servlet的接口和类 三种方式 实现Servlet有三种方式: 实现javax.servle ...
随机推荐
- Angular常用语句
循环执行 )* ))))); //重点 : 返回deferred.promise才能链式执行then方法 return def.promise;} log : function (msg) { con ...
- SqlServer触发器实现表的级联插入、级联更新
首先建立两张表,分别为test1与test2,期望在更改test1的时候,test2的相关记录能够同时做出更改.假定test1与test2的表结构相同,如下表所示 name age 触发器实现 ...
- 转:java 委托
委托模式是软件设计模式中的一项基本技巧.在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理.委托模式是一项基本技巧,许多其他的模式,如状态模式.策略模式.访问者模式 ...
- Ubuntu安装 和 python开发
在ubuntu上安装pycharm 可以好几种下载办法 1.pycharm之linux版本下载地址: https://download.jetbrains.8686c.com/python/pycha ...
- 初始docker
什么是docker? 很多人都是使用docker但是对docker的理解其实并没有这么透彻,只知道怎么用但是不知道为什么用 什么时候去用. 一.环境配置的难题 软件开发最大的麻烦事之一,就是环境配置. ...
- Stored Properties 与 Computed Properties
Stored Properties 与 Computed Properties About Swift Stored Properties In its simplest form, a stored ...
- JDBC方式执行SQL,支持CRUD返回LIST
背景: 用惯了Mybatis,接收一个老项目使用Hibernate,特别不习惯.新的功能需要系统后台定时执行任务,顾使用JDBC封装工具类执行 源代码 import java.sql.Connecti ...
- CSS一个属性,让图片后的文字垂直居中,效果看得见
困扰我多年的疑难,终于解决了.哈哈哈,太爽了 背景 页面经常遇到,图片后面的文字显示在图片的中间部位,也就是说文字图片垂直居中. <div class="banner"> ...
- Hadoop HBase概念学习系列之模式设计(十)
Hbase与RDBMS的区别在于:HBase的Cell(每条数据记录中的数据项)是具有版本描述的(versioned),行是有序的,列(qualifier)在所属列簇(Column familie ...
- [EffectiveC++]item27:尽量少做转型动作