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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【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 
相关文章
|
8月前
|
监控 前端开发 Java
SpringBoot集成Tomcat、DispatcherServlet
通过这些配置,您可以充分利用 Spring Boot 内置的功能,快速构建和优化您的 Web 应用。
526 21
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
354 0
|
11月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
251 2
|
开发者 前端开发 开发框架
JSF与移动应用,开启全新交互体验!让你的Web应用轻松征服移动设备,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,移动设备的普及使得构建移动友好的应用变得至关重要。尽管JSF(JavaServer Faces)主要用于Web应用开发,但结合Bootstrap等前端框架,也能实现优秀的移动交互体验。本文探讨如何在JSF应用中实现移动友好性,并通过示例代码展示具体实现方法。使用Bootstrap的响应式布局和组件可以确保JSF页面在移动设备上自适应,并提供友好的表单输入和提交体验。尽管JSF存在组件库较小和学习成本较高等局限性,但合理利用其特性仍能显著提升用户体验。通过不断学习和实践,开发者可以更好地掌握JSF应用的移动友好性,为Web应用开发贡献力量。
136 1
|
存储 消息中间件 前端开发
Web2py框架下的神秘力量:如何轻松集成第三方API,让你的应用不再孤单!
【8月更文挑战第31天】在开发现代Web应用时,常需集成第三方服务如支付网关、数据存储等。本文将指导你使用Web2py框架无缝接入第三方API。通过实例演示从注册获取API密钥、创建控制器、发送HTTP请求到处理响应的全过程。利用`requests`库与Web2py的内置功能,轻松实现API交互。文章详细介绍了如何编写RESTful控制器,处理API请求及响应,确保数据安全传输。通过本教程,你将学会如何高效整合第三方服务,拓展应用功能。欢迎留言交流心得与建议。
198 1
|
Java 应用服务中间件 Apache
浅谈Tomcat和其他WEB容器的区别
Tomcat是一款轻量级的免费开源Web应用服务器,常用于中小型系统及并发访问量适中的场景,尤其适合开发和调试JSP程序。它不仅能处理HTML页面,还充当Servlet和JSP容器。相比之下,物理服务器是指具备处理器、硬盘等硬件设施的服务器,如云服务器,其设计目标是在处理能力、稳定性和安全性等方面提供高标准服务。简言之,Tomcat专注于运行Java应用,而物理服务器则提供基础计算资源。
|
存储 缓存 安全
如何使用 PHP 将天气跟踪集成到 Web 应用程序中
如何使用 PHP 将天气跟踪集成到 Web 应用程序中
152 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流程顺畅,从而显著提高开发效率和软件质量。
191 3
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
833 0

热门文章

最新文章

推荐镜像

更多