day05笔记servlet基础入门Word格式文档下载.docx
- 文档编号:20357499
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:12
- 大小:382.99KB
day05笔记servlet基础入门Word格式文档下载.docx
《day05笔记servlet基础入门Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《day05笔记servlet基础入门Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
importjavax.servlet.http.HttpServletResponse;
publicclassHelloServletextendsHttpServlet{
//当请求方式是get时会调用
@Override
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
//通过resp对象代表向客户端输出数据。
resp.getWriter().print("
hello,goodmorning."
);
}
//当请求方式是post时会调用
@Override
protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)
二:
在WEB-INF目录下的web.xml文件中配置。
分为两小步,配置如下。
<
!
--1.注册写好的HelloServlet-->
<
servlet>
<
servlet-name>
HelloServlet<
/servlet-name>
servlet-class>
cn.itcast.servlet.HelloServlet<
/servlet-class>
/servlet>
--2.为注册的HelloServlet配置对外的访问路径,这里配置的是/hello-->
servlet-mapping>
url-pattern>
/hello<
/url-pattern>
/servlet-mapping>
三:
将写好的servlet发布到tomcat服务器的webapps目录下。
然后点击finish,点击OK,这样就发布到tomcat服务器了。
四:
启动tomcat服务器去访问刚刚的发布的web应用。
Servlet的访问过程,如图:
按照上图中①②③④序号,最终找到了HelloServlet.
【学习效果】
1.掌握servlet编写的步骤。
2.掌握如何给一个servlet配置对外访问路径。
3.知道如何去访问一个已经配置好的servlet.
4.掌握servlet的访问路径。
【知识点过渡】
接下来讲解Servlet接口实现关系。
【第二阶段】
Servlet接口实现关系】
在通读了servlet接口的文档之后,发现编写一个servlet程序有两种方式,一种是继承GenericServlet,一种是继承HttpServlet。
那么,为什么我们刚刚在编写快速入门的servlet程序时,要继承HttpServlet呢?
大家首先看一下这几个类的继承关系,如图:
我们在编写一个servlet时是如下的一个继承关系。
Servlet接口------实现类GenericServlet-----子类HttpServlet----自定义Servlet继承HttpServlet
Servlet技术sun公司最早推出时,并不是仅面向于HTTP协议的,Servlet接口规范与协议无关的
*Servlet技术基于请求-响应模型的
GenericServlet通用的Servlet,只是实现了与协议无关API,并没有提供任何与协议相关API
HttpServlet是一个面向HTTP协议Servlet程序,提供了与协议相关API
自定义Servlet都是面向HTTP协议,如果实现Servlet接口,继承GenericServlet.使得开发更加复杂------只需要继承HttpServlet拥有与HTTP协议相关API开发简单
1.了解servlet规范中这几个类的继承关系
2.能够明白为什么我们要继承HttpServlet,而不直接去实现servlet接口和GenericServlet.
接下来讲解servlet生命周期。
【第三阶段】
servlet生命周期】
纵观servlet接口的api发现,servlet接口中定义了如下这5个方法:
上图被框住的方法是按照如下的这个调用顺序。
Init()方法--------》》第一次访问创建对象时被调用,只调用一次
Service()方法-----》》每次响应客户端的请求时会被tomcat容器调用
Destroy()方法----》》当servlelt对象销毁时调用
这三个方法,我们将其称之为servlet生命周期的方法。
那么,什么叫做声明周期的方法呢?
大家要注意,我们经常会对某个对象的创建一直到销毁的过程进行描述,那么为了有一条清晰的脉络,所以一般会用生命周期的方法来描述这个过程。
也就是描述了某个对象“从生到gameover”的过程。
实验:
自己动手演示servlet生命周期方法的调用过程。
在这个演示的过程中,从打印的log中发现,发现当一次servlet被访问时
Init方法调用,然后service方法被调用,然后每次来自客户端的请求,
又一直会调用service方法,知道最后,关闭tomcat服务器时,发现destory
方法又被调用。
弄清楚servlet生命周期方法的调用过程。
接下来讲解编写Servlet的注意事项。
【第四阶段】
编写Servlet的注意事项】
1.Servlet初始化时覆盖init(),无需覆盖init(config)
init(ServletConfig)是Servlet生命周期的方法
GenericServlet内部覆盖了init(ServletConfig),在有参数init方法中调用无参数init
2根据Http请求的方式,覆盖相应的doGet或者doPost方法,无需覆盖Service方法
我们跟踪源码发现,在HttpServlet的方法中,又定义了一个service方法,而在servlet的生命周期方法中,service方法调用了后来定义的这个类中新定义的service方法,然后这个service方法才最终根据请求方式的不同调用了doGet或doPost方法。
所以结论是,servlet的service方法与doGet,doPost方法的关系是调用与
被调用的关系。
3.当doGet和doPost代码逻辑相同时,可以相互调用,简化编程。
然后为了简化平时编程的步骤,所以去更改下servlet的模版。
手动编译Servlet执行
1、在tomcat/webapps下新建网站目录结构
Root
----*.html*.jsp
----WEB-INF
----classes
----lib
----web.xml
2、编译Servlet程序位于classes目录
javac-classpathd:
\apache-tomcat-7.39\lib\servlet-api.jar-d.HelloServlet.java
3、在WEB-INF配置web.xml
结论:
1、编译Servlet需要API(servlet-api.jar)2、如果Servlet有包结构,在编译后,在classes目录下生成目录结构
1.覆盖init方法时,要覆盖无参的,而不要覆盖有參的。
2.能够弄清楚service方法与doGet,doPost的关系。
3.知道doGet,doPost方法代码逻辑一样时,方法可以相互调用。
4.了解servlet编译生成的.class文件是发布在哪个目录下的。
接下来讲解servlet路径配置。
【第五阶段】
servlet启动的一些配置注意点】
URL-Pattern的三种配置方式
1、完全路径匹配以/开始不能包含统配符*例如:
/hello/init
2、目录匹配以/开始,/*结尾例如:
/*/aa/*/aaa/bbb/*
3、扩展名匹配不能以/开始,以*开始例如:
*.do*.action
经典错误:
/*.do
优先级:
完全匹配>
目录匹配>
扩展名匹配
注意,这个弄完了,把如下几个问题自己在过一遍。
对于如下的一些映射关系:
Servlet1映射到/abc/*
Servlet2映射到/*
Servlet3映射到/abc
Servlet4映射到*.do
问题:
当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应
Servlet引擎将调用Servlet1。
当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应
Servlet引擎将调用Servlet3。
当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪个servlet响应
当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应
Servlet引擎将调用Servlet2。
当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应
1.了解serlvet路径配置的几种方式
2.了解配置的几种方式中优先级情况。
接下来讲解Servlet启动配置。
【第六阶段】
Servlet启动配置】
如何让Servlet在服务器启动时,加载创建对象,调用init?
可以在web.xml中添加如下配置。
invoker<
org.apache.catalina.servlets.InvokerServlet
load-on-startup>
2<
/load-on-startup>
*配置load-on-startup使Servlet在服务器启动时创建对象完成init
默认的servlet:
如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet。
凡是在web.xml文件中找不到匹配的<
元素的URL,它们的访问请求都将交给缺省Servlet处理,也就是说,缺省Servlet用于处理所有其他Servlet都不处理的访问请求。
在<
tomcat的安装目录>
\conf\web.xml文件中,注册了一个名称为org.apache.catalina.servlets.DefaultServlet的Servlet,并将这个Servlet设置为了缺省Servlet。
当访问Tomcat服务器中的某个静态HTML文件和图片时,实际上是在访问这个缺省Servlet。
1.能够认识到可以配置servlet在web应用一被加载的时候就创建servlet对象。
2.了解默认的servlet,在开发中不要误将自己的servlet弄成默认的servlet了。
【第七阶段】
servletConfig对象与ServletContext对象】
servletConfig对象:
Servlet的初始化init:
init(ServletConfig)-----ServletConfig对象Servlet配置对象,用来在Servlet初始化阶段向Servlet传递信息
*GenericServlet中将ServletConfig对象保存成员变量,同时提供getServletConfig方法
*自定义Servlet中通过getServletConfig()获得ServletConfig对象
StringgetInitParameter(Stringname)根据参数名称获得值
企业级应用:
load-on-startup结合init-param使一个Servlet在服务器启动时执行初始化,第一时间加载配置文件====>
Struts框架
struts1中应用
action<
org.apache.struts.action.ActionServlet<
init-param>
param-name>
config<
/param-name>
param-value>
/WEB-INF/struts-config.xml,
/WEB-INF/struts-config-Wildcard.xml
/param-value>
/init-param>
***ServletConfig配置参数相当于当前Servlet局部变量,无法被其它Servlet访问的
servletContext对象:
(重要)
Servlet上下文对象ServletContext:
1、ServletContext每个工程对应一个
2、获得ServletContext----->
servletConfig.getServletContext();
应用一:
全局初始化参数配置(所有Servlet都可以访问)
*和ServletConfig配置初始化参数区分开
1)配置全局初始化参数
--全局初始化参数-->
context-param>
name<
张三<
/context-param>
2)获得ServletContext对象ServletContextcontext=getServletContext();
3)通过StringgetInitParameter(Stringname)获得全局参数
应用二:
多个Servlet之间可以共享数据(ServletContext唯一的)
共享全局唯一数据:
站点访问次数、数据库连接池,static
setAttribute(name,object)
getAttribute(name)
应用三:
读取web工程中资源文件
在day5工程中创建四个文件
1、在day5工程根目录创建1.txt
2、在WebRoot下创建2.txt
3、在WEB-INF下创建3.txt
4、在src下创建4.txt
1.txt因为在WebRoot外面不会发布到tomcat服务器,无法端读取
2.txt--->
getServletContext().getRealPath("
/2.txt"
3.txt--->
/WEB-INF/3.txt"
4.txt位于src下,复制到WEB-INF/classes下--->
/WEB-INF/classes/4.txt"
1.知道servletConfig的用法,可以用来获得在web.xml中配置的参数值。
2.掌握servletContext读取全局配置的参数。
3.掌握servletContext实现全局共享数据。
4.掌握servletContext读取web资源的方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- day05 笔记 servlet 基础 入门