当前位置 : 主页 > 编程语言 > java >

【Java Web】 Servlet的使用(打包部署)、常见状态码

来源:互联网 收集:自由互联 发布时间:2022-07-13
@TOC Servlet 使用 Servlet 输出hello world ① 引入依赖 dependency groupIdjavax.servlet/groupId artifactIdjavax.servlet-api/artifactId version3.1.0/version scopeprovided/scope /dependency ② 创建目录结构 当下项目的这些目

@TOC


Servlet

使用 Servlet 输出hello world

① 引入依赖

<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>

② 创建目录结构

当下项目的这些目录是不够的,需要我们在手动创建一些目录和文件夹(名字也要相同,这是规定)

image-20220701123130803

在web.xml中写入以下内容(直接复制进去就好)

<!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>

image-20220701123446165


③ 编写 Servlet 代码

public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doGet(req, resp); } }

image-20220701131857903

需要注意一点:我是把super.doGet(req,resp)给注释掉的,因为我们需要自己的模板,不需要他的

doGet 方法要做的工作,就是根据请求,计算生成响应 …

一个服务器的工作流程,可以分成这样的三个步骤:

1:接收请求并解析

2:根据请求计算响应

3:构造响应数据,并返回给客户端

其中,步骤二就是我们程序员自己要实现的逻辑,第一步和第三步都是 tomcat 帮我们做好了的


image-20220701140140751

还有最后一步了:

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 { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //干掉父类的doGet() //super.doGet(req, resp); //在程序控制台里打印,观察结果 System.out.println("hello world!"); //在页面上打印 hello world! resp.getWriter().write("hello world!"); } }

image-20220701134359409

此处的代码编写就算完成了…


④ 打包程序

当前我们的代码没有main方法,是不能单独运行的,所以就需要把当前的代码进行打包,然后 部署到

tomcat 上,然后有tomcat来进行调用(我们可以把这个完整的应用程序理解成一个能跑的汽车,Servlet代

码 相当于是汽车上的货箱(自己动不了),tomcat就是车头可以跑(带着货箱跑))

image-20220701140600376


⑤部署程序

把咱们刚刚的 war包 拷贝到 tomcat 的 webapps 目录下

image-20220701141100609


⑥ 验证程序

image-20220701141256218

他返回的内容就是 HTTP响应的 body 部分,这个页面我们是通过 Java 代码生成的,和我们直接创建一个

HTML 是有区别的…HTML 里面的内容是固定死了的,不会改变,而我们通过 Java 代码生成的的内容是可

以根据用户不同的输入,显示不同的结果

我在 Java 代码里加上一段时间戳

image-20220701141414734

在运行:image-20220701141514564

好了,这里的 7 个步骤就完成了,记住,上诉的 6 个 步骤这只是针对一个新的项目,如果我们项目已经创建

好了,后续修改的时候,前面的 三个 步骤就不必要重复了,直接操作 3-6 就行


简化 4 和 5 步骤 (将 Tomcat 集成到 IDEA 中)

我们发现,每次打包部署都是比较麻烦的,因此我们也是有一些办法来提高上诉流程效率的,我们可以通过第三方工具来简化 5 和 6 的操作

IDEA 虽然本身已经有很多功能了,但是也不可能做到面面俱到!! 因此,IDEA 就提供了一系列的扩展能力,允许第三方来开发一些程序,交给 IDEA 运行,就相当于是对 IDEA 进行了扩展…

我们就可以通过 IDEA 上的插件,直接把 Tomcat 给集成进去,做到一键完成打包部署,smart tomcat 就是 IDEA 的一个插件

需要注意一点:

Tomcat 和 IDEA 是两个独立的程序 ! ! ! Tomcat 不是 IDEA 功能的一部分,在我们后面开发中,主要

还是通过 IDEA 调用 Tomcat 的方式来进行的,可能用的时间长了,有些朋友就对 Tomcat 的印象开始模糊了,觉

得 Tomcat 就是 IDEA 的一部分,这里我们一定要明确,他们是两个独立的程序!!!

安装插件

image-20220701141905978

配置

image-20220701142819683


常见错误问题

出现了 404 状态码

有些人可能会报这样的错误:

image-20220701143035494

他就表示端口被人占用了,说明我们已经启动了一个程序绑定了同一个端口,就会出现这样的错误,我们可以通过这样的命令:netstat -an | grep 8080查看,关闭被占用的端口的进程即可,也有可能你

idea已经启动了一个tomcat了,不能重复用,只要关闭之前的即可

出现他就是说你要访问的资源在服务器上是不存在的,要么就是你请求资源的路径不对

要么就是路径虽然对了,但是服务器没有正确的把资源加载起来…

启动服务器页面显示就是 404

image-20220701143253060


第二种:

image-20220701143319660

这里就是少写了第二级路径 Servlet Path(hello)


第三种:

image-20220701143422966

这里就是少写了第一级路径 Context Path(Servlet_project)

image-20220701143456322


出现 405 状态码

405 表示对应的 HTTP 请求方法没有实现

第一种:

例如没有doGet/doPost方法,我们重启 tomcat服务器

image-20220701143611149

image-20220701143632274

虽然路径找到了,但是在调用doGet方法时,没有就会出现上述现象.


出现 500 状态码

这个往往是 Servlet 代码中抛出异常导致的,并且咱们的代码没有处理,这个异常就会抛到 Tomcat 当中…

像这样的错误对我们来说是很好解决的,因为他下面一般都告诉了原因

image-20220701143852828


出现"无法访问此网站"

这个就一般是 Tomcat 启动失败了

修改代码:

image-20220701143928131

重启 tomcat:我们就可以观察日志有这样的关键信息,这里需要我们仔细观察:

image-20220701144003122


@

上一篇:狂神-SpringBoot笔记目录
下一篇:没有了
网友评论