一、知识点
Tomcat、Servlet、HttpServlet、请求方式、Postman的使用。
二、目标
- 理解Tomcat的作用。
- 掌握Tomcat的基本使用。
- 熟练Servlet的使用。
- 了解get、post请求方式。
- 掌握使用postman分别发送四种不同请求方式的请求。
三、内容分析
- 重点- Tomcat配置与使用。- Servlet、HttpServlet的创建与应用。- get、post请求方式。- postman的使用。
- 难点- Servlet的理解。- 不同请求方式的区别。
四、内容
1、Web服务器
- 服务器:安装了服务器软件的计算机。
- 服务器软件:接收用户的请求,处理请求,做出响应。
- 在web服务器软件中,可以部署web项目,让用户浏览器来访问这些项目。
2、Web服务器软件
常见的java相关的web服务器软件有以下几个,我们主要讲解Tomcat的使用。
- weblogic:oracle公司,大型的javaEE服务器,支持所有的JavaEE规范,收费的。
- websphere:IBM公司,大型的javaEE服务器,支持所有的ovaTE规范,收费的。
- JBOSS:JBOSS公司,大型的javaEE服务器,支持所有的JavaIL规范,收费的。
- Tomcat:Apache基金组织,中小型的javaEE服务器,开源的,免费的。
3、Tomcat
3.1 安装
- 下载Tomcat Apache Tomcat® - Welcome!。
- 安装:解压压缩包(安装目录建议不要有中文和空格)。
- 卸载:删除目录。
3.2 使用
- 启动:双击bin目录下的startup.bat;通过浏览器输入 http://localhost:8080 访问,如果打开以下页面代表产成功。
这时候相当于tomcat软件帮我们快速搭建了一个web服务器,可以提供浏览器(客户端)访问,因为是搭建在我们自己的电脑上的,所以IP使用localhost,tomcat默认使用的端口是8080。
启动可能出现的问题:
- 黑窗口一闪而过:正确配置JAVA_HOME环境变量。
- 启动报错,端口被占用:关闭占用的8080端口的程序,或者到conf/server.xml里面修改端口号。
- 关闭:直接关闭窗口或者双击bin目录下的shutdown.bat。
3.3 IDEA配置使用Tomcat
- 创建JavaEE项目
- 新建项目
- 修改配置
- 配置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 解析执行过程
- 当服务器接收到客户端浏览器的请求后,会解析URL路径,获取访问的servlet的资源路径。
- 查找web.xml文件,判断是否有对应的<url-pattren>标签体内容。
- 如果有,则再找<servlet-class>对应的类名。
- tomcat会将字节码文件加进内存,并且创建对应的对象。
- 调用对象方法。
4.2 Servlet生命周期
- 创建:调用init,只执行一次
- 默认情况下,第一次被访问的时候,servlet被创建。
- 也可以配置执行servlet的创建时机,在<servlet>内配置<load-on-startup>。第一次被访问时创建:<load-on-startup> 的值为负数。在服务器启动后创建:<load-on-startup> 的值为正数或者0。
- init只执行一次,说明servlet是一个单例对象。
- 提供服务:执行service方法,执行多次
每次访问servlet时,service都会执行一次。
- 销毁:执行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请求
- GET 请求有长度限制。
- GET一般用于请求数据。1. GET请求参数是直接放在url上,使用?号拼接,多个参数使用&符号隔开,如:http://xxx.xxx.xx.xx/a/b?name=张三&age=18
6.2 POST请求
- POST 请求对数据长度没有要求。
- POST请求一般用来做数据添加、修改或删除。
- POST请求参数是放在请求体中。
6.3 区别
- post比get安全 ,因为post参数在请求体中。get参数在url上面。
- get传输速度比post快 根据传参决定的。(post通过请求体传参,后台通过数据流接收。速度稍微慢一些。而get通过url传参可以直接获取)。
- post一般用于修改服务器上的资源,传输文件大小理论没有限制; get一般用于信息获取,使用 URL 传递参数,有大小限制。
7、postman软件
postman和tomcat、servlet没有任何关系,是一个测试工具。放到这里补充是因为浏览器地址栏发起的请求默认的请求方式是get请求,无法测试post请求方式,这边我们使用postman进行测试。
- 下载安装:Download Postman | Get Started for Free
- 注册账号登录
- 使用
get请求方式
post请求方式
五、小结
需要重点掌握HttpServlet类的使用方法,清楚GET、POST请求方式的区别,并且熟练使用postman进行测试。
六、练习
- 创建JavaWeb项目并且配置Tomcat。
- 用Servlet实现之前的作业,吃什么
如果是访问 /random 就获取随机菜名
如果是访问 /menu?food=xx 就获取xx菜品的制作方案
版权归原作者 014. 所有, 如有侵权,请联系我们删除。