关于servlet:Servlet和Tomcat

5次阅读

共计 1500 个字符,预计需要花费 4 分钟才能阅读完成。

一.Tomcat:

  1. web 服务软件,中小型的 JavaEE 服务器,仅仅反对大量的 JavaEE 标准 servlet/jsp。
  2. 批改端口号: 在 conf/server.xml, 也能够在 idea 中批改
  3. 部署 web 我的项目的办法有三种

    • 间接将我的项目放到 webapps 目录下即可。
    • 配置 conf/server.xml 文件
    • 在 confCatalinalocalhost 创立任意名称的 xml 文件。在文件中编写 <Context docBase=”D:hello” />* 虚拟目录:xml 文件的名称

部署我的项目到 idea 中,new project,java ee。而后去配置 tomcat 的配置文件

二.Servlet:

  1. 实现:

    1. 定义一个类,实现 Servlet 接口:public class ServletDemo1 implements Servlet
    2. 实现接口办法
    3. 去 web.xml 去配置 Servlet
<!-- 配置 Servlet -->
            <servlet>
                <servlet-name>demo1</servlet-name>
                <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
            </servlet>
        
            <servlet-mapping>
                <servlet-name>demo1</servlet-name>
                <url-pattern>/demo1</url-pattern>
            </servlet-mapping>
    
  1. 执行原理:

    1. 当服务器承受到客户端浏览器的申请后,会解析申请 URL 门路,获取拜访的 Servlet 的资源门路
    2. 查找 web.xml 文件,是否有对应的 <url-pattern> 标签体内容。
    3. 如果有,则在找到对应的 <servlet-class> 全类名
    4. tomcat 会将字节码文件加载进内存,并且创立其对象
    5. 调用其办法

也能够用 Servlet3,在创立我的项目时能够抉择,
用 Servlet3 就比较简单,不必去配置 web.xml 文件,只须要注解配置, 其中 /demo 就是 urlPatterns(),和在 web.xml 配置的原理一样。

@WebServlet("/demo")
public class ser implements Servlet{

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {System.out.println("init");
    }
  1. Servlet 中的生命周期办法:

    1. 被创立:执行 init 办法,只执行一次

      • 默认状况下,第一次被拜访时,Servlet 被创立
      • 能够配置执行 Servlet 的创立机会。在 <servlet> 标签下配置

        1. 第一次被拜访时,创立: `<load-on-startup>` 的值为正数
        1. 在服务器启动时,创立: <load-on-startup>的值为 0 或正整数
    2. Servlet 的 init 办法,只执行一次,阐明一个 Servlet 在内存中只存在一个对象,Servlet 是 单例 的。
      多个用户同时拜访时,可能存在线程平安问题。
      解决:尽量不要在 Servlet 中定义成员变量。即便定义了成员变量,也不要对批改值。比方买票,定义个成员变量,他就会共享。如果同时买票,或者退票,就会呈现问题。
    3. 提供服务:执行 service 办法,执行屡次: 每次拜访 Servlet 时,Service 办法都会被调用一次。
    4. 被销毁:执行 destroy 办法,只执行一次。

      Servlet 被销毁时执行。服务器敞开时,Servlet 被销毁,只有服务器失常敞开时,才会执行 destroy 办法。destroy 办法在 Servlet 被销毁之前执行,个别用于开释资源。
正文完
 0