三、使用Maven构建 Web项目
与二、IDEA集成 Tomcat基本一致,可以简单了解。
1、创建Maven Web项目
Tomcat中运行的绝大多数都是Web项目,而使用Maven工具(Mavan学习笔记链接)能更加简单快捷的把Web项目给创建出来,所以我们要学会如何构建Maven的Web项目。
在真正创建Maven Web项目之前,我们先要知道Web项目长什么样子,具体的结构是什么?
1.1 Web项目结构
Web项目的结构分为:开发中的项目和开发完可以部署的Web项目,这两种项目的结构是不一样的,我们一个个来介绍一下:
Maven Web项目结构: 开发中的项目
开发完成部署的Web项目
开发项目通过执行Maven打包命令package,可以获取到部署的Web项目目录
编译后的Java字节码文件和resources的资源文件,会被放到WEB-INF下的classes目录下
pom.xml中依赖坐标对应的jar包,会被放入WEB-INF下的lib目录下
1.2 创建Maven Web项目
介绍完Maven Web的项目结构后,接下来使用Maven来创建Web项目,创建方式有两种:使用骨架和不使用骨架
使用骨架
具体的步骤包含:
1.创建Maven项目
2.选择使用Web项目骨架
3.输入Maven项目坐标创建项目
4.确认Maven相关的配置信息后,完成项目创建
5.删除pom.xml中多余内容
6.补齐Maven Web项目缺失的目录结构
不使用骨架
具体的步骤包含:
1.创建Maven项目
2.选择不使用Web项目骨架
3.输入Maven项目坐标创建项目
4.在pom.xml设置打包方式为war
5.补齐Maven Web项目缺失webapp的目录结构
6.补齐Maven Web项目缺失WEB-INF/web.xml的目录结构
创建Maven项目
选择不使用Web项目骨架
输入Maven项目坐标创建项目
在pom.xml设置打包方式为war,默认是不写代表打包方式为jar
补齐Maven Web项目缺失webapp的目录结构
补齐Maven Web项目缺失WEB-INF/web.xml的目录结构
补充完后,最终的项目结构如下:
上述两种方式,创建的web项目,都不是很全,需要手动补充内容,至于最终采用哪种方式来创建Maven Web项目,都是可以的,根据各自的喜好来选择使用即可。
总结
1.掌握Maven Web项目的目录结构
2.掌握使用骨架的方式创建Maven Web项目
3.掌握不使用骨架的方式创建Maven Web项目
2、IDEA集成本地Tomcat
Maven Web项目创建成功后,通过Maven的package命令可以将项目打包成war包,将war文件拷贝到Tomcat的webapps目录下,启动Tomcat就可以将项目部署成功,然后通过浏览器进行访问即可。
然而我们在开发的过程中,项目中的内容会经常发生变化,如果按照上面这种方式来部署测试,是非常不方便的
所以我们需要IDEA中能快速使用Tomcat,即在IDEA中集成本地Tomcat,将刚才本地安装好的Tomcat8集成到IDEA中,完成项目部署,具体的实现步骤
打开添加本地Tomcat的面板
指定本地Tomcat的具体路径
修改Tomcat的名称,此步骤可以不改,只是让名字看起来更有意义,HTTP port中的端口也可以进行修改,比如把8080改成80
将开发项目部署项目到Tomcat中
扩展内容: 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页面
启动成功后,可以通过浏览器进行访问测试
最终的注意事项
至此,IDEA中集成本地Tomcat进行项目部署的内容我们就介绍完了,整体步骤如下,大家需要按照流程进行部署操作练习。
四、示例代码
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。