zl程序教程

您现在的位置是:首页 >  Java

当前栏目

Servlet快速学习和Tomcat快速部署(web)

2023-04-18 14:27:32 时间

🌹servlet 是java提供的一门动态的web资源开发技术🌹

Servlet是javaEE的规范(规范就是接口),将来需要我们定义Servlet类实现Servlet接口,并有web服务器运行Servlet。

一.快速入门

1.创建web项目,导入Servlet依赖坐标

<dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
</dependencies>
<!--这个provided 编译环境和测试项目有效,运行环境排除掉,因为tomcat包含这个包,不然就冲突了-->

2.创建:定义一个类,实现servlet接口,并重写接口中所有方法,并在service方法中输入一句话

@Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("servlet hello world~");
    }

3.配置:在类上使用@WebServlet注解,配置该Servlet访问路径

@WebServlet("/demo1")  //这里是当前servlet访问路径
public class ServletDemo1 implements Servlet {  

4.访问:启动Tomcat,浏览器输入URL访问Servlet
在这里插入图片描述

显示页面是空白,因为我们并没有向页面输出信息,我们的输出内容在控制台里面,这样就说明servlet被成功访问。

二、执行流程

http://localhost:8080/web-demo/demo1

http://localhost:8080:访问tomcat服务器

/web-demo:访问对应的web项目

/demo1:访问对应得Servlet页面

1.Servlet对象和对应得方法都是tomcat web服务器创建和调用得

2.服务器怎么知道Servlet中一定有service方法?

​ 因为我们自定的servlet,必须实现Servlet接口并复其方法,而Servlet接口中有service方法。

三、生命周期

创建到销毁的过程称为生命周期

  • servlet生命周期由容器(web服务器)来管理,四个阶段:

    1. 加载实例化:默认情况,servlet第一次访问时被创建

      @WebServlet(urlPattrens="/demo1",loadOnStartup=1) 
      

      0或者正数:服务器启动时创建servlet,数字越小优先级越高

    2. 初始化:实例化后容器调用servlet的init方法初始化这个对象(只调用一次),用来加载配置、创建链接等

    3. 请求处理:请求Servlet时(访问),容器都会调用Servlet的service方法(提供服务的)对请求处理(会执行很多次

    4. 服务终止:当需要释放内存或者容器被关闭,容器调用servlet的destroy方法,之后该实例会被java垃圾收集器所回收

  • ServletConfig getSerletConfig()//获取ServeltConfig对象
    String getServeltinfo() //获取Servlet信息
    

四、Servlet体系结构

我们开发的B/S框架的web项目都是针对HTTP协议,所以我们自定义Servlet,会继承HTTPServlet

@WebServlet("/demo4")
// 子类继承父类的除构造方法和private 的方法的其他东西
public class ServletDemo4 extends HttpServlet {   //封装好HTTP协议的Servlet实现类,比implements Servlet(只用到service方法,别的重写还都方法用不到)更简化

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get...");  //通过浏览器地址栏直接访问
    }
// post请求在请求体里面,get请求在请求行里面
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("post...");  //通过创建一个html(webapp下) <form action="web项目/servlet路径" methon="post">表单
    }
}

五、Servlet urlPattern配置

  1. 可以配置多个访问路径访问Servlet资源
@WebServlet(urlPattern={"/demo1","/demo2"}) 

2.配置规则 (/web-demo一开始配置tomcat时设置的上下文路径)

优先级:精确路径>目录路径>扩展名路径>/*>/

精确匹配:@WebServlet(“/user/demo1”)

目录匹配:@WebServlet(“/user/*”) http://localhost:8080/web-demo/user/任意

扩展名匹配:@WebServlet(“*.do”) http://localhost:8080/web-demo/aaa.do aaa.do 前面是什么无所谓

任意匹配:@WebServlet(“/”)(会覆盖tomcat中的DefaultServlet,导致静态资源无法访问,如webaapp下的html) @WebServlet(“/*”) (/*比单纯/优先级高) http://localhost:8080/web-demo/任意

六、XML配置方式编写Servlet

在WEB-INF下的web.xml中配置,但是远远没有注解方式方便,了解一下即可。

<!--Servlet 全类名-->
  <servlet>
<!--    第一个自定义起,第二个写全类名-->
    <servlet-name>demo13</servlet-name>
    <servlet-class>com.itheima.web.ServletDemo13</servlet-class>
  </servlet>
  <!--Servlet 访问路径  -->
  <servlet-mapping>
<!--    第一个写我们刚才起的名字,第二个写该Servlet资源的访问路径-->
    <servlet-name>demo13</servlet-name>
    <url-pattern>/demo13</url-pattern>
  </servlet-mapping>
    第一个写我们刚才起的名字,第二个写该Servlet资源的访问路径-->
    <servlet-name>demo13</servlet-name>
    <url-pattern>/demo13</url-pattern>
  </servlet-mapping>

七、Tomcat快速部属(idea)

利用maven骨架快速搭建web项目:
在这里插入图片描述
名称和位置自定义:
在这里插入图片描述
下一个页面直接下一步。

点击右上角添加配置:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
然后再webapp下写页面,去输入网址(http://localhost:8080/web-demo/a.html)运行就可以了🌹
在这里插入图片描述