Javaweb学习笔记3—Serverlet
今天来讲javaweb的第三个阶段学习。
老规矩,首先先用一张思维导图来展现今天的博客内容。
ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载
另外:如果图看不清的话请右击---在新窗口中打开会清楚很多。
一、Servlet概述
1 Servlet是什么?
是sun公司提供一套规范,用于接受客户浏览器发出的请求,响应给客户浏览器。是运行在服务端一个小程序。
2 Servlet入门:Servlet是一个接口,要想实现Servlet功能必须实现该接口或者继承该接口的实现类。
已知实现类:GenericServlet
Servlet接口中的方法:
init(ServletConfig) 初始化
service(ServletRequest,ServletResponse) 核心方法
destroy() 销毁
二、Servlet编码步骤
主要目的:为了了解Servlet从无到有,到能运行访问的一个过程
第一步:编写
1 编写FirstServlet实现Servlet接口或者继承GenericServlet
第二步:编译
2 编译FirstServlet
直接用javac命令编译servlet会有问题,需要设置classpath,加入servlet-api.jar
该jar存在于tomcat/lib/
第三步:配置
3 配置Servlet,使其生效
配置Servlet,是针对应用而言的,在web.xml中配置
注意:web.xml文件必须另存为UTF-8格式编码的
第四步:部署
4 部署到Tomcat,访问http://localhost:8080/firstservlet/FirstServlet
明确 规范(sun) 服务器(tomcat) 我们的应用之间的关系
三、Servlet执行过程
1 客户浏览器——Tomcat服务器——应用——应用的配置(web.xml)——Servlet——Servlet执行完成响应客户浏览器
四、Servlet编码方式
1 继承GenericServlet类,是javax.servlet包下的一个抽象类
案例:ServletDemo1 了解创建一个Servlet是两步,第一步建类,第二部映射
2 继承HttpServlet类,是javax.servlet.http包下面的一个抽象类,是GenericServlet的子类。
注意:(重要)
我们在继承HttpServlet时,只需要覆盖doxxx的方法,常用就是doGet和doPost,不要覆盖service。
案例:ServletDemo2 继承自HttpServlet的ServletDemo2的查找顺序
五、Servlet生命周期
出生——活着——死亡,从生到死的一个过程(人有,内存中的对象也有)
出生:请求到达Servlet时,对象就创建出来,并且初始化成功。只出生一次,就放到内存中。
活着:服务器提供服务的整个过程中,该对象一直存在,每次只是方法service方法。
死亡:当服务停止时,或者服务器挂机时,对象消亡。
单例模式:只有一个对象实例。Servlet就是单例的,只有一个实例。
六、Servlet线程安全
1 Servlet不是线程安全的。
注意:在Servlet中尽量避免使用全局变量,但不是绝对。请参看HttpServlet的service(HttpServletRequest,HttpServletRequest)方法。
七、Servlet注意事项
1 映射方式:
方式1:通配符+固定结尾格式 *.do
方式2:/开头+通配符 /servlet/*
方式3:指名道姓 (最常用) /servlet/ServletDemo
方式1和方式2之间是有一定的区别:就是优先级的问题。
方式3的优先级最高,其次是以/开头的,最后才是*.do方式。
2 多路径映射:
url-pattern可以映射多个地址
3 配置启动服务时,自动创建servlet
load-on-startup元素标记容器
是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
使用:<load-on-startup>启动顺序,必须是正整数,且不能重复</load-on-startup>来设置服务器启动时创建servlet对象
4 默认Servlet
当我们访问的资源,在web.xml中找不到对应的映射时,这个时候会去找默认的Servlet,该Servlet由服务器提供,Tomcat服务器的默认Servlet在:
apache-tomcat-7.0.57-src.zip\apache-tomcat-7.0.57-src\java\org\apache\catalina\servlets
一切都是Servlet。
八、Servlet参数配置:ServletConfig
1 ServletConfig 是什么?
它是Servlet的配置参数对象,每个Servlet都一个自己的ServletConfig
2 ServletConfig 怎么获取?
由服务器容器提供,我们直接使用即可。每次覆盖init方法的时候,注意:覆盖的是没有参数的init方法。
3 如何配置ServletConfig参数?
<init-param>
<param-name></param-name>
<param-value></param-value>
</inti-param>
要写在<servlet>元素内
4 如何使用ServletConfig得到配置好的参数
九、ServletContext
1 ServletContext是什么?
它是应用的全局上下文对象,每个应用只有一个ServletContext对象。
每个应用都可以有多个Servlet,多个Servlet之间的通信就是通过ServletContent对象获取。
2 如何获取ServletContext?
3 ServletContext 生命周期
出生——活着——死亡
出生: 应用一加载,该对象就被创建出来了。只有一个实例对象。
(Servlet和ServletContext都是单例的)
活着:只要应用一直提供服务,该对象就一直存在。
死亡:应用被卸载(或者服务器挂了),该对象消亡。
4 域对象的概念
该对象有一个作用域(就是使用的范围),是web应用中最大的作用域,叫application域。每个应用只有一个application域。
如何往域中存放参数及如何获取域中的参数
5 如何获取全局参数
针对ServletContext配置的参数就是全局参数
Servlet类视图全图:
6 ServletContext的一些细节
1 请求转发(基于ServletContext)
请求转发是服务器的行为,服务器内部自己去请求下一个地址,浏览器地址栏不会发生变化。
2 使用ServletContext获取文件路径,实现下载
使用的方法是context.getRealPath();
3 读取配置文件的各种方式(.properties)
InputStream
ResourceBundle
ClassLoader
参看:day07_01_servlet/ServletDemo12
Javaweb学习笔记3—Serverlet的更多相关文章
- JavaWeb学习笔记总结 目录篇
JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...
- javaweb学习笔记整理补课
javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...
- 【JAVAWEB学习笔记】06_jQuery基础
接05的学习笔记. 四.使用JQ完成省市二级联动 1.需求分析 使用jquery完成省市二级联动 2.技术分析 2.1数组的遍历操作 方式一: $(function(){ // 全选/ 全不选 $(& ...
- javaweb学习笔记(二)
一.javaweb学习是所需要的细节 1.Cookie的注意点 ① Cookie一旦创建,它的名称就不能更改,Cookie的值可以为任意值,创建后允许被修改. ② 关于Cookie中的setMaxAg ...
- Javaweb学习笔记(一)
一.javaweb学习是所需要的细节 1.发送响应头相关的方法 1).addHeader()与setHeader()都是设置HTTP协议的响应头字段,区别是addHeader()方法可以增加同名的响应 ...
- JavaWeb学习笔记之Servlet(一)
1. 引子: 当我们开始进入JavaWeb开发的学习时,我们就必须要和Servlet和HTTP这两个词进行打交道了,尤其是Servlet.即使到了后面使用JSP (我们知道JSP其本身就是一个Serv ...
- 【JAVAWEB学习笔记】09_MySQL多表&JDBC(包含MySQL数据库思维导图)
今天晨读单词: order:订单constraint:(强制)约束foreign key:外键references:指向orderitem:订单项join:加入resourceBundle:资源捆绑c ...
- Javaweb学习笔记——(二十三)——————AJAX、XStream、JSON
AJAX概述 1.什么是AJAX ajax(Asynchronous JavaScript and xml) 翻译成中文就是"异步JavaScript和xml&quo ...
- Javaweb学习笔记——(二十一)——————过滤器
过滤器 过滤器概述 1.什么是过滤器: 过滤器javaweb三大组件之一,它与Serlvet很相似,不过它过滤器是用来拦截请求的,而不是处理 ...
随机推荐
- eclipse新建安卓项目helloworld
第一步:安装JDK. 第二步:配置Windows上JDK的变量环境 . 第三步: 下载安装Eclipse . 第四步:下载安装Android SDK (下载Android SDK Manager工具, ...
- poj 2923 Relocation 解题报告
题目链接:http://poj.org/problem?id=2923 题目意思:给出两部卡车能装的最大容量,还有n件物品的分别的weight.问以最优方式装入,最少能运送的次数是多少. 二进制表示物 ...
- ASP.NET统计图表控件
近来客户需要将前段时间开发的统计信息用图表展示出来,还要多个图表类型,例如:柱状图.饼图.曲线图.三维图等等.在网上google了一下,发现了三个(也许更多)可以使用的控件.下面我们一起看看这三个控件 ...
- bzoj-1012 1012: [JSOI2008]最大数maxnumber(线段树)
题目链接: 1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Description 现在请求你维护一个数列,要 ...
- 【矩阵---求A的1到N次幂之和】
引例: Matrix Power Series: 题目大意,给定矩阵A,求A^+A^+A^+...A^N. 题解:已知X=a,可以通过以下矩阵求出ans=a^+a^+...a^=矩阵^(n+)后右上格 ...
- 关于Android ListView组件中android:drawSelectorOnTop含义(转载)
转自:http://yangguangfu.iteye.com/blog/902559 When set to true, the selector will be drawn over the se ...
- Codeforces Round #436 (Div. 2) E. Fire(背包+记录路径)
传送门 题意 给出n种物品,抢救第\(i\)种物品花费时间\(t_i\),价值\(p_i\),截止时间\(d_i\) 询问抢救的顺序及物品价值和最大值 分析 按\(d_i\)排序的目的是防止以下情况 ...
- vector理解一波~~~
Vector: 头文件: #include<vector> using namespacestd; 定义: vector<类型>q;//类同于 "类型 q[];&q ...
- Unity3D NGUI UIPlayTween(原UIButtonTween)动画事件详解
http://blog.csdn.net/asd237241291/article/details/8507817 原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 Unity3D引擎技术 ...
- [USACO10MAR]伟大的奶牛聚集Great Cow Gat…【树形dp】By cellur925
题目传送门 首先这道题是在树上进行的,然后求最小的不方便程度,比较符合dp的性质,那么我们就可以搞一搞树形dp. 设计状态:f[i]表示以i作为聚集地的最小不方便程度.那么我们还需要各点间的距离,但是 ...