一篇文章带你爆杀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菜品的制作方案
  • 46
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值