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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【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。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
1天前
|
Java 应用服务中间件 Maven
idea+maven+tomcat+spring 创建一个jsp项目
这篇文章介绍了如何在IntelliJ IDEA中使用Maven和Tomcat创建一个JSP项目,包括配置Maven依赖、设置Tomcat服务器、编写JSP页面、创建控制器和配置文件,以及项目的运行结果。
8 0
idea+maven+tomcat+spring 创建一个jsp项目
|
2月前
|
前端开发 JavaScript Java
idea中如何不重启tomcat 即可看到修改内容变化
这篇文章介绍了在IntelliJ IDEA中实现对Java Web应用的热部署(Hot Swap)的多种方法,包括启用自动构建、使用Exploded Artifact、安装JRebel插件、更改静态资源、使用Spring Boot的devtools以及IDEA的HotSwap功能,以便在不重启Tomcat服务器的情况下看到修改内容的变化。
idea中如何不重启tomcat 即可看到修改内容变化
|
1月前
|
机器学习/深度学习 人工智能 搜索推荐
如何让你的Uno Platform应用秒变AI大神?从零开始,轻松集成机器学习功能,让应用智能起来,用户惊呼太神奇!
【9月更文挑战第8天】随着技术的发展,人工智能与机器学习已融入日常生活,特别是在移动应用开发中。Uno Platform 是一个强大的框架,支持使用 C# 和 XAML 开发跨平台应用(涵盖 Windows、macOS、iOS、Android 和 Web)。本文探讨如何在 Uno Platform 中集成机器学习功能,通过示例代码展示从模型选择、训练到应用集成的全过程,并介绍如何利用 Onnx Runtime 等库实现在 Uno 平台上的模型运行,最终提升应用智能化水平和用户体验。
36 1
|
2月前
|
存储 消息中间件 前端开发
Web2py框架下的神秘力量:如何轻松集成第三方API,让你的应用不再孤单!
【8月更文挑战第31天】在开发现代Web应用时,常需集成第三方服务如支付网关、数据存储等。本文将指导你使用Web2py框架无缝接入第三方API。通过实例演示从注册获取API密钥、创建控制器、发送HTTP请求到处理响应的全过程。利用`requests`库与Web2py的内置功能,轻松实现API交互。文章详细介绍了如何编写RESTful控制器,处理API请求及响应,确保数据安全传输。通过本教程,你将学会如何高效整合第三方服务,拓展应用功能。欢迎留言交流心得与建议。
37 1
|
2月前
|
消息中间件 运维 Cloud Native
核心系统转型问题之快速集成不同技术体系构建的应用系统如何解决
核心系统转型问题之快速集成不同技术体系构建的应用系统如何解决
|
2月前
|
监控 数据安全/隐私保护 异构计算
借助PAI-EAS一键部署ChatGLM,并应用LangChain集成外部数据
【8月更文挑战第8天】借助PAI-EAS一键部署ChatGLM,并应用LangChain集成外部数据
68 1
|
2月前
|
存储 人工智能 API
阿里云百炼应用实践系列-10分钟在企业微信中集成一个 AI 助手
在阿里云平台上,您只需十分钟,无需任何编码,即可在企业微信上为您的组织集成一个具备大模型能力的AI助手。此助手可24小时响应用户咨询,解答各类问题,尤其擅长处理私域问题,从而成为您企业的专属助手,有效提升用户体验及业务竞争力。
|
2月前
|
存储 JavaScript 前端开发
Vue中通过集成Quill富文本编辑器实现公告的发布。Vue项目中vue-quill-editor的安装与使用【实战开发应用】
文章展示了在Vue项目中通过集成Quill富文本编辑器实现公告功能的完整开发过程,包括前端的公告发布、修改、删除操作以及后端的数据存储和处理逻辑。
Vue中通过集成Quill富文本编辑器实现公告的发布。Vue项目中vue-quill-editor的安装与使用【实战开发应用】
|
1月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
115 0

推荐镜像

更多