JavaWeb--maven

maven中自带有tomcat的依赖jar包,版本是6.0,并且最多只能支持7.0版本的,所以如果servlet-api指定的依赖范围到了运行时,maven就不知道该选择自己自带的还是我们所指定的,就会出异常,所以servlet-api通常指定为<scope>provided</scope>
maven中自带的jdk是1.5不支持注解配置
maven的生命周期:
	清除生命周期: mvn clean  clean是maven工程的清理命令执行clean会删除target目录及内容。
	默认生命周期: 
	 	1. mvn compile 
	 	编译compile,是maven工程的编译命令,作用是将 src/main/java下的文件编译为
	 	class文件输出到target目录下
		2. mvn test   
		test是maven 工程的测试命令 mvn test,会执行src/test/java下的单元测试类。
		3. mvn package  
         package是maven工程的打包命令,对于java工程执行package打成jar包,对于web
         工程打成war包,通常会在pom.xml中配置<packaging>war</packaging>4. mvn install  
         install 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 
         war包发布到本地仓库。
         5. mvn deploy   部署
抽取servlet
	1. UserServlet extends BaseServlet 
	2. BaseServlet extends HttpServlet
    protected void service(HttpServletRequest request, HttpServletResponse response){
    	//获取地址栏中访问的方法名,截取是[n,m),而'/'这个字符不需要
    	String uri = request.getRequestURI();
    	String method_name = uri.substring(uri.lastIndexOf('/')+1);
    	//通过反射,调用地址栏中指定的方法
    	Method method =this.getClass().getDeclaredMethod
(method_name,HttpServletRequest.class,HttpServletResponse.class);
		//调用这个方法
		method.invoke(this,request,response);
    }
    this:谁调用的方法,this就是谁,用户访问UserServlet本质上是调用这个对象的service方法,由于UserServlet中没有定义,所有通过继承的关系向上找,这个原始service()的参数是:ServletRequest request, ServletResponse response,不是HttpServletRequest/HttpServletResponse,所以继续向上找,找到HttpServlet中的service()方法,对这个service()方法的参数向下转型,得到service(HttpServletRequest req, HttpServletResponse resp)方法。由于我自定义的BaseServlet重写了service(HttpServletRequest req, HttpServletResponse resp)方法,多态重写就执行子类,所以最终执行的是BaseServlet中的service();

day24_maven基础

1.maven的相关概念

  • maven的作用:帮助我们统一编译、测试、打包、部署、运行、调优项目以及统一管理我们的依赖jar包;

2.Maven的安装和相关配置

  • 安装maven:解压到非中文目录即可

    • 配置MAVEN_HOME

      ​ 系统变量: %MAVEN_HOME% I:\maven\apache-maven-3.5.2-bin\apache-maven-3.5.2

    • 配置path环境变量:%MAVEN_HOME%\bin

      ​ 系统变量: Path–>编辑–> %MAVEN_HOME%\bin

    • 测试是否安装成功

      cmd-->mvn -version
      
  • **配置仓库:<localRepository>I:/maven_repository/maven_repository

    ​ 找到目录:I:\maven\apache-maven-3.5.2-bin\apache-maven-3.5.2\conf\settings.xml

    ​ 自定义标签配置:I:/maven_repository/maven_repository

  • 配置阿里云仓库镜像:在apache-maven-3.5.2/conf/settings.xml中的mirrors标签中配置

    <mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>        
    </mirror>
    

3.仓库的分类

  • **本地仓库:**项目通过坐标直接从本地仓库获取jar包。前提是:本地仓库有这个jar包
  • **私服仓库:**优先从本地仓库获取jar包,如果没有,就从私服仓库将jar包下载到本地仓库,如果私服仓库也没有jar包,那么就从中央仓库将jar包下载到私服仓库和本地仓库,最后从本地仓库获取jar包。
  • **中央仓库:**优先从本地仓库获取jar包,如果没有,就从中央仓库先把jar包下载到本地仓库(有外网),再从本地仓库获取jar包。
  • 总结:无论哪种方式,最终项目都是从本地仓库获取jar包

4.常用命令

  • mvn clean:清除项目的编译信息,删除target目录内容
  • mvn compile:编译项目
  • mvn test:编译和运行测试代码
  • mvn package:将项目打成jar包或者war包(在pom.xml中指定)
  • mvn install:将我们的项目打成jar包安装到本地仓库中(作用:别的项目可以使用这个jar包)

5.idea中集成maven(只要换了project都有重新集成)

  • 配置本地的maven路径

  • 配置骨架/项目模板的来源:离线:-DarchetypeCatalog=internal -Dfile.encoding=GB2312

6.在idea中创建maven项目(重点1)

7.依赖管理以及依赖范围(重点2)

  • 通过坐标添加依赖jar包

    • 坐标:jar包位置的唯一表示,maven通过坐标可以在仓库中找到对应的jar包。

      坐标由如下三部分组成:groupid(公司组成名称)、artifactid(项目名/模块名)、version(版本号)

    • 中央仓库网址:

      中央仓库网址:http://mvnrepository.com/

  • 依赖范围

    注意:依赖默认是compile范围,但是junit是test范围,servlet-api和jsp-api是provided范围,mysql驱动jar包是runtime范围

    compile: 编译,测试,运行,默认值

    test:测试,junit

    provided: 编译,测试,servlet-api和jsp-api

    rumtime:测试,运行,mysql驱动

    system:编译,测试,本地仓库外的仓库

    <dependencies>
    	<!--指定junit单元测试依赖jar包-->
    	<dependency>
    		<groupId>junit</groupId>
    		<artifactId>junit</artifactId>
    		<version>4.12</version>
    		<scope>test</scope>
    	</dependency>
    	<!--指定jsp依赖jar包-->
        <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.1</version>
                <scope>provided</scope>
          </dependency>
    </dependencies>
    

8.常用的插件(重点3)

  • tomcat7插件和jdk1.7插件(每个模块都添加)

    <build>			
        <plugins>
            <!-- 	配置jdk插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>utf-8</encoding>
                </configuration>
            </plugin>
    
            <!-- 	配置tomcat7插件 -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                 <version>2.2</version>
                <configuration>
                    <port>8080</port>
                    <path>/usermanager</path> <!--配置虚拟路径-->
                    <uriEncoding>utf-8</uriEncoding><!-- 解决get请求乱码问题 -->
                </configuration>
            </plugin>
        </plugins>
    </build>
    
  • 配置maven插件tomcat7启动项:

猜你喜欢

转载自blog.csdn.net/qq_42514129/article/details/84095422
今日推荐