javaweb笔记5

1). 服务器创建Servlet:

Servlet 第一次被请求时,或服务器启动时,服务器会创建 Servlet 实例。

  • 服务器默认是在servlet第一次被请求时创建Servlet实例,如果希望服务器启动时就创建Servlet实现需要在web.xml中配置

服务器只为一个类型的 Servlet 创建一个实例对象,所以 Servlet 是单例的;

2). 服务器初始化Servlet:

  • 当服务器创建Servlet实例后会马上调用Servlet的init(ServletConfig)方法,完成对Servlet的初始化;

  • init(ServletConfig)只会被调用一次

  • 服务器会在调用init()方法时传递ServletConfig参数

3). 服务器使用Servlet处理请求:

  • 当Servlet被请求时,服务器会调用Servlet的service(ServletRequest,ServletResponse)方法

  • service(ServletRequest,ServletResponse)方法每处理一次请求,就会被调用一次,所以它可能会被调用N次

因为 Servlet 是单例的,所以可能在同一时刻一个 Servlet 对象会被多个请求同时访问,所以这可能出现线程案例问题

Servlet 不是线程案例的,这有助与提高效率,但不能让 Servlet 具有状态,以免多个线程争抢数据

4). 服务器销毁Servlet

服务器通常不会销毁 Servlet ,通常只有在服务器关闭时才会销毁 Servlet

  • 服务器会在销毁Servlet之前调用Servlet的destory()方法

  • 可以在destory()方法中给出释放Servlet占有的资源,但通常Servlet是没什么可要释放的,所以该方法一般都是空的

1.1.4 ServletConfig

ServletConfig是Servlet中的init()方法的参数类型,服务器会在调用init()方法时传递ServletConfig对象给init()方法。

ServletConfig 对象封装了 Servlet web.xml 中的配置信息,它对应 <servlet> 元素。

ServletConfig类的功能有:

  • String getServletName():获取 Servlet 配置名,即 <servlet-name> 的值

  • ServletContext getServletContext():获取 ServletContext 对象

  • String getInitParameter(String name):获取初始化参数

  • Enumeration getInitParameterNames():获取所有初始化参数的名称

在web.xml文件中,配置<servlet>时可以为<servlet>配置0~N个初始化参数

1.1.5 GenericServlet

GenericServlet是Servlet接口的实现类,但它是一个抽象类,它唯一的抽象方法就是 service() 方法

GenericServlet实现了Servlet方法:

  • 实现了String getServletInfo()方法

  • 实现了void destory()方法,空实现

  • 实现了void init(ServletConfig)方法,用来保存ServletConfig参数

  • 实现了ServletConfig getServletConfig()方法

GenericServlet实现了ServletConfig接口:

  • 实现了ServletContext getServletContext()方法

  • 实现了String getInitParameter()方法

  • 实现了String getServletName()方法

  • 实现了Enumeration getInitParameterNames()方法

GenericServlet添加了init()方法:

  • 该方法会被init(ServletConfig)方法调用

  • 如果希望对Servlet进行初始化,那么应该覆盖init()方法,而不是init(ServletConfig)方法

service 方法中也可以使用 servletconfig 成员 , 只要在 init 方法之前就可以

不可贸然覆盖init方法,其中有config对象

可以覆盖init()无参函数

1.1.6 HttpServlet

HttpServlet是GenericServlet的子类,它专注HTTP请求

HttpServlet类的方法:

  • 实现了void service(ServletRequest,ServletResponse)方法,实现内容是:

> 把ServletRequest强转成HttpServletRequest

> 把ServletResponse强转成HttpServletResponse

> 调用本类添加的void service(HttpServletRequest,HttpServletResponse)方法

  • 添加了void service(HttpServletRequest,HttpServletResponse)方法,内容是:

> 调用request的getMethod()获取请求方式

> 如果请求方式为GET,那么调用本类添加的doGet(HttpServletRequest,HttpServletResponse)方法

> 如果请求方式为POST,那么调用本类添加的doPost(HttpServletRequest,HttpServletResponse)方法

  • 添加了doGet(HttpServletRequest,HttpServletResponse)方法,内容是响应405,表示错误,所以我们应该去覆盖这个方法

  • 添加了doPost(HttpServletRequest,HttpServletResponse)方法,内容是响应405,表示错误,所以我们应用去覆盖这个方法

如果是通过继承HttpServlet类来自定义Sevlet的话,那么:

  • 不要去覆盖void service(ServletRequest,ServletResponse)

  • 不要去覆盖void service(HttpServletRequest, HttpServletResponse)

  • 而应该去覆盖doGet()或doPost()方法。

1.1.7 web.xml

servlet创建两种方式,

1.servlet第一次收到请求创建

2.服务器在启动时就创建

1.1.8 defaultServlet

default优先级最低,如果一个请求没有处理,那么它来处理,显示404

url-pattern 匹配的是 /

当访问路径不存在时,会执行defaultServlet,其实在访问index.html时也是在执行这个servlet

1.1.9 jspServlet

访问jsp页面时,会调用jspServlet,通过将动态资源转为静态资源,然后用response进行响应

1.1.10 session-config

session过期时间

1.2 MIME 多功能网际邮件扩充协议

多用途扩展类型,包含jpeg gif等,在这里定义了类型:

xml类型

txt类型

jpg/jpeg类型

doc类型

docx




posted @ 2022-04-02 08:28  好(justice)……  阅读(21)  评论(0编辑  收藏  举报