Maven初识(四)——运行第一个Servlet,依赖范围讲解

来源:互联网 发布:c语言 最长单词 编辑:程序博客网 时间:2024/06/14 15:14

初始化Maven运行环境

在Maven初识(二)基本知识中,我们已经创建了一个Maven空JavaWeb项目。

这里写图片描述

大家都知道,Maven的很多功能都是插件实现的,那么我们来看看有哪儿些插件。

在pom.xml文件中配置插件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>cn.domarvel</groupId>  <artifactId>helloyangqiqi</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>war</packaging>  <build>    <plugins>    <!-- 该插件是用来编译源代码的,我们都知道编译源代码涉及到JDK的版本,所以configuration标签中就是配置的JDK版本。运行时的JDK版本和你本机安装的有关。 -->        <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-compiler-plugin</artifactId>            <version>3.1</version>            <configuration>                <source>1.8</source>                <target>1.8</target>                <encoding>UTF-8</encoding>            </configuration>        </plugin>        <!-- 这是配置运行时的tomcat版本,如果不配置这个,默认的tomcat版本为6.0版本。 -->        <plugin>              <groupId>org.apache.tomcat.maven</groupId>              <artifactId>tomcat7-maven-plugin</artifactId>              <version>2.1</version>          </plugin>    </plugins>  </build></project>

写了这个之后,项目会报错。

这里写图片描述

刷新Maven:

这里写图片描述

注意:因为你的本地仓库为空文件夹,所以你配置了中央仓库后,需要联网才能够完成刷新Maven的操作。

如果你不想写配置文件,你也可以这样添加插件或者依赖:

这里写图片描述

添加依赖jar包:

在pom.xml文件中配置:

  <dependencies>      <!-- 配置依赖的servlet包 -->      <dependency>        <groupId>javax.servlet</groupId>        <artifactId>javax.servlet-api</artifactId>        <version>3.1.0</version>        <!-- scope就是依赖范围的配置,如果不配置,默认的依赖范围是compile,现在看不懂没关系,等下会讲解。 -->        <scope>provided</scope>      </dependency>  </dependencies>

整体配置:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>cn.domarvel</groupId>  <artifactId>helloyangqiqi</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>war</packaging>  <build>    <plugins>        <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-compiler-plugin</artifactId>            <version>3.1</version>            <configuration>                <source>1.8</source>                <target>1.8</target>                <encoding>UTF-8</encoding>            </configuration>        </plugin>        <plugin>              <groupId>org.apache.tomcat.maven</groupId>              <artifactId>tomcat7-maven-plugin</artifactId>              <version>2.1</version>          </plugin>    </plugins>  </build>  <dependencies>      <dependency>        <groupId>javax.servlet</groupId>        <artifactId>javax.servlet-api</artifactId>        <version>3.1.0</version>        <scope>provided</scope>      </dependency>  </dependencies></project>

如果报错,请再次刷新Maven项目。

可以看到jar包添加成功!!!

这里写图片描述

创建servlet类:

这里写图片描述

public class HelloYangQiQi extends HttpServlet{    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        resp.setContentType("text/html;charset=utf-8");        resp.getWriter().println("在最后的日子里,有开心,有失落。"                + "开心的是认识了你,第一次跟女生吃饭,第一次跟女生散步,"                + "第一次跟女生一起去图书馆,第一次跟女生谈电影,第一次遇到性格相仿的女生,"                + "第一次有女生帮我接水,第一次吃女生给的东西,第一次发现女生也有这么完美的,"                + "第一次感受到了心灵的温暖,第一次有想付出一切的冲动,"                + "也是第一次最害怕的一次。"                + "不开心的是没多久我们就要别离了;自己也没自信能够让你过好,怕以后会伤害到你。讨厌自己不够幽默,讨厌自己不能让你笑起来,讨厌冷场。"                + "讨厌自己为什么编码能力那么弱!!!!!!!!!!!!!没有物质的生活是折磨啊!!!"                + "time:2017-5-17 10:12:25:81");    }}

配置web.xml:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  <servlet>    <servlet-name>LY</servlet-name>    <servlet-class>cn.domarvel.web.servlet.HelloYangQiQi</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>LY</servlet-name>    <url-pattern>/LY</url-pattern>  </servlet-mapping>  <welcome-file-list>    <welcome-file>index.html</welcome-file>    <welcome-file>index.htm</welcome-file>    <welcome-file>index.jsp</welcome-file>    <welcome-file>default.html</welcome-file>    <welcome-file>default.htm</welcome-file>    <welcome-file>default.jsp</welcome-file>  </welcome-file-list></web-app>

部署项目:

这里写图片描述

这里写图片描述

好了,这样就可以了。如果报出任何异常请自行百度。这里就不多做阐述了。反正大致流程是这样的。

依赖范围:

这里写图片描述

注意:如果像servlet-api.jar包导入到已经部署到Tomcat中的项目后,那么会因为jar包冲突而运行失败。所以你看我们上面的servlet配置时,设置了依赖范围为provided

system: 系统依赖范围。该依赖与三种classpath的关系,和provided依赖范围完全一致。但是,使用system范围依赖时必须通过systemPath元素显式地指定依赖文件的路径。由于此类依赖不是通过Maven仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植,因此应该谨慎使用。systemPath元素可以引用环境变量,如:

<dependency>      <groupId>javax.sql</groupId>      <artifactId>jdbc-stdext</artifactId>      <version>2.0</version>      <scope>system</scope>      <systemPath>${java.home}/lib/rt.jar</systemPath>  </dependency>  

项目调试:

和运行差不多,也要写tomcat7:run

这里写图片描述

但是唯一不同的是

这里写图片描述

最后说一下:

第一:我们安装Maven一般要配置一个本地仓库,中央仓库。
第二:pom.xml文件里面通常配置

- 本项目的坐标信息- 本项目JDK编译版本的信息- 本项目依赖的jar包坐标的信息

这里写图片描述