【JavaWeb】手把手教你Eclipse、IDEA集成Tomcat构建Web应用(三)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
RDS MySQL DuckDB 分析主实例,集群系列 8核16GB
简介: 【JavaWeb】手把手教你Eclipse、IDEA集成Tomcat构建Web应用(三)

三、使用Maven构建 Web项目


与二、IDEA集成 Tomcat基本一致,可以简单了解。


1、创建Maven Web项目


Tomcat中运行的绝大多数都是Web项目,而使用Maven工具(Mavan学习笔记链接)能更加简单快捷的把Web项目给创建出来,所以我们要学会如何构建Maven的Web项目。


在真正创建Maven Web项目之前,我们先要知道Web项目长什么样子,具体的结构是什么?


1.1 Web项目结构


Web项目的结构分为:开发中的项目和开发完可以部署的Web项目,这两种项目的结构是不一样的,我们一个个来介绍一下:


Maven Web项目结构: 开发中的项目


95da31375469455621326449a89a8662_image-20220908112622198.png


开发完成部署的Web项目


e972e25b2128b35d6e1e5b0efb883f8c_1627202903750.png


开发项目通过执行Maven打包命令package,可以获取到部署的Web项目目录

编译后的Java字节码文件和resources的资源文件,会被放到WEB-INF下的classes目录下

pom.xml中依赖坐标对应的jar包,会被放入WEB-INF下的lib目录下


1.2 创建Maven Web项目


介绍完Maven Web的项目结构后,接下来使用Maven来创建Web项目,创建方式有两种:使用骨架和不使用骨架


使用骨架


具体的步骤包含:


1.创建Maven项目


10e99feb59b2d4e7a74b7b395072fa44_1627227574092.png


2.选择使用Web项目骨架


9cf12dbb1fa84d1343cb5c0f6a4b4fdc_2a83a325000bcef563fba883c82648eb.png


3.输入Maven项目坐标创建项目


33df18ca4614016e146a2566bc4f4b56_c17c13d2aa8216be5eefd2c0573876ef.png


4.确认Maven相关的配置信息后,完成项目创建


ec2eac373cbd46449f449c565419109e_f8cd8b3ce18f3f1a89f9eb751112dbe7.png


5.删除pom.xml中多余内容


fd8fa3c4fb9704bb080a913594d0d31e_5d2bd5f70b6c686d69f2fbce8599e4ab.png


6.补齐Maven Web项目缺失的目录结构


585eabbfb16e026bfb57efd6cf50b7c8_96c196bcb065338a8c0e11cbe2e00299.png




不使用骨架


具体的步骤包含:


1.创建Maven项目


2.选择不使用Web项目骨架


3.输入Maven项目坐标创建项目


4.在pom.xml设置打包方式为war


5.补齐Maven Web项目缺失webapp的目录结构


6.补齐Maven Web项目缺失WEB-INF/web.xml的目录结构


创建Maven项目


d8f45d31ff7d31b283c0d20bb19e2027_3ac337f6e0c8afb3ae2a43ef55dbcc62.png


选择不使用Web项目骨架


de27b1aedbc810bf93b28c53e7fca2d2_84cade2e813acc1166e4e0dcd6d13284.png


输入Maven项目坐标创建项目


b469feed23e011b5cd5d47b5669b51ea_35ed7c97cb6b77ecedaa58c84e2684a1.png


在pom.xml设置打包方式为war,默认是不写代表打包方式为jar


06ac82dd9677043a07e6b2f412bec9d7_14b5dc8694a3856ea410ae9c15eb45fe.png


补齐Maven Web项目缺失webapp的目录结构



5d2e79cee7c5edcf054d6960c2bc86b7_7cd2d3f592cc07cbd59a201e6ab5d67d.png


补齐Maven Web项目缺失WEB-INF/web.xml的目录结构


6e4af449bea9279e28fe54c9116c0009_54e4597ff4653792f34ffe50a0b6a107.png


补充完后,最终的项目结构如下:


77c247ec77ed386d5b067a99ad4d2c90_f3b881a8620213fac530d29df3d7d087.png


上述两种方式,创建的web项目,都不是很全,需要手动补充内容,至于最终采用哪种方式来创建Maven Web项目,都是可以的,根据各自的喜好来选择使用即可。


总结


1.掌握Maven Web项目的目录结构


2.掌握使用骨架的方式创建Maven Web项目


dca73ed1f0491435713919699b4337e7_b46ab4c37f8a3eba28f40feea435c1a4.png


3.掌握不使用骨架的方式创建Maven Web项目


b435d77c46e8ac22e3784101a54a1f2c_3626bb0ea44fa6dc2a2f523a394321c5.png


2、IDEA集成本地Tomcat


Maven Web项目创建成功后,通过Maven的package命令可以将项目打包成war包,将war文件拷贝到Tomcat的webapps目录下,启动Tomcat就可以将项目部署成功,然后通过浏览器进行访问即可。

然而我们在开发的过程中,项目中的内容会经常发生变化,如果按照上面这种方式来部署测试,是非常不方便的

所以我们需要IDEA中能快速使用Tomcat,即在IDEA中集成本地Tomcat,将刚才本地安装好的Tomcat8集成到IDEA中,完成项目部署,具体的实现步骤


打开添加本地Tomcat的面板


9d6f504b416aba14fb6a3939fc99d5e7_7721de56b77410d6060ff784ef10be9b.png



指定本地Tomcat的具体路径


70e03ef9d9c1ac9fcffaf1a0857c734c_036e2e0c41a4a47a557740d0bae4f291.png


修改Tomcat的名称,此步骤可以不改,只是让名字看起来更有意义,HTTP port中的端口也可以进行修改,比如把8080改成80


32d813f99ed9265cb113b3698a86a570_8584e293f39c36bf467c861578a15e18.png


将开发项目部署项目到Tomcat中


c499c9aebcba2817adf00542288825c8_79fd55bf66c2959de1c6d0094045ffcd.png


扩展内容: xxx.war和 xxx.war exploded这两种部署项目模式的区别?


war模式是将WEB工程打成war包,把war包发布到Tomcat服务器上


war exploded模式是将WEB工程以当前文件夹的位置关系发布到Tomcat服务器上


war模式部署成功后,Tomcat的webapps目录下会有部署的项目内容


war exploded模式部署成功后,Tomcat的webapps目录下没有,而使用的是项目的target目录下的内容进行部署


建议大家都选war模式进行部署,更符合项目部署的实际情况


部署成功后,就可以启动项目,为了能更好的看到启动的效果,可以在webapp目录下添加a.html页面


a7b6ca90b41f2fd553385159591e258b_9b47a464518929e3a11db7ee187aa041.png


启动成功后,可以通过浏览器进行访问测试


27946be16f1ad8014047dd629e87a9e9_a5fe2a1a6486662eab02224fe81463ed.png


最终的注意事项


1bf11e4eb8b0ddb20f3c0f2f73a45eff_1f7d98bc05209116116e0e2130b75f55.png


至此,IDEA中集成本地Tomcat进行项目部署的内容我们就介绍完了,整体步骤如下,大家需要按照流程进行部署操作练习。


8969c8ef6ffb40be8653ee48157ea6bd_d6055486aad9403f0b3578aad0c8435d.png


四、示例代码


Eclipse工程代码

sql


/*
 Navicat Premium Data Transfer
 Source Server         : root
 Source Server Type    : MySQL
 Source Server Version : 80026
 Source Host           : localhost:3306
 Source Schema         : javaweb
 Target Server Type    : MySQL
 Target Server Version : 80026
 File Encoding         : 65001
 Date: 07/09/2022 20:52:25
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int NOT NULL,
  `name` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `password` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `SEX` varchar(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `age` int NULL DEFAULT NULL,
  `brithday` datetime NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'sunming', '123456', '男', 18, '2022-09-07 00:00:00');
SET FOREIGN_KEY_CHECKS = 1;



jdbc.DBConnection.java


package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBConnection {
  private static final String driverName = "com.mysql.cj.jdbc.Driver";
  private static final String url = "jdbc:mysql://localhost:3306/testDB?"
    + "characterEncoding=utf8&useSSL=false&serverTimezone=UTC"
    + "&rewriteBatchedStatements=true";
  private static final String user = "root";
  private static final String password = "root";
  private DBConnection() {
  }
  static {
  try {
    Class.forName(driverName);
  } catch (ClassNotFoundException e) {
    e.printStackTrace();
  }
  }
  public static Connection getConnection() throws SQLException {
  return DriverManager.getConnection(url, user, password);
  }
  public static void close(ResultSet rs, Statement st, Connection conn) {
  try {
    if (rs != null) {
    rs.close();
    }
  } catch (SQLException e) {
    e.printStackTrace();
  } finally {
    try {
    if (st != null) {
      st.close();
    }
    } catch (SQLException e) {
    e.printStackTrace();
    } finally {
    if (conn != null) {
      try {
      conn.close();
      } catch (SQLException e) {
      e.printStackTrace();
      }
    }
    }
  }
  }
}



dao.UserLogin.java


package jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import util.DBConnection;
public class UserLogin {
  public static boolean validlogin(String name, String password)throws SQLException{
  Connection conn = null;
  Statement st = null;
  ResultSet rs = null;
  boolean successflag=false;
  try {
    // 2、获得连接对象
    conn = DBConnection.getConnection();
    // 定义sql语句
    String sql = "select * from user where name='"+name+"' and password='"+password+"'";
    // 3、创建语句对象
    st = conn.createStatement();
    // 4、遍历结果集(此处不需要)
    rs=st.executeQuery(sql);
    if(rs.next()==true) successflag=true;
  } finally {
    // 5、关闭资源对象
    DBConnection.close(rs, st, conn);
  }
  return successflag;
  }
}


通过这一篇文章的学习,我们学会了在Eclipse、IDEA中集成Tomcat构建Web(Maven Web)的方式,为JavaWeb的学习提供了好的工具,后面我们首先复习DAO层设计:JDBC。Mybatis,之后开始学习Http以及Web核心技术Serlet。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
Java 应用服务中间件 Apache
Maven程序 tomcat插件安装与web工程启动
Maven程序 tomcat插件安装与web工程启动
215 0
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
379 0
|
Ubuntu 前端开发 JavaScript
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
|
应用服务中间件 数据库
Tomcat 的数据库连接池设置与应用
Tomcat 的数据库连接池设置与应用
171 3
|
开发者 前端开发 开发框架
JSF与移动应用,开启全新交互体验!让你的Web应用轻松征服移动设备,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,移动设备的普及使得构建移动友好的应用变得至关重要。尽管JSF(JavaServer Faces)主要用于Web应用开发,但结合Bootstrap等前端框架,也能实现优秀的移动交互体验。本文探讨如何在JSF应用中实现移动友好性,并通过示例代码展示具体实现方法。使用Bootstrap的响应式布局和组件可以确保JSF页面在移动设备上自适应,并提供友好的表单输入和提交体验。尽管JSF存在组件库较小和学习成本较高等局限性,但合理利用其特性仍能显著提升用户体验。通过不断学习和实践,开发者可以更好地掌握JSF应用的移动友好性,为Web应用开发贡献力量。
174 1
|
Java 应用服务中间件 Apache
浅谈Tomcat和其他WEB容器的区别
Tomcat是一款轻量级的免费开源Web应用服务器,常用于中小型系统及并发访问量适中的场景,尤其适合开发和调试JSP程序。它不仅能处理HTML页面,还充当Servlet和JSP容器。相比之下,物理服务器是指具备处理器、硬盘等硬件设施的服务器,如云服务器,其设计目标是在处理能力、稳定性和安全性等方面提供高标准服务。简言之,Tomcat专注于运行Java应用,而物理服务器则提供基础计算资源。
|
存储 缓存 安全
如何使用 PHP 将天气跟踪集成到 Web 应用程序中
如何使用 PHP 将天气跟踪集成到 Web 应用程序中
176 0
|
网络协议 Java 应用服务中间件
Tomcat源码分析 (一)----- 手撕Java Web服务器需要准备哪些工作
本文探讨了后端开发中Web服务器的重要性,特别是Tomcat框架的地位与作用。通过解析Tomcat的内部机制,文章引导读者理解其复杂性,并提出了一种实践方式——手工构建简易Web服务器,以此加深对Web服务器运作原理的认识。文章还详细介绍了HTTP协议的工作流程,包括请求与响应的具体格式,并通过Socket编程在Java中的应用实例,展示了客户端与服务器间的数据交换过程。最后,通过一个简单的Java Web服务器实现案例,说明了如何处理HTTP请求及响应,强调虽然构建基本的Web服务器相对直接,但诸如Tomcat这样的成熟框架提供了更为丰富和必要的功能。
|
jenkins 持续交付 开发工具
"引爆效率革命!Docker+Jenkins+GIT+Tomcat:解锁持续集成魔法,一键部署Java Web应用的梦幻之旅!"
【8月更文挑战第9天】随着软件开发复杂度的增加,自动化变得至关重要。本文通过实例展示如何结合Docker、Jenkins、Git与Tomcat建立高效的持续集成(CI)流程。Docker确保应用环境一致性;Jenkins自动化处理构建、测试和部署;Git管理源代码版本;Tomcat部署Web应用。在Jenkins中配置Git插件并设置项目,集成Docker构建Tomcat应用镜像并运行容器。此外,通过自动化测试、代码质量检查、环境隔离和日志监控确保CI流程顺畅,从而显著提高开发效率和软件质量。
214 3
|
Java 应用服务中间件 Apache
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
本文介绍了在IntelliJ IDEA中修改Web项目访问路径的步骤,包括修改项目、模块、Artifacts的配置,编辑Tomcat服务器设置,以及解决Apache Tomcat控制台中文乱码问题的方法。
1106 0
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题

热门文章

最新文章

推荐镜像

更多