Tomcat的安装与Maven依赖Servlet的使用(下)

简介: Tomcat的安装与Maven依赖Servlet的使用(下)

🍉四.编写代码


点击Java创建一个类


a4c186d7ee89409ebcbc6bad311298dd.png

创建一个类 HelloServlet , 继承自 HttpServletAlt+Enter导入import javax.servlet.http.HttpServlet包

1e11a90fd1f248ac993a136caa93213f.png

●在这个类上方加上 @WebServlet(“/hello”) 注解, 表示 Tomcat 收到的请求中, 路径为 /hello的请求才会调用 HelloServlet 这个类的代码. (这个路径未包含 Context Path)


●重写 doGet 方法. doGet 的参数有两个, 分别表示收到的 HTTP 请求 和要构造的 HTTP 响应. 这个方法会在 Tomcat 收到 GET 请求时触发


●HttpServletRequest 表示 HTTP 请求. Tomcat 按照 HTTP 请求的格式把 字符串 格式的请求转成了一个 HttpServletRequest 对象. 后续想获取请求中的信息(方法, url, header, body 等) 都是通过这个对象来获取.


●HttpServletResponse 表示 HTTP 响应. 代码中把响应对象构造好(构造响应的状态码, header,body 等)


●resp.getWriter() 会获取到一个流对象, 通过这个流对象就可以写入一些数据, 写入的数据会被构造成一个 HTTP 响应的 body 部分, Tomcat 会把整个响应转成字符串, 通过 socket 写回给浏览器.

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;
/**
 * Created with InteliJ IDEA.
 * /Description:
 * User:PANJIAPENG
 * Date:2022-11-09
 * Time:19:32
 */
@WebServlet("/hello")
public class ServletHello extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello servlet");
        resp.getWriter().write("hello Servlet");
    }
}


这个代码虽然只有寥寥几行, 但是包含的信息量是巨大的

(1) 我们的代码不是通过 main 方法作为入口了. main 方法已经被包含在 Tomcat 里, 我们写的代码会被Tomcat 在合适的时机调用起来.

此时我们写的代码并不是一个完整的程序, 而是 Tomcat 这个程序的一小部分逻辑.


(2) 我们随便写个类都能被 Tomcat 调用嘛? 满足啥样条件才能被调用呢?

主要满足三个条件:

● 创建的类需要继承自 HTTP Servlet

● 这个类需要使用 @WebServlet 注解关联上一个 HTTP 的路径

● 这个类需要实现 doXXX 方法


当这三个条件都满足之后, Tomcat 就可以找到这个类, 并且在合适的时机进行调用


🍉五.打包/部署/运行


打包:

war 包和 jar 包的区别

●jar 包是普通的 java 程序打包的结果,也是默认打包格式. 里面会包含一些 .class 文件.

●war 包是 java web 的程序, 里面除了会包含 .class 文件之外, 还会包含 HTML, CSS, JavaScript, 图片, 以及其他的 jar 包. 打成 war 包格式才能被 Tomcat 识别.

f00bf7990c3645b5b0c1b73233ccad74.png

点击运行进行打包/部署

99a6d8df7da3403685f0e74b3beef6a1.png

检验程序:

输入127.0.0.1:8080/Servlet/hello

注意:这是根据自己设置的文件路径进行查找的

34ee25354e4a48a4b0e633e9f1145b06.png


🍒2.3 Servlet程序运行常见错误


出现 404

404 表示用户访问的资源不存在. 大概率是 URL 的路径写的不正确


●错误实例1: 少写了 Context Path

通过 /hello 访问服务器


●错误实例2: 少写了 Servlet Path

通过 /Servlet 访问服务器


●错误实例3: Servlet Path 写的和 URL 不匹配

修改 @WebServlet 注解的路径


●错误实例4: web.xml 写错了

清除 web.xml 中的内容


e67385d37bdd4558a92dff82ddfe9c10.png


出现405

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

错误实例: 没有实现 doGet 方法.


@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
}


81381e7d5f064a3f96d89c2db2cc017f.png


7fbf5a14e03240a98b4e7aa29587282a.png


9b6b5665bc0949a488cc3a6c7dc06b09.png



出现 500


往往是 Servlet 代码中抛出异常导致的

错误实例:


@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
  throws ServletException, IOException {
    String s = null;
    resp.getWriter().write(s.length());
  }
}


8d618d43e73e4b86ac09020c8d41ab61.png



出现 “空白页面”


错误实例:

修改代码, 去掉 resp.getWritter().write() 操作

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
     System.out.println("hello");
   }
}

出现 “无法访问此网站”


一般是 Tomcat 启动就失败了.

错误实例: Servlet Path 写错了又肯没有加"/"

5816258bfcfc46fdb52adbb2e05363e7.png

090376a5a3f04a3b9ba67587fcd6b861.png


🍒2.4总结


初学 Servlet, 遇到的这类问题会非常多. 我们不光要学习 Servlet 代码的基本写法, 也要学习排查错误的思路.

程序猿调试 BUG 如同医生诊病.

一个有经验的程序猿和一个新手程序猿相比, 最大的优势往往不是代码写的多好, 而是调试效率有多高. 同一个问题可能新手花了几天都无法解决的, 但是有经验的程序猿可能几分钟就搞定了.

你还觉得 “程序猿是吃青春饭” 嘛?


熟悉 HTTP 协议能够让我们调试问题事半功倍.

●4xx 的状态码表示路径不存在, 往往需要检查 URL 是否正确, 和代码中设定的 Context Path 以及Servlet Path 是否一致.

●5xx 的状态码表示服务器出现错误,或者代码写错, 往往需要观察页面提示的内容和 Tomcat 自身的日志, 观察是否存在报错.

●出现连接失败往往意味着 Tomcat 没有正确启动, 也需要观察 Tomcat 的自身日志是否有错误提示.

●空白页面这种情况则需要我们使用抓包工具来分析 HTTP 请求响应的具体交互过程.

●观察日志是调试程序的重要途径. Tomcat 的日志往往很多, 需要同学们耐心阅读, 经常阅读, 熟练了就能更快速的找到问题了.


舞台在大,你不登场,永远都是观众.平台再好,你不参加永远都是局外人.能力再大,你若不行动,没人能看到你的成功.我们一起加油屏幕前的陌生人!

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
Java 应用服务中间件 API
Servlet开发流程 (里面有Idea项目添加Tomcat依赖详细教程)
本文详细介绍了Servlet的开发流程,包括在IntelliJ IDEA中添加Tomcat依赖的详细教程。通过上述步骤,开发者可以快速搭建并运行一个基本的Servlet应用,理解并掌握Servlet的开发流程对于Java Web开发至关重要。希望本文能够帮助开发者顺利进行Servlet开发,提高工作效率。
1643 78
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
566 41
|
9月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
467 0
|
Java 应用服务中间件 Maven
在IntelliJ IDEA中如何配置使用Maven以创建Tomcat环境
所以,别担心这些工具看起来有些吓人,实际上这些都是为了帮助你更好的完成工作的工具,就像超市里的各种烹饪工具一样,尽管它们看起来可能很复杂,但只要你学会用,它们会为你烹饪出一道道美妙的食物。这就是学习新技能的乐趣,让我们一起享受这个过程,攀登知识的高峰!
777 27
|
Oracle Java 关系型数据库
Tomcat和JDK的详细安装、下载和环境配置指南
以上就是JDK和Tomcat的下载、安装和环境配置的详细步骤。希望这个指南能帮助你顺利完成设置。
844 32
|
12月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
744 17
|
12月前
|
Java 应用服务中间件 Apache
在IntelliJ IDEA中使用Maven配置Tomcat环境
此配置方法具有较高的实用性,简单易懂。遵循以上步骤,您将能顺利在IntelliJ IDEA中使用Maven配置Tomcat环境,从而进行Web项目的开发和调试。
1567 18
|
12月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
637 11
|
NoSQL 关系型数据库 应用服务中间件
docker基础篇:安装tomcat
docker基础篇:安装tomcat
451 64
|
网络协议 Java 应用服务中间件
centos7环境下tomcat8的安装与配置
本文介绍了在Linux环境下安装和配置Tomcat 8的详细步骤。首先,通过无网络条件下的文件交互软件(如Xftp 6或MobaXterm)下载并解压Tomcat安装包至指定路径,启动Tomcat服务并测试访问。接着,修改Tomcat端口号以避免冲突,并部署Java Web应用项目至Tomcat服务器。最后,调整Linux防火墙规则,确保外部可以正常访问部署的应用。关键步骤包括关闭或配置防火墙、添加必要的端口规则,确保Tomcat服务稳定运行。

推荐镜像

更多