最近在学习ssm
需要在虚拟机vm的centos7上部署tomcat10
结果安装好以后tomcat正常启动,防火墙也添加了端口,并且都正常运行。
结果访问localhost:8080显示无法访问
netstat -tunlp命令查看,发现tomcat没有在监听8080端口
查看tomcat目录下logs里的
elasticsearch日志
发现报错
后来查了一番以后,发现是tomcat10必须要jdk11以上,但是本地只有jdk1.8
于是开始删除更新jdk
删除直接用yum的方式
https://blog.csdn.net/monarch91/article/details/123905067
更新安装
去官网下载压缩包,解压以后,配置etc/profile文件,之后source一下
https://blog.csdn.net/baidu_41764522/article/details/123444285
https://blog.csdn.net/xuforeverlove/article/details/80802389
然后成功的话java -version应该能查看到20的版本
之后启动tomcat,又报错,没有JAVA_HOME。JAVA_HOME还需要在tomcat的配置中再配一遍。
去tomcat的bin目录下的catalina.sh中添加etc/profile一样的内容
重新启动tomcat,终于成功运行。可喜可贺
============================================================
直接在centos7上安装tomcat8,版本是匹配的。
https://blog.csdn.net/Wei_Naijia/article/details/124218651
防火墙
https://blog.csdn.net/zhengxiaoguo/article/details/125320820
Servlet代码和Servlet容器在Java Web应用程序中都扮演了重要的角色,二者的关系非常密切。
Servlet,也就是我们所说的Servlet代码,其实质是一个Java类,它需要实现javax.servlet.Servlet接口,负责处理客户端的请求并返回响应。大部分时候,我们不直接实现Servlet接口,而是继承其子类HttpServlet,然后覆盖doGet或doPost方法来处理GET或POST请求。Servlet的生命周期是由Servlet容器来管理的,包括初始化(init),服务(service)和销毁(destroy)三个阶段。
Servlet容器,也叫Web容器,如Tomcat,Jetty等,是一个服务器。它接收到客户端的HTTP请求后,将请求传递给合适的Servlet进行处理,并发送Servlet的响应回客户端。Servlet容器管理着Servlet的生命周期和资源,还能提供多线程支持,每次HTTP请求,Servlet容器都会创建一个新线程来处理。
总结一下,Servlet代码和Servlet容器的关系可以理解为:Servlet代码是工具,用于满足业务需求,处理客户端请求;而Servlet容器是运行环境,使得Servlet代码有一个执行的平台,通过管理Servlet的生命周期和资源,使得Servlet代码能够有效地执行。这是类似于咖啡机(Servlet容器)和咖啡豆(Servlet代码)的关系,没有咖啡机,咖啡豆无法变成我们可以喝的咖啡。
结构化设计和面向对象设计确实可以在软件开发中结合使用。这两种设计方式各有优势,并且可以相互补充。
结构化设计重点关注软件系统的功能设计,采用自顶向下,逐步细化的方式进行设计。其主要优点是简单易懂,有助于高效地处理简单、线性问题。然而,当问题变得复杂、需要考虑大量的不同类别(如面向庞大用户群的个性化需求)时,结构化设计的效率便会降低。
与结构化设计不同,面向对象设计侧重于数据和数据行为。它以类为单位,将信息和行为集中管理。面向对象技术的核心观念是封装、继承和多态。面向对象设计的优点是可以更灵活、更具扩展性地处理复杂问题,特别适用于大型软件系统的设计和开发。不过,面向对象设计需要更高的抽象能力,学习和理解起来难度较大。
使用结构化设计和面向对象设计的结合,可以借助结构化设计的直观和方便,同时利用面向对象设计的灵活性和扩展性。例如,在项目初期,可以使用结构化设计进行概要设计,然后在详细设计阶段逐渐过渡到面向对象设计。这样做可以将两种设计方式的优点结合起来,达到更好的设计效果。