JavaWeb核心技术一
一、Servlet简介
第一种:实现Servlet接口
第二种:继承GenericSerlvet类
第三种:继承HttpServlet类(重点)
只能专用于HTTP协议请求事响应
如果客户端以GET方式提交数据—>doGet()来处理
如果客户端以POST方式提交数据—>doPost()来处理,分而治之
二、Servlet生命周期
构造器()----1次
init()-----1次
service()/doGet()/doPost()–N次,每次访问Servlet,都会执行service()
destroy()–1次,重新部署时或重新启动Tomcat时,都会销毁原来的Servlet
因为Servlet是单例的,不要在service()/doGet/doPost中修改实例变量的值
三、Servlet配置详解
/WEB-INF/web.xml文件,是Web应用的一个标识性文件,它里面记录下:(我们只说学过的)
- 欢迎列表文件
- Servlet配置信息
<servlet> <servlet-name>Demo</servlet-name>[3] <servlet-class>cn.itheima.Demo01</servlet-class>[4] </servlet> <servlet-mapping> <servlet-name>Demo</servlet-name>[2] <url-pattern>/hello</url-pattern>[1] </servlet-mapping>
四、访问Servlet路径分析
配置Servlet自动加载
在默认情况下,Servlet是第一次访问时,创建, 初始化的;Servlet第二次,第N次,不创建,不初始化
web.xml文件中:<servlet> <load-on-startup>0</load-on-startup> </servlet>
要配正数,0,1,2,3,4…
如果负数的话,相当于没配,第一次访问Servlet时才创建和初始化
如果二个Servlet都配置了正数的话,数值小的,优先初Tomcat创建和初始化
解决了:用户第一次访问慢的问题,将创建和初始化放入到了Tomcat启动时配置Servlet虚拟路径
当访问静态页面和访问动态Servlet的URL相同时,只访问动态Servlet<url-pattern>/*</url-pattern> 只适合于配置servlet映射路径 一个Servlet可以配置多个url-pattern映射路径/虚拟路径 思路: Demo01-----/abc Demo02-----/abc/ Demo03-----/ Demo04-----*.do *代示0个或N个字符 访问先后顺序 URL------>http://127.0.0.1:8080/day11/abc回车
配置Servlet为默认
如果某个Servlet设置为/的映射路径,那么这个Servlet就叫默认Servlet
好处:你们访问的URL如果出错了,服务器返回给你们404页面,这个404页面就是这个默认Servlet来创建的
如果我们也有一个默认的Servlet,那么会替代Tomcat中的默认Servlet
当web.xml文件中,没有一个Servlet来处理客户端请求时,就由默认的Servlet来处理
五、ServletConfig使用及获取Servlet初始化参数
ServletConfig.getInitParameter(“参数名”)->返回参数值
ServletConfig.getInitParameterNames(“参数名”)->返回枚举集合
六、ServletContext使用
Tomcat启动时,会加载多个Web应用到内存,会为每一个Web应用创建一个ServletContext对象,
这些ServletContext对象是相互独立的,但每一个Web应用中多个Servlet之间是共享这些
ServletContext对象的。
通常我们将ServletContext叫做域对象。
七、获取WEB应用初始化参数
一个Servlet可以配Servlet初始化参数,用ServletConfig来取
一个WEB应用可以配WEB初始化参数,用ServletContext来取
<!-- WEB应用初始化参数,在所有的Servlet外配置 -->
<context-param>
<param-name>username</param-name>
<param-value>赵君</param-value>
</context-param>
<context-param>
<param-name>email</param-name>
<param-value>runsin0723@163.com</param-value>
</context-param>
在当前WEB应用,创建任何一个Servlet,均可取到上述WEB初始化参数
这证明了,ServletContext是初多个Servlet共享
八、获取web资源–图片
- 直接通过ServletContext获取图片的InputStream
- 直接通过ServletContext获取图片在Tomcat服务器软件中的含盘符的路径,可以间接创建InputStream对象了
ServletContext何时创建:
- 部署web应用到tomcat/webapps中
- 启动tomcat服务器,那么由tomcat为day12应用创建唯一的ServletContext对象
ServletContext何时销毁:
- 在不停止服务器的情况下,重新发部day12应用
- 停止服务器