文章目录
- 前言
- 一、创建项目
- 创建Maven项目
- 介绍Maven项目
- 二、引入依赖
- 三、创建目录
- 四、编写代码
- 五、打包
- 六、部署
- 七、验证
- 总结
前言
本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也对编程感兴趣的话,互关一下,以后互相学习,共同进步。这篇文章能够帮助到你的话,劳请大家点赞转发支持一下!
一、创建项目
此处创建的是maven项目。
maven是一个构建工具,功能是帮助我们去构建,测试,打包一个项目。
创建Maven项目
1️⃣选中Maven,点击Next
2️⃣3️⃣4️⃣5️⃣设置项目名称与路径(此处的路径不要随便设置,一会要用到),点击Finish
完成创建项目(首次创建maven项目,IDEA会从互联网上加载很多依赖,需要花一定时间,此时需要保证网络畅通)。
介绍Maven项目
每个Maven项目,都会有一个pom.xml 配置文件,这个文件里描述了maven项目的各方面的内容。
二、引入依赖
Servlet 是 tomcat 提供的api,不是标准库自带的,因此需要额外下载安装。
-
进入中央仓库https://mvnrepository.com/
-
在搜索框中搜索 Servlet,点击 Java Servlet API
-
下滑找到与Tomcat对应的版本,并点击。(查询对应版本:https://tomcat.apache.org/whichversion.html;此处我对应的版本是3.1.0)
-
复制下面的代码
-
在最顶层标签 project标签下 ,打出 dependencies标签 ,然后把 代码粘贴在dependencies标签中 。
-
第一次引入依赖时,会自动下载接口,如下方有下载进度条,即正在下载需等待,如果没有,点击刷新按钮,即可开始下载。
三、创建目录
以下的目录结构,目录位置,目录名字,文件名字与格式内容,要与下面的步骤保持一模一样。
- 在main下面创建一个新的目录webapp(New的是Directory)
- 在webapp下再创建一个新目录WEB-INF(New的是Directory)
- 在WEB-INF下在创建一个新文件web.xml(New的是File),并插入以下代码。
第三行代码可能会冒红报错,原因是IDEA可以正确识别Java代码,不一定能正确识别其他文件,比如这里的xml文件。
这个报错可以忽略不管他,也可以alt + 回车解决掉。
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
四、编写代码
在java目录下创建 HelloServlet类。
如果继承HttpServlet类,报错或没有提示,说明没有正确的引入依赖,可以尝试去刷新一下。
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
// 为这个类加上注解
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
// 重写doGet方法
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 一定要把父类的doGet注释或者删除掉,父类的doGet会直接抛出405
// super.doGet(req, resp);
// 服务器的控制台打印 "hello world" ,服务器能看到,客户端看不到
System.out.println("hello world");
// 向resp 的 body 中写入 "hello world"这个字符串,这个内容就会被HTTP响应返回给浏览器,浏览器就会显示
resp.getWriter().write("hello world");
// resp.getWriter()得到resp内部的字符流Write对象,再通过write就可以将数据写入到HTTP响应中的body
}
}
小贴士
doGet方法要实现的功能就是根据请求计算出响应,再将想要写入resp响应对象中。 Tomcat会自动帮助我们完成读取解析请求,将响应写回客户端的功能
注解(@xxxxxxx)通常用来修饰一个类或者一个方法。实际应用中Tomcat中会有许多类许多方法,注解的作用通俗点说就是告诉Tomcat要调用的是哪个类哪个方法
这个代码,并不是独立运行,而是插入到Tomcat中,让Tomcat中的main方法在合适的时机调用,因此不需要咱们自己写main方法。
五、打包
-
在pom.xml中指定打包格式与包名称。
注意:是在object标签下
-
双击package,或右键运行,即可开始打包
-
出现BUILD SUCCESS代表打包成功。
小贴士
Java当中的压缩包是jar与war
普通的java程序打包成jar包
要部署到tomcat的程序打包成war包
war包可以看作是特别定制的tomcat版jar包
war包是tomcat的专属格式,里面有一些特殊的目录结构和文件。
六、部署
-
找到打包好的war包(在你创建的项目中的target目录中)
-
将war包拷贝到tomcat的webapps目录下
-
在tomcat的bin目录下找到并运行startup程序(Windows系统用bat格式;Linux系统用sh格式)。就部署成功了
小贴士
之所以出现乱码是因为tomcat的字符集与Windows命令行用的不是同一个字符集。此处乱码也没关系,依然部署成功。
部署成功后,tomcat会自动解压
七、验证
在浏览器地址栏输入URL,构造GET请求。
127.0.0.1:8080/hello_servlet/hello
URL也不是随便输入就行的!
使用Fiddler进行抓包
注意!!!
不是Tomcat一启动,咱们代码中的doGet就会执行,而是遇到GET请求,且URL中的路径还要匹配时, 才会执行。
总结
以上就是今天要分享的使用servlet写出的第一个hello world,加油加油加油!!!
路漫漫不止修身,也养性。