在Intellij idea中用maven创建ssm项目

SSM框架整合实战
本文详细介绍如何使用Spring、SpringMVC及MyBatis(简称SSM)进行项目整合,包括搭建开发环境、配置核心文件、实现数据库交互等功能,并通过具体案例验证了整合效果。

第一步:创建maven项目
1.1 打开idea,选择创建项目:Create New Project
这里写图片描述

1.2 在打开的对话框中选中maven,配置jdk、maven home,选择web app骨架等。
这里写图片描述

1.3 填写项目的 g、a、v 即:包名、模块名、版本号。
这里写图片描述

1.4 为了加快maven的构建,添加本地的catelog=local

这里写图片描述

1.5 填写项目的名称

这里写图片描述

1.6 在新建的maven项目中,修改web.xml信息 改为最新的版本

这里写图片描述

<web-app 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"
         version="3.0"
         metadata-complete="true">

第二步:配置pom.xml文件,导入依赖的jar包。

<dependencies>
    <!--配置依赖 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
      <scope>test</scope>
    </dependency>
    <!--一、配置数据库相关 -->
    <!--1.1配置mysql驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.32</version>
      <scope>runtime</scope>
    </dependency>
    <!--1.2 配置c3p0数据库连接池 -->
    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
    </dependency>
    <!-- 二、配置mybatis相关配置-->
    <!-- 2.1配置mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.2.8</version>
    </dependency>
    <!--2.2 配置mybatis 与spring的整合包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.2.2</version>
    </dependency>

    <!--三、配置spring相关 -->
    <!--3.1 spring core -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.1.3.RELEASE</version>
    </dependency>
    <!--3.2 spring ioc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.1.3.RELEASE</version>
    </dependency>


    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.1.3.RELEASE</version>
    </dependency>

    <!--3.3 spring jdbc -->

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.1.3.RELEASE</version>
    </dependency>

    <!-- 3.4 spring 事务-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>4.1.3.RELEASE</version>
    </dependency>

    <!--spring web -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.1.3.RELEASE</version>
    </dependency>

    <!--spring-mvc -->

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.1.3.RELEASE</version>
    </dependency>

    <!--spring-test-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>4.1.3.RELEASE</version>
      <scope>test</scope>
    </dependency>

    <!-- spring-jackson -->

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.8.3</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.4.2</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.4.0</version>
    </dependency>
    <!--文件上传相关 -->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>

    <!--jsp 相关 -->

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>3.0</version>
    </dependency>

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
    </dependency>

    <dependency>
      <groupId>javax.servlet.jsp.jstl</groupId>
      <artifactId>jstl-api</artifactId>
      <version>1.2</version>
    </dependency>

    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>
    <!--日志相关 -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.2</version>
    </dependency>

    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>1.1.7</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.1.7</version>
    </dependency>

  </dependencies>

第三步:ssm框架的整合。
版本号:
mybatis :3.2.8
spring:4.2.X

3.1 配置mybatis的核心配置文件。

在src/main/resource/
创建mybatis文件夹,创建mybatis-config.xml配置文件
这里写图片描述

内容如下:

<?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>
    <!--配置mybatis的一些设置 -->
    <settings>
        <!--支持主键自增 -->
        <setting name="useGeneratedKeys" value="true"/>
        <!--支持驼峰转换 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!-- 设置列明自定义-->
        <setting name="useColumnLabel" value="true"/>
    </settings>
    <!-- 类型映射-->
    <typeAliases>
        <package name="com.jlju.docmanager.bean"/>
    </typeAliases>

</configuration>

3.2 配置数据库连接信息:jdbc.properties

driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/docmanager?useUnicode=true&characterEncoding=utf8
user=root
password=x5

3.3 spring 与mybatis整合:spring-jdbc.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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
       <!-- 加载jdbc配置文件-->
       <context:property-placeholder location="classpath:jdbc.properties"/>
       <!-- 配置数据源-->
       <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
               <!--数据库连接属性 -->
              <property name="driverClass" value="${driverClass}"/>
              <property name="jdbcUrl" value="${jdbcUrl}"/>
              <property name="user" value="${user}"/>
              <property name="password" value="${password}"/>

              <!-- 数据源连接配置-->
              <property name="autoCommitOnClose" value="false"/>
              <property name="checkoutTimeout" value="3000"/>
              <property name="acquireRetryAttempts" value="3"/>
              <property name="maxPoolSize" value="5"/>
              <property name="minPoolSize" value="3"/>
       </bean>

       <!--配置mybatis -->
       <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
              <!-- 配置数据源-->
              <property name="dataSource" ref="dataSource"/>
              <!--配置属性文件位置 -->
              <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
              <!-- 配置mapper文件位置-->
              <property name="mapperLocations" value="classpath:mybatis/mapper/*.xml"/>
       </bean>

       <!-- 配置dao接口自动生成-->

       <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
              <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
              <property name="basePackage" value="com.jlju.docmanager.dao"/>
       </bean>
</beans>

3.3 事务配置 spring-tx.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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
       <!-- 配置事务-->
       <!-- 配置包扫描-->
       <context:component-scan base-package="com.jlju.docmanager.service.impl"/>

       <!--配置事务管理器 -->
       <bean id="transactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
              <!-- 配置要引用的datasource-->
              <property name="dataSource" ref="dataSource"/>
       </bean>
        <!--启动注解式事务管理器 -->
       <tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

3.4 spring mvc配置:srping-mvc.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:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       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/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!-- 配置mvc-->
    <!-- 配置注解-->
    <mvc:annotation-driven/>
    <!--配置包扫描 -->
    <context:component-scan base-package="com.jlju.docmanager.controller"/>


    <!-- 配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--配置静态资源解析器 -->
    <mvc:default-servlet-handler/>
</beans>

3.5 spring-mvc 前端控制器配置:web.xml中添加配置

<web-app 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"
         version="3.0"
         metadata-complete="true">


  <display-name>DocManager</display-name>
  <!-- 配置servlet 前端控制器-->

    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/spring-*.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

3.6 事务测试

 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value = {"classpath:spring/spring-dao.xml","classpath:spring/spring-tx.xml"})
public class UsersSerivceTest {

    @Autowired
    private UsersSerivce us;
    @Test
    public void testQueryAllUsers() throws Exception {

        List<Users> userses = us.queryAllUsers();
        System.out.println(userses.size());
    }

    @Test
    public void testInsertUsers() throws Exception {
        Users u = new Users();
        u.setPassword("123");
        u.setRealName("丁春秋");
        u.setUsername("1235");
         us.insertUsers(u);
        System.out.println();

    }
}
RocketMQ 中,**分片(Sharding)** 是实现高并发、高可用和可展性的重要机制之一。其核心作用是将消息的存储和消费进行分布式管理,以支持大规模消息处理场景。 ### 分片的作用 1. **提升系统吞吐量** 通过将一个 Topic 的消息分布到多个 Broker 上,每个 Broker 负责一部分消息的存储和转发,从而实现横向展,提高整体系统的吞吐能力。 2. **支持负载均衡** 在消息生产与消费过程中,分片机制使得消息可以均匀分布在多个 Broker 上,生产者和消费者可以并行地处理多个分片,实现负载均衡[^5]。 3. **增强系统可用性与容错性** 每个分片可以配置主从结构(Master-Slave),实现数据复制与故障切换,确保在某个 Broker 故障时仍能保证消息的高可用[^4]。 ### 分片的工作机制 1. **Topic 与 Message Queue 的关系** 在 RocketMQ 中,每个 Topic 会被划分为多个 **Message Queue**(也称为队列或分片),这些队列分布在不同的 Broker 上。例如,一个 Topic 可能有 4 个队列,分别分布在两个 Broker 上,每个 Broker 管理两个队列。 2. **生产者的分片选择** 当生产者发送消息时,会根据一定的策略(如轮询、哈希等)选择一个合适的 Message Queue 进行投递。这一过程称为**生产者负载均衡**。生产者会定期从 NameServer 获取 Topic 的队列分布信息,以保证选择的准确性[^5]。 3. **消费者的分片分配** 消费者组(ConsumerGroup)中的每个消费者实例会负责一部分 Message Queue 的消费任务。这一过程称为**消费者负载均衡**,由 Broker 协调完成,确保每个队列只被一个消费者实例消费,从而避免重复消费和竞争问题。 4. **消息的物理存储** RocketMQ 将所有消息写入统一的 **CommitLog** 文件中,然后通过 **ConsumeQueue** 文件记录每个 Topic 的分片索引信息,实现逻辑分片与物理存储的分离。这种机制保证了写入的高效性和读取的灵活性[^4]。 ### 分片配置与管理 - **创建 Topic 时指定分片数量** 在创建 Topic 时,可以通过命令行或配置文件指定其分片数量(即 Message Queue 数量)。 - **动态容** 可以在不中断服务的情况下,向集群中新增 Broker,并为已有 Topic 增加分片,以应对不断增长的消息量。 ### 示例代码:查看 Topic 分片信息 ```bash # 查看 Topic 的队列分布信息 mqadmin topicRoute -n localhost:9876 -t MyTopic ``` 该命令将输出 Topic `MyTopic` 的路由信息,包括各个 Message Queue 所在的 Broker 地址。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值