JavaWeb核心技术一

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应用的一个标识性文件,它里面记录下:(我们只说学过的)

  1. 欢迎列表文件
  2. 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路径分析

  1. 配置Servlet自动加载
    在默认情况下,Servlet是第一次访问时,创建, 初始化的;Servlet第二次,第N次,不创建,不初始化
    web.xml文件中:

    <servlet>
        <load-on-startup>0</load-on-startup> 
    </servlet>
    

    要配正数,0,1,2,3,4…
    如果负数的话,相当于没配,第一次访问Servlet时才创建和初始化
    如果二个Servlet都配置了正数的话,数值小的,优先初Tomcat创建和初始化
    解决了:用户第一次访问慢的问题,将创建和初始化放入到了Tomcat启动时

  2. 配置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回车
    
  3. 配置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资源–图片

  1. 直接通过ServletContext获取图片的InputStream
  2. 直接通过ServletContext获取图片在Tomcat服务器软件中的含盘符的路径,可以间接创建InputStream对象了

ServletContext何时创建:

  1. 部署web应用到tomcat/webapps中
  2. 启动tomcat服务器,那么由tomcat为day12应用创建唯一的ServletContext对象

ServletContext何时销毁:

  1. 在不停止服务器的情况下,重新发部day12应用
  2. 停止服务器