手摸手使用IDEA创建多模块(maven)项目

news2024/11/30 7:55:14

有了前面两篇手摸手打底,相信大家对IDEA创建项目和配置使用maven已经没有什么问题了。那么这篇文章阅读起来也会非常流畅。

对于IDEA来说,可以用拼接模块(Module)并引用的方式来“搭”一个项目(Project)。

1. 创建一个空的项目(empty project)。

空项目的项目结构:

 

 

 2. 你会注意到新建空项目只需要起一个名字,设置连Java SDK都不用选。这显然是不太可能的。所以啊,新建完空项目后,马上进入project sturcture...进行项目的相关设置。

可以看到目前SDK根本没有设定。

 

这里请一定进行配套的设置。SDK选择1.8,Language Level 选择8。

 3. 接下来添加模块

添加的第一个模快,创建的方式用maven。模块的名字叫dao_mod,选择的模板是quickstart,不用忘了最下方设置包名,不然会使用默认的org.example

4.接下来继续添加service_mod模块,方式和dao_mod 一模一样。

5.最后添加web_mod模块,与前两个不一样的是,它的模板是webapp。 

6.添加完毕后看一下项目结构。

 

 一个空项目下面有3个模块(module)。

7. 在dao_mod中添加MyDao

项目结构:

package org.piglite;

public class MyDao {
    public String getUsernameById(int id){return "piglite";}
}

 代码是玩具代码。

8.在service_dao中添加MyService

项目结构MyDao类似,代码也是玩具代码:

package org.piglite;

public class MyService {
    private MyDao mydao = new MyDao();
    public String getUsernameById(int id){return mydao.getUsernameById(id);}
}

这里需要注意的是MyService内部引用了MyDao,但是模块与模块之间不像包与包之间导入就可以,而是要建立模块与模块之间的依赖(Dependency),也就是service_mod依赖于dao.mod。

9.在web_mod中要添加MyServlet。添加前要做两件事:1.这是一个webapp模板,所以要添加名为java的源代码目录;2.这是maven构建的模块,通过maven引入比用的jar文件,包括servlet,jstl和standard。

编辑pom.xml,添加需要导入jar文件的<dependency>。 

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

10.在web_mod的java源文件目录下新建MyServlet:


import org.piglite.MyService;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(value = "/test")
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        MyService service = new MyService();
        String name = service.getUsernameById(1);
        request.setAttribute("name",name);
        request.getRequestDispatcher("hello.jsp").forward(request,response);
        
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

11.编写hello.jsp

<%@page contentType="text/html; UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<h2>Hello <c:out value="${name}"/> </h2>
</body>
</html>

JSP避免出现问题的前提条件是web_mod中有jstl.jar和standard.jar。

12.修改web.xml,将默认的动态网络模块从2.3改写为3.0

<?xml version="1.0" encoding="utf-8"?>
<web-app version="3.0"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  
  <display-name>Archetype Created Web Application</display-name>
</web-app>

13.万事俱备,只欠Tomcat。添加TOMCAT的相关配置,配置细节与前面两篇一样,server和deployment都需要配置。

14.启动项目

默认进入http://localhost:8080,会显示index.jsp的相关内容。

修改url,进入http://localhost:8080/test,会显示hello piglite

---------------------------------------------------------------------------------------------------------------------------------

写在最后。

创建模块的时候,不使用maven构建,而创建普通的Java模块也是没有问题。模块其实就可以视为单独且功能完整的“小型程序”。普通Java模块编写时需要第三方的Jar就需要手动设置,maven在这方面相对方便一些。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/41260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【全志T113-S3_100ask】15-2 linux系统gpio模拟spi驱动屏幕——ILI9341

【全志T113-S3_100ask】15-2 linux系统gpio模拟spi驱动屏幕——ILI9341背景&#xff08;一&#xff09;查阅参考文档&#xff08;二&#xff09;使能内核模块&#xff08;三&#xff09;修改设备树&#xff08;四&#xff09;测试&#xff08;五&#xff09;后语背景 在上一小…

nginx的安装与nginx降权+匹配php

安装nginx: 安装的插件的作用: 1.gcc 可以编译 C,C,Ada,Object C和Java等语言&#xff08;安装 nginx 需要先将官网下载的源码进行编译&#xff0c;编译依赖 gcc 环境&#xff09; 2.pcre pcre-devel pcre是一个perl库&#xff0c;包括perl兼容的正则表达式库&#xff0c;ngin…

样本于抽样分布(1)-基本概念

从理论上讲&#xff0c;只要对随机现象进行足够多次的试验&#xff0c;被研究的随机现象的规律 性就能清楚地呈现出来&#xff0e; 但实际上&#xff0c;试验的次数只能是有限的&#xff0c;有时甚至是很少 的&#xff0c;因为采集某些数据时&#xff0c;常要将研究的对象破坏&…

【Gradle】四、使用Gradle创建SringBoot微服务项目

使用Gradle创建SringBoot微服务项目一、 创建Springboot项目0、阿里云脚手架创建项目1、引入 t springboot2 、引入依赖3、执行 geradle bootRun 指令4、spring-boot-gradle-plugin 插件‘二、多模块项目1、settings.gradle2、build.gradle3、version.gradle4、test_service的配…

图论:自反与对称

图论1.自反与反自反2.对称与反对称3.传递与非传递1.自反与反自反 自反&#xff1a;相同顶点都在集合内。 反自反&#xff1a;相同顶点都不在集合内。 参考下图&#xff1a;有三部分&#xff0c;红色的自反&#xff0c;蓝色的反自反&#xff0c;以及白色的都不是。 例1&#…

Animation

1、Animation窗口 Window——>Animation——>Animation Animation窗口 直译就是动画窗口&#xff0c;它主要用于在Unity内部创建和修改动画&#xff0c;所有在场景中的对象都可以通过Animation窗口为其制作动画 原理&#xff1a; 制作动画时&#xff1a;记录在固定时间…

[Linux]-----进程信号

文章目录前言一、什么是信号我们是如何得知这些信号呢&#xff1f;我们知道对应的信号产生时&#xff0c;要做什么呢&#xff1f;二、进程信号前台进程和后台进程注意三、信号列表信号的捕捉四、信号产生前用户层产生信号的方式signal函数killraiseabort由软件条件产生信号硬件…

【Java】才疏学浅·小石Java问道之路

大家好&#xff0c;这里是喜爱编程&#xff0c;又热爱生活的小石~———— ————个人情报昵称&#xff1a;小石&#xff08;起源于姓氏啦~&#xff09;破壳日&#xff1a;4月12日身高&#xff1a;1 m ↑技术基础&#xff1a;c node.js mysql 爱好&#xff1a;上网冲浪 听…

【学习笔记45】JavaScript的分页效果

highlight: an-old-hope 一、分页效果 (一) 首次打开页面 从数组内截取部分数据展示调整页码信息为&#xff1a;当前页 / 总页码处理按钮 3.1 如果当前在第一页&#xff0c;禁用上一页按钮(添加类名disable)3.2 如果当前页在最后一页(当前页 总页码),禁用下一页按钮(添加类名…

SpringCloud微服务实践之六 Feign最佳实践(抽取)

传统Feign面临的问题&#xff1a; 1、每个子项目都要写所要调用服务的pojo 2、每个子项目都要写所要调用服务的feign client客户端 优化思路&#xff1a;由提供服务服务的子项目统一归集代码&#xff0c;统一对外提供接口服务、Feign子项目统一管理服务远程调用、 将FeignClien…

【菜菜的sklearn课堂笔记】逻辑回归与评分卡-用逻辑回归制作评分卡-分箱

视频作者&#xff1a;菜菜TsaiTsai 链接&#xff1a;【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili 分训练集和测试集 from sklearn.model_selection import train_test_split X pd.DataFrame(X) y pd.DataFrame(y)Xtrain,Xtest,Ytrain,Ytest …

DSP-FIR滤波器设计

目录 Gibbs现象:用三角函数逼近间断点: Gibbs现象特点: 常见窗函数&#xff1a; 窗函数的主要频谱参数: 矩形窗(Rectangular)&#xff1a; 汉宁窗(Hanning)&#xff1a; 汉明窗(Hamming)&#xff1a; 布莱克曼窗(Blackman)&#xff1a; 窗函数之间的性能对比&#xff…

Script file ‘F:.....\pip-script.py‘ is not present 原因及解决办法

一 报错类型 二 原因 可能我们使用pip install --upgrade pip或者conda安装一下包时因为网络原因导致只是卸载旧版本而未安装。 三 解决策略 3.1 Anaconda 切换到你的anaconda安装目录并进入Scripts文件夹内(D:\Apps\anaconda3\Scripts) 运行以下代码&#xff1a; conda i…

【Kafka】Kafka基础架构及相关概念

文章目录前言一、Kafka基础知识二、Kafka分区副本参考前言 在以前的定义中&#xff0c;Kafka被定义为一个分布式的基于发布/订阅模式的消息队列&#xff08;Message Queue&#xff09;&#xff0c;主要应用于大数据实时处理领域&#xff0c;类似的产品主要有ActiveMQ、RabbitM…

flutter useRootNavigator属性的作用

useRootNavigator 用于确定是否将对话框推到距给定上下文最远或最接近给定上下文的Navigator 问题&#xff1a; 在使用showDatePicker的时候&#xff0c;android手机如果侧滑返回的时候&#xff0c;页面会关闭&#xff0c;showDatePicker弹出的dailog缺没有关闭。 使用如下…

【学习笔记42】操作DOM

操作DOM一、操作DOM1、步骤2、创建元素节点3、创建文本节点4、增加dom(添加到指定父节点的最后)5、增加dom(添加到指定父节点的最后)6、增加dom(添加到父节点的最前边)7、删除DOM8、修改某一个节点二、克隆DOM1、说明2、复制(克隆)一个LI三、获取元素尺寸(占地面积)四、获取浏览…

WordPress怎么禁止用户使用HTML标签,自动过滤HTML代码?

WordPress怎么禁止用户使用HTML标签&#xff0c;自动过滤HTML代码&#xff1f;出于安全考虑WordPress默认禁止角色为作者的用户写文章时直接添加HTML代码&#xff0c;包括读者留言时也是不允许的。如果想开放此限制&#xff0c;允许作者撰写文章和读者留言时添加HTML代码&#…

Java项目——博客系统(前后端交互)

项目展示 项目说明 使用servlet&#xff0c;实现前后端交互&#xff0c;通过jdbc和mysql数据库进行数据传输&#xff0c;使得可以将用户信息和博客列表存储在数据库中&#xff0c;实现真正的服务器&#xff0c;客户端&#xff0c;数据库三者的交互 项目代码 数据库 在sql数…

进阶的风控策略篇:如果筛选最佳策略帮我们锁定优质客群

在番茄风控往期的内容中&#xff0c;我们一直在跟大家介绍风控策略干货内容&#xff0c;相关内容包括&#xff1a; ①风控的拒绝捞回策略 ②多规则的策略筛选 ③策略的调优 ④策略的开发与应用 … 策略相关的内容可谓干货满满&#xff0c;比如关于策略开发与应用的内容上&#…

SpringBoot SpringBoot 原理篇 1 自动配置 1.15 自动配置原理【1】

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇1 自动配置1.15 自动配置原理【1】1.15.1 看源码了1.15.2 Import({AutoConfig…