美文网首页
Java高级技术day74:Maven实战

Java高级技术day74:Maven实战

作者: 开源oo柒 | 来源:发表于2019-11-04 22:58 被阅读0次

一、Maven私服搭建

1.Maven常用命令:

(1)install:

本地安装, 包含编译,打包,安装到本地仓库 编译 - javac 打包 - jar, 将 java 代码打包为 jar 文件 安装到本地仓库 - 将打包的 jar 文件,保存到本地仓库目录中。

(2)clean:

清除已编译信息。 删除工程中的 target 目录。

(3)compile :

只编译,类似于javac 命令 。

(4)deploy:

部署。 常见于结合私服使用的命令。
相当于是 install+上传 jar 到私服。
包含编译,打包,安装到本地仓库,上传到私服仓库。

2.Maven私服:

  • 什么是私服?

私服是一种特殊的远程仓库,它是架设在局域网的仓库服务,私服代理广域网上的远程 仓库,供局域网使用。 在企业开发中,私服的建设是有必要的。

  • 私服的好处:

(1)节省资金、外网带宽:
利用私服代理外部仓库之后,对外的重复构件下载便得以简化,降低外网带宽压力。
(2)加速Maven构建:
不停地连接请求外部仓库是相当耗时的,但是 maven 的一些内部机制(如快照更新检 查)要求 Maven 在执行构建的时候不停地检查远程仓库数据。因此,当项目配置了很多外 部远程仓库的时候,构建速度会降低。使用私服解决这问题,因为 Maven 只需要检查局域 网内私服的数据时,构建速度便有明显提高。
(3) 部署第三方构件 :
当某个构件无法从任何一个远程仓库获取怎么办?比如 Oracle 的 JDBC 驱动由于版权 原因不能发布到公共仓库中。建立私服后,便可以将这些构件部署到这个内部仓库中,供内 部 Maven 项目使用。
(4)提高稳定性,增强控制:
对于远程仓库来说,当外网不可用时,Maven 构建有可能因为依赖没有下载而不可行, 搭建并应用私服后,即使没有外网,如果该构件之前被其它人下载过就会存在私服上,此时 再次依赖该构件就可以不用连接外网直接就可以从私服上下载到。同时私服软件(nexus)还 提供了额外的管理功能。
(5) 降低中央仓库的负荷 :
中央仓库是有限的。如果所有的 Maven 工程开发过程中,都通过中央仓库实现构件的 依赖和管理,那么中央仓库的负荷过高,也会严重影响工程构建的效率。如果使用私服,可 以分散中央仓库的负荷,只有在私服中没有需要依赖的构件时才会去连接中央仓库。

3.Maven私服搭建:

  • 搭建环境:

环境:CentOS6.5、JDK7、Sonatype Nexus、Maven(Eclipse 或 MyEclipse);

  • 搭建步骤:
    (1)安装JDK:

JDK下载地址:官方网站
将jdk解压到指定目录:
tar -zxvf jdk-7u80-linux-x64.tar.gz -C /usr/local ;
配置环境变量(配置完成后重启Linux永久生效):

export JAVA_HOME=/usr/local/java export 
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export PATH=$JAVA_HOME/bin:$PATH 

(2)下载Nexus资源包:

下载地址:官方网址
将Nexus解压到指定目录:
tar -zxvf nexus-2.11.2-03-bundle.tar.gz -C /usr/local/nexus ;
Nexus 压缩包中包含两个子目录:
nexus-2.11.2-03 和 sonatype-work nexus-2.11.2-03 是具体的私服应用内容,sonatype-work 是 Nexus 私服下载的构件存放工 作目录。
(3)检查私服端口和工作目录:
在 nexus-2.11.2-03 目录中有子目录 conf,其中保存私服应用的配置信息。查看 nexus.properties 文件,确定私服访问端口和工作目录。

application-port=8081   # 私服访问端口 
application-host=0.0.0.0 
nexus-webapp=${bundleBasedir}/nexus   # Nexus 私服 WEB 应用所在位置 
nexus-webapp-context-path=/nexus   # Nexus 私服 WEB 应用 contextPath
# Nexus section Nexus 私服配置信息 
nexus-work=${bundleBasedir}/../sonatype-work/nexus  
# 私服工作目录,即构件保存目录 
runtime=${bundleBasedir}/nexus/WEB-INF  # 私服 WEB 应用运行目录  

(4)修改Nexus运行用户:

Nexus 私服在启动后,私服应用需要访问 Linux 的文件系统,所以需要有足够的权限。 Nexus的启动脚本文件中,可以指定私服应用的访问用户,此信息在nexus-2.11.2-03/bin/nexus 脚本文件中定义。

# NOTE - This will set the user which is used to run the Wrapper as well as
#  the JVM and is not useful in situations where a privileged resource or 
#  port needs to be allocated prior to the user being changed. 
#RUN_AS_USER=  #原内容 
RUN_AS_USER=root  #修改后的内容,代表 Nexus 私服使用 root 用户权限。 

(5)修改防火墙,开发Nexus私服端口访问:

修改防火墙配置文件,开放 Nexus 私服的访问端口 8081。
增加:“-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT ”;
重启防火墙:“service iptables restart ”;
或者直接关闭防火墙:

关闭防火墙

(6)启动并测试访问:

启动私服:“/usr/local/nexus/nexus-2.11.2-03/bin/nexus start ”;
检查私服运行状态:"/usr/local/nexus/nexus-2.11.2-03/bin/nexus status ";
也可以使用浏览器访问私服WEB应用,访问地址为:“http://ip:8081/nexus (ip 为 Nexus 所在系统的访问 IP)”

启动私服
浏览器效果

(7)登录:

Nexus 默认提供管理用户,用户名为 admin,密码为 admin123。

登录界面
成功界面
  • 仓库管理:
    (1)检查仓库:


    image.png

    (2)仓库的类型:


    仓库类型

(3)仓库类型的介绍:

group:仓库组,Nexus 通过仓库组来统一管理多个仓库,这样访问仓库组就相当于访问仓库组 管理的多个仓库。
hosted:宿主仓库,主要用于发布内部项目构件或第三方的项目构件(如购买商业的构件)以及 无法从公共仓库获取的构件(如 oracle 的 JDBC 驱动)。
releases:发布内部的 releases 模块的仓库,所有非快照版本工程都发布到此仓库中。
snapshots:发布内部的快照模块的仓库,所有工程版本以 SNAPSHOT 结尾的都发布到此仓库中。
3rd party
第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去。
proxy:代理仓库,代理公共的远程仓库。
virtual:虚拟仓库,用于适配 Maven 1。

(4)代理仓库配置:

设置 proxy 代理仓库(Apache Snapshots/Central/Codehaus Snapshots)准许远程下载。

更改设置
  • 私服的使用:
    (1)配置setting.xml文件(添加下面信息):
<profile>
            <id>sxt</id>
            <activation>
                <activeByDefault>false</activeByDefault>
                <jdk>1.8</jdk>
            </activation>
            <repositories>
                <!-- 私有库配置 -->
                <repository>
                    <!-- 私有库 id -->
                    <id>nexus</id>
                    <!-- 私有库地址 -->
                    <url>http://192.168.226.128:8081/nexus/content/groups/public/</url>
                    <!-- 私有库是否支持 releases 版本 -->
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <!-- 私有库是否支持 snapshots 版本 -->
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <!-- 插件库配置,具体含义私有库配置 -->
                <pluginRepository>
                    <id>nexus</id>
                    <url>http://192.168.226.128:8081/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>

(2)pom.xml文件配置:

    <distributionManagement>
        <repository>
            <id>nexus-releases</id>
            <name>Nexus Release Repository</name>
            <url>http://192.168.226.128:8081/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <name>Nexus Snapshot Repository</name>
            <url>http://192.168.226.128:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.1.2</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build> 
  • 发布本地工程到私服:

在 Maven 工程的 maven build 中,输入命令 deploy,即可实现发布工程信息到私服。 如果同版本工程可能多次发布,需要修改 Nexus 配置。

image.png
  • 发布第三方插件到私服:


    image.png
    image.png

二、Maven实战:

1.需求分析:

基于 SSM 框架的 CRUD 案例;

  • 使用的技术:

框架:SpringMVC+Spring+Mybatis
数据库:MySQL
项目构建工具:Maven
Maven先打包Parent在打包聚合项目;再启动聚合项目。

启动Tomcat

2.项目架构设计:

  • 传统项目设计方式:


    传统方式
  • Maven 项目设计方式:


    Maven

3.创建工程:

3.1创建Parent工程:
Parent
  • 修改POM文件:
<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>com.zlw</groupId>
    <artifactId>11parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <junit.version>4.12</junit.version>
        <spring.version>4.1.3.RELEASE</spring.version>
        <mybatis.version>3.2.8</mybatis.version>
        <mybatis.spring.version>1.2.2</mybatis.spring.version>
        <mysql.version>5.1.32</mysql.version>
        <slf4j.version>1.6.4</slf4j.version>
        <druid.version>1.0.9</druid.version>
        <jstl.version>1.2</jstl.version>
        <servlet-api.version>2.5</servlet-api.version>
        <jsp-api.version>2.0</jsp-api.version>
        <tomcat.version>2.2</tomcat.version>
    </properties>
    
    <!-- jar 包的依赖注入 ,由于该工程是一个父工程, 所以 jar 包在该 pom 文件中只是声明 -->
    <dependencyManagement>
        <dependencies>
            <!-- 单元测试 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <!-- 日志处理 -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <!-- Mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>${mybatis.spring.version}</version>
            </dependency>
            
            <!-- MySql -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!-- 连接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
            
            <!-- Spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3</version>
            </dependency>
            <!-- JSP 相关 -->
            <dependency>
                <groupId>jstl</groupId>
                <artifactId>jstl</artifactId>
                <version>${jstl.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>${servlet-api.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jsp-api</artifactId>
                <version>${jsp-api.version}</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!-- 插件的开启 -->
    <build>
        <!-- tomcat 插件,由于子项目不一定每个都是 web 项目,所以该插件只是声明,并未开启 -->
        <pluginManagement>
            <plugins>
                <!-- 配置 Tomcat 插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>${tomcat.version}</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <!-- maven 的编译器插件,该插件主要是决定了当前 项目所使用 jre 版本 。由于无论是 jar,还是 war 项目都需要 制定 jar 
            的版本,所以该插件不需要生命,应当是开启的。 -->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
3.2创建聚合工程Manager:
聚合
3.3在聚合工程的基础上创建:
  • 创建manager-pojo:


    Module
    详细信息
  • 创建manager-mapper:


    mapper
  • 修改 manager-mapper 的 pom 文件:
<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>
    <parent>
        <groupId>com.zlw</groupId>
        <artifactId>12manager</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>manager-mapper</artifactId>
    
    <dependencies>
    
        <dependency>
            <groupId>com.zlw</groupId>
            <artifactId>manager-pojo</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        
        <!-- Mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
        </dependency>
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
            </dependency>

        <!-- MySql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- 连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
    </dependencies>
    <!-- 资源拷贝插件 -->
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource> 
        </resources>
    </build>

</project>
  • 创建 manager-service:


    service
  • 修改 manager-service 的 pom 文件:
<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>
  <parent>
    <groupId>com.zlw</groupId>
    <artifactId>12manager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>manager-service</artifactId>
    
    <dependencies>
    
        <dependency>
             <groupId>com.zlw</groupId>
            <artifactId>manager-mapper</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- Spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
            </dependency>
            
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
            </dependency>
            
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
            </dependency>
            
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
            </dependency>
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
            </dependency>
    </dependencies>
</project>
  • 创建 manager-controller :


    war
    补全项目
  • 修改 manager-controller 的 pom 文件:
<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>
  <parent>
    <groupId>com.zlw</groupId>
    <artifactId>12manager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>manager-controller</artifactId>
  <packaging>war</packaging>
    
    <dependencies>
        <dependency>
            <groupId>com.zlw</groupId>
            <artifactId>manager-service</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- JSP 相关 -->
            <dependency>
                <groupId>jstl</groupId>
                <artifactId>jstl</artifactId>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jsp-api</artifactId>
                <scope>provided</scope>
            </dependency>
    </dependencies>
    <build>
        <plugins>
    <!-- 配置Tomcat插件 -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <configuration>
                    <port>8080</port>
                    <path>/</path>
                </configuration>
            </plugin> 
  
        </plugins>
    </build>
</project>

4.框架整合:

image.png
4.1db.properties:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm
jdbc.username=root
jdbc.password=root
4.2 Mybatis 配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration 
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
  "http://mybatis.org/dtd/mybatis-3-config.dtd"> 
  <configuration>
    <!-- 配置分页插件 -->
  </configuration>
4.3applicationContext-mybatis.xml :
        <!-- 配置解析properties文件的工具类 -->
        <context:property-placeholder location="classpath:resource/*.properties"/>
        
        <!-- 配置数据源dataSource -->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
            <property name="driverClassName" value="${jdbc.driver}" /> 
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" /> 
            <property name="maxActive" value="10"/>
            <property name="minIdle" value="5"/>
        </bean>
        <!-- 创建mybatis的上下文对象 -->
        <bean class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource">
            <ref bean="dataSource" />
            </property>
            <property name="configLocation">
                <value>classpath:mybatis/SqlMapperClient.xml</value>
            </property>
        </bean>
        <!-- 扫描mybatis的接口与映射配置文件 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.zlw.mapper"></property>
        </bean>
4.4 applicationContext-service.xml :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd 
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd">
        
        <!-- 扫描bean对象 -->
        <context:component-scan base-package="com.zlw.service"/>
</beans>
4.5 applicationContext-trans.xml :
    <!-- 配置事务管理器的切面 -->
    <bean id="transactionMananger"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!-- 配置事务的传播行为:其实就是那些方法应该受什么样的事物控制 -->
     <tx:advice id="advice" transaction-manager="transactionMananger">
        <tx:attributes>
            <tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="modify*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="dorp*" propagation="REQUIRED" />
            <tx:method name="del*" propagation="REQUIRED" />
            <tx:method name="find*" read-only="true" />
        </tx:attributes>
    </tx:advice>

    <!-- 那些类下的方法需要参与到当前的事物管理中 。 配置切点 -->
    <aop:config>
        <aop:advisor advice-ref="advice"
            pointcut="execution(* com.zlw.service.*.*(..))" />
    </aop:config>
4.6springmvc.xml :
            <!-- 扫描@Controller -->
            <context:component-scan base-package="com.zlw.controller"></context:component-scan>
            
            <!-- 注册两个新对象 主要是为了来处理springmvc 中的其他 anntation 如:@requestmapping  -->
            <mvc:annotation-driven></mvc:annotation-driven>
            <!-- 视图解析器 -->
            <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <property name="prefix" value="/WEB-INF/jsp/"></property>
                <property name="suffix" value=".jsp"></property>
            </bean>
            
            <!-- 配置静态资源映射 -->
            <mvc:resources location="/WEB-INF/css/" mapping="/css/**"/>
            <mvc:resources location="/WEB-INF/js/" mapping="/js/**"/>
            
            <!-- 文件上传处理器 -->
            <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
                 <property name="defaultEncoding" value="utf-8"></property> 
                 <property name="maxInMemorySize" value="1024"></property> 
                 <property name="maxUploadSize" value="1000000"></property> 
            </bean>
4.7web.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"> 
    
    <!-- 上下文参数,告诉spring配置文件路径 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/applicationContext-*.xml</param-value>
    </context-param>
    
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
    <!-- 配置springmvc -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/springmvc.xml</param-value>
        </init-param>
        
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
</web-app>
4.8配置 tomcat 与资源拷贝插件:
        <plugins>
    <!-- 配置Tomcat插件 -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <configuration>
                    <port>8080</port>
                    <path>/</path>
                </configuration>
            </plugin> 
  
        </plugins>
4.9 启动 tomcat 测试框架整合:
image.png

5.添加用户:

5.1Controller:
@Controller
public class PageController {
    @RequestMapping("/{page}")
    public String showPage(@PathVariable String page) {
        return page;
    }
@Controller
@RequestMapping("/user")
public class UserController {
    
    @Autowired
    private UserService userService;
    @RequestMapping("/addUser")
    public String addUser(User user) {
        userService.addUser(user);
        return "redirect:/user/findUser";
    }
5.2JSP:
<body>
    <p><a href="addUser" >添加用户</a><br></p>
    <p><a href="/user/findUser">查询用户</a></p>
</body>
<body>
    <form action="/user/addUser" method="post">
        用户名:<input type="text" name="username"/><br>
        用户年龄:<input type="text" name="userage"/><br>
        <input type="submit" value="提交"/>
    </form>
</body>
<body>
    <h3>添加成功!</h3>
</body>

5.3 Manager-service:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;
    @Override
    public void addUser(User user) {
        userMapper.insertUser(user);
    }
}

5.4 Manager-mapper:

public interface UserMapper {
    /**
     * 添加操作
     * @param user
     */
    void insertUser(User user);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zlw.mapper.UserMapper">
    <insert id="insertUser" parameterType="com.zlw.pojo.User">
        insert into users(username,userage) values(#{username},#{userage})
    </insert>
</mapper>   
5.5 Manager-pojo :
    private int userid;
    private String username;
    private int userage;

6.查询用户:

6.1 Manager-controller :
    @RequestMapping("findUser")
    public String findUser(Model model) {
        List<User> list = userService.findAllUser();
        model.addAttribute("list",list);
        return "showUser";
    }
6.2JSP:
<body>
    <table border="1" align="center">
        <tr>
            <th>ID</th>
            <th>用户名</th>
            <th>用户年龄</th>
            <th>操作</th>
        </tr>
        <c:forEach items="${list }" var="user">
        <tr>
            <td>${user.userid }</td>
            <td>${user.username }</td>
            <td>${user.userage }</td>
            <td>
                <a href="/user/delete?userid=${user.userid }">删除</a>&nbsp;&nbsp;&nbsp;
                <a href="/user/findById?userid=${user.userid }">修改</a>
            </td>
        </tr>
        </c:forEach>
    </table>
    <a href="/index" >返回</a>
</body>
6.3 Manager-service:
    @Override
    public List<User> findAllUser() {
        return userMapper.findAllUser();
    }
6.4 Manager-mapper:
    /**
     * 查询用户
     * @return
     */
    List<User> findAllUser();
    
    <select id="findAllUser" resultType="com.zlw.pojo.User">
        select *from users
    </select>

7.修改和删除:

7.1Controller:
    @RequestMapping("delete")
    public String deleteUser(int userid) {
        userService.deleteUser(userid);
        return "redirect:/user/findUser";
    }
    
    @RequestMapping("/update")
    public String updateUser(User user) {
        userService.updateUser(user);
        return"redirect:/user/findUser";
    }
    
    @RequestMapping("findById")
    public String findById(int userid,HttpServletRequest request) {
        User user = userService.findById(userid);
        request.setAttribute("user", user);
        return "update";
  • JSP:
<body>
    <form action="/user/update" method="post">
        ID:<input type="text" name="userid" disabled="disabled" value="${user.userid }"/><br>
        用户名:<input type="text" value="${user.username }" name="username"/><br>
        用户年龄:<input type="text" value="${user.userage }" name="userage"/><br>
        <input type="submit" value="修改"/>
    </form>
</body>
7.2Service:
    @Override
    public void updateUser(User user) {
        userMapper.updateUser(user);
    }
    @Override
    public void deleteUser(int userid) {
        userMapper.deleteUser(userid);
    }
    @Override
    public User findById(int userid) {
        return userMapper.findById(userid);
    }
7.3mapper:
    /**
     * 删除用户
     * @param userid
     */
    void deleteUser(int userid);
    
    /**
     * 修改用户
     * @param user
     */
    void updateUser(User user);
    
    User findById(int userid);
    <delete id="deleteUser" >
        delete from users where userid=#{0}
    </delete>
    <update id="updateUser" parameterType="com.zlw.pojo.User">
        update users set username=#{username},userage=#{userage} where userid=#{userid}
    </update>
    <select id="findById" resultType="com.zlw.pojo.User">
        select *from users where userid=#{0}
    </select>
  • 实现效果:


    index
    添加
查询 修改

相关文章

  • Java高级技术day74:Maven实战

    一、Maven私服搭建 1.Maven常用命令: (1)install: 本地安装, 包含编译,打包,安装到本地仓...

  • 2018-10-11

    maven实战97~147 java多线程编程核心技术 0~9

  • 记录一些书籍

    JAVA 基础 《Java核心技术·卷1:基础知识》《Java核心技术 卷2:高级特性》《Java8 实战》 并发...

  • IDEA中的Maven实战(转载)

    本文转自微信公众号“Java技术江湖”之IDEA中的Maven实战 Maven下载与配置 下载maven地址:ht...

  • 书单

    技术书单 Java编程思想 深入理解Java虚拟机:JVM高级特性与最佳实践 HotSpot实战 Spring实战...

  • 电子书下载汇总

    《淘宝技术这十年》 《Maven实战》 《Spring Cloud微服务实战》 《编程之美:微软技术面试心得》 《...

  • 开发电子书下载

    《淘宝技术这十年》 《Maven实战》 《Spring Cloud微服务实战》 《编程之美:微软技术面试心得》 《...

  • Java书籍推荐

    《深入理解Java虚拟机:JVM高级特性与最佳实践》 ***** 《HotSpot实战》 《Java并发编程实战》...

  • Java互联网高级架构师高级进阶实战

    下载地址:Java互联网高级架构师高级进阶实战

  • 双11Java程序员书单推荐

    Java 《Java核心技术卷I》 《Java核心技术卷II》 《Java编程思想》 《Java并发编程实战》 《...

网友评论

      本文标题:Java高级技术day74:Maven实战

      本文链接:https://www.haomeiwen.com/subject/amljbctx.html