Maven工程开发
目录
一、Maven工程开发_构建Maven工程
接下来我们构建一个Maven的Web工程:
打开 idea,选择创建一个新工程
选择Maven工程,并使用maven的web工程模板
点击 Next 填写项目信息(所谓的公司名其实就是前两个包的包名)
点击 Next,此处不做改动,点击Finish构建项目
手动添加class="lazy" data-src/main/java目录,此时该目录还不能写Java代码。
将class="lazy" data-src/main/java目录设置为Java代码目录。
二、Maven工程开发_pom文件配置
pom文件最上方是项目基本信息:
groupId
groupId一般定义项目组名,命名规则使用反向域名。例如com.itbaizhan
artifactId
artifactId一般定义项目名,命名使用小写字母。项目发布后,它的坐标是groupId+artifactId。
version
version定义版本号。版本号一般有三段,第一段:革命性的产品升级。第二段:新功能版本。第三段:修正一些bug。
packaging
packaging定义打包方式。
由于项目是web项目,需要写Servlet和JSP,所以需要引入Servlet和JSP的依赖。查找依赖坐标的网站:https://mvnrepository.com/
为什么之前的web项目中没有引入jsp和servlet的jar包?
因为之前项目中使用的是tomcat中的jsp和servlet中的jar包,在项目中没有引入。
web项目依赖tomcat运行,所以添加tomcat7插件
三、Maven工程开发_编写代码
接下来编写Servlet和Jsp代码:
@WebServlet("/demo1")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher("hello.jsp").forward(req,resp);
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
你好,大学牲!
运行项目,按照如图步骤,配置使用maven中的tomcat7插件运行项目:
点击OK后配置完成,点击Idea的运行符号即可使用maven中的tomcat7插件运行项目。
Maven使用tomcat7运行项目的命令为:tomcat7:run
四、Maven工程开发_依赖范围
访问servlet后,发现报500异常,这是为什么呢?
这是由于项目中引入了Servlet和Jsp的jar包,而在项目运行时,Tomcat要使用它自带的Servlet和Jsp的jar包,这样就造成了jar包冲突。但如果项目不引入Servlet和Jsp的jar包,则根本无法通过编译。
此时可以设置依赖的作用范围解决该问题,设置Servlet和Jsp的jar包只在编译期起作用,运行时不起作用,这样不仅可以通过编译,还能在运行时避免jar包冲突。
通过在
compile
默认范围。表示该依赖在编译和运行时生效,项目打包时也会将该依赖打包进去。
provided
使用此依赖范围的Maven依赖,编译和测试时有效,但在运行时无效。典型的例子是servlet-api,在运行时Web容器已经提供依赖,就不需要Maven重复地引入一遍。
runtime
runtime范围表明编译时不需要生效,而只在运行时生效。典型的例子是JDBC驱动包,编译时只需要JDK的JDBC接口即可,只有运行项目时才需要具体的JDBC驱动。
test
test范围表明使用此依赖范围的依赖,只在编译和运行测试代码的时生效,程序的正常运行不需要此类依赖。典型的例子就是JUnit,它只有在编译测试代码及运行测试的时候才需要。
system
如果有些你依赖的jar包没有Maven坐标的,它完全不在Maven体系中,这时候你可以把它下载到本地硬盘,然后通过system来引用。(不推荐使用)
- 所以对于Servlet和Jsp依赖,我们添加依赖范围为provided即可。
重启项目,即可正常访问Servlet和Jsp。
所以,你们学废了吗?
分享一下我最喜欢的星空图!!!
来源地址:https://blog.csdn.net/qq_53317005/article/details/127848003
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341