0


一篇文章带你爆杀JavaWeb-Tomcat、Servlet、HttpServlet、请求方式、Postman的使用!

一、知识点

Tomcat、Servlet、HttpServlet、请求方式、Postman的使用。

二、目标

  1. 理解Tomcat的作用。
  2. 掌握Tomcat的基本使用。
  3. 熟练Servlet的使用。
  4. 了解get、post请求方式。
  5. 掌握使用postman分别发送四种不同请求方式的请求。

三、内容分析

  1. 重点- Tomcat配置与使用。- Servlet、HttpServlet的创建与应用。- get、post请求方式。- postman的使用。
  2. 难点- Servlet的理解。- 不同请求方式的区别。

四、内容

1、Web服务器

  1. 服务器:安装了服务器软件的计算机。
  2. 服务器软件:接收用户的请求,处理请求,做出响应。
  3. 在web服务器软件中,可以部署web项目,让用户浏览器来访问这些项目。

2、Web服务器软件

常见的java相关的web服务器软件有以下几个,我们主要讲解Tomcat的使用。

  1. weblogic:oracle公司,大型的javaEE服务器,支持所有的JavaEE规范,收费的。
  2. websphere:IBM公司,大型的javaEE服务器,支持所有的ovaTE规范,收费的。
  3. JBOSS:JBOSS公司,大型的javaEE服务器,支持所有的JavaIL规范,收费的。
  4. Tomcat:Apache基金组织,中小型的javaEE服务器,开源的,免费的。

3、Tomcat

3.1 安装
  1. 下载Tomcat Apache Tomcat® - Welcome!。
  2. 安装:解压压缩包(安装目录建议不要有中文和空格)。
  3. 卸载:删除目录。
3.2 使用
  1. 启动:双击bin目录下的startup.bat;通过浏览器输入 http://localhost:8080 访问,如果打开以下页面代表产成功。

这时候相当于tomcat软件帮我们快速搭建了一个web服务器,可以提供浏览器(客户端)访问,因为是搭建在我们自己的电脑上的,所以IP使用localhost,tomcat默认使用的端口是8080。

启动可能出现的问题:

  • 黑窗口一闪而过:正确配置JAVA_HOME环境变量。
  • 启动报错,端口被占用:关闭占用的8080端口的程序,或者到conf/server.xml里面修改端口号。
  1. 关闭:直接关闭窗口或者双击bin目录下的shutdown.bat。
3.3 IDEA配置使用Tomcat
  1. 创建JavaEE项目
  • 新建项目

  • 修改配置

  1. 配置Tomcat
  • 点击【Add Configuration...】添加配置

  • 添加服务类型

  • 配置Tomcat基本信息

  • 加载项目到Tomcat

启动

打开浏览器访问http://localhost:8080/。

如果打开如下页面代表成功。

404代表找不到资源,因为我们现在这个项目里面什么都没有。

4、Servlet

我们现在Tomcat里面没有资源,访问的时候都是404。我们需要对外开放资源给客户端访问,使用Servlet定制好的规则进行配置就可以实现。

类似于我们在ServerSocket实现的效果,可以根据不同的请求响应不同的内容。

4.1 实现Servlet接口
4.1.1 创建类实现Servlet接口

创建类MyServlet01实现Servlet接口,重写5个方法。

一个Servlet实例就是一个功能,不同的功能我们可以创建不同的Servlet实现。比如登录是一个功能,对应一个Servlet,注册是另一个功能,对应一个不同的Servlet。

public class MyServlet01 implements Servlet {

    // 销毁:当Servlet实例被销毁时,自动调用的方法。
    @Override
    public void destroy() {
        System.out.println("MyServlet01 destroy 销毁了");
    }

    // 获取Servlet实例配置信息。
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    // 获取Servlet实例信息。
    @Override
    public String getServletInfo() {
        return null;
    }

    // Servlet实例被创建时自动执行的方法。
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("MyServlet01 init 初始化了");
    }

    // 服务:请求服务,匹配到当前Servlet实例执行的方法。
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("MyServlet01 service");
    }

}
4.1.2 配置web.xml

实现路径与Servlet实例的绑定。

当我们发起请求的时候,Tomcat根据请求路径找到对应的Servlet实例,然后调用里面的service方法。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Web</display-name>
  
  <!-- 
    servlet标签:配置Servlet实例名字和实例创建类。
    servlet-name标签:Servlet实例名字,自己取的。
    servlet-class标签:创建实例的前提是要有对应的类,配置类的路径。
  -->
  <servlet>
      <servlet-name>servlet01</servlet-name>
      <servlet-class>com.test.web.MyServlet01</servlet-class>
  </servlet>
  
  <!-- 
    servlet-mapping标签:绑定对应的servlet标签、设置请求路径。
    servlet-name标签:用于绑定servlet标签,找到名字一样的servlet,它们就是一对的。
    url-pattern标签:配置请求路径,客户端就按这个路径请求,触发对应的Servlet实例中的service方法。
  -->
  <servlet-mapping>
      <servlet-name>servlet01</servlet-name>
      <url-pattern>/a</url-pattern>
  </servlet-mapping>
    
</web-app>
4.1.3 测试

浏览器访问 http://localhost:8080/web/a。

如果在tomcat控制台打印了【MyServlet01 service】代表成功。

4.1.4 解析执行过程
  1. 当服务器接收到客户端浏览器的请求后,会解析URL路径,获取访问的servlet的资源路径。
  2. 查找web.xml文件,判断是否有对应的<url-pattren>标签体内容。
  3. 如果有,则再找<servlet-class>对应的类名。
  4. tomcat会将字节码文件加进内存,并且创建对应的对象。
  5. 调用对象方法。
4.2 Servlet生命周期
  1. 创建:调用init,只执行一次
  • 默认情况下,第一次被访问的时候,servlet被创建。
  • 也可以配置执行servlet的创建时机,在<servlet>内配置<load-on-startup>。第一次被访问时创建:<load-on-startup> 的值为负数。在服务器启动后创建:<load-on-startup> 的值为正数或者0。
  • init只执行一次,说明servlet是一个单例对象。
  1. 提供服务:执行service方法,执行多次

每次访问servlet时,service都会执行一次。

  1. 销毁:执行destroy方法,只执行一次
  • 服务正常关闭时,才会执行destroy方法。
  • destroy在servlet销毁之前执行,用于释放资源。
4.3 Servlet注解

使用web.xml配置文件实现路径绑定Servlet实例是一种方式,还有一种方式就是使用注解实现。

格式:@WebServlet(value = “资源路径”)。

// @WebServlet(value = "/b") // 客户端请求/b路径就会执行MyServlet里面的service方法。
// @WebServlet("/b") // 当我们只有一个值并且是赋值给value属性的时候,value = 可以省略不写。即只有一个值的时候默认是赋值给value属性。
@WebServlet(value = "/b", name = "myservlet") // 当注解有多个属性的时候,键值必须写全,不能省略。
public class MyServlet implements Servlet {

}

urlPatterns配置

@WebServlet({"/demo1", "/demo2", ...}) // 配置多个请求路径对应一个Servlet
@WebServlet("/user/demo1") // 多级路径
@WebServlet("/user/*") // 匹配以user开头形式的请求
@WebServlet("/*") // 匹配所有的请求
@WebServlet("*.do") // 匹配.do结尾的请求

5、 HttpServlet

HttpServlet是Servlet接口的一个实现类,是一个抽象类。它在原有 Servlet 接口上添加了一些与 HTTP 协议处理方法,它比 Servlet 接口的功能更为强大。因此我们实现接口服务通常会继承这个类,而避免直接去实现Servlet接口。

创建类继承HttpServlet,重写doGet方法。浏览器访问对应的路径,指定对应HttpServlet的doGet方法。

@WebServlet("/h1")
public class MyHttpServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("MyHttpServlet get请求");
    }
    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("MyHttpServlet post请求");
    }
}

6、 GET请求与POST请求

我们在请求服务器资源的时候,会用不同的请求方式表示不同的场景。

6.1 GET请求
  1. GET 请求有长度限制。
  2. GET一般用于请求数据。1. GET请求参数是直接放在url上,使用?号拼接,多个参数使用&符号隔开,如:http://xxx.xxx.xx.xx/a/b?name=张三&age=18
6.2 POST请求
  1. POST 请求对数据长度没有要求。
  2. POST请求一般用来做数据添加、修改或删除。
  3. POST请求参数是放在请求体中。
6.3 区别
  1. post比get安全 ,因为post参数在请求体中。get参数在url上面。
  2. get传输速度比post快 根据传参决定的。(post通过请求体传参,后台通过数据流接收。速度稍微慢一些。而get通过url传参可以直接获取)。
  3. post一般用于修改服务器上的资源,传输文件大小理论没有限制; get一般用于信息获取,使用 URL 传递参数,有大小限制。

7、postman软件

postman和tomcat、servlet没有任何关系,是一个测试工具。放到这里补充是因为浏览器地址栏发起的请求默认的请求方式是get请求,无法测试post请求方式,这边我们使用postman进行测试。

  1. 下载安装:Download Postman | Get Started for Free
  2. 注册账号登录
  3. 使用

get请求方式

post请求方式

五、小结

需要重点掌握HttpServlet类的使用方法,清楚GET、POST请求方式的区别,并且熟练使用postman进行测试。

六、练习

  1. 创建JavaWeb项目并且配置Tomcat。
  2. 用Servlet实现之前的作业,吃什么
如果是访问 /random 就获取随机菜名
如果是访问 /menu?food=xx 就获取xx菜品的制作方案
标签: tomcat servlet postman

本文转载自: https://blog.csdn.net/2301_79104307/article/details/139001807
版权归原作者 014. 所有, 如有侵权,请联系我们删除。

“一篇文章带你爆杀JavaWeb-Tomcat、Servlet、HttpServlet、请求方式、Postman的使用!”的评论:

还没有评论