Maven+SSM整合

本篇博客将讲述Idea中如何整合Maven+SSM

第一步:配置好项目的环境

1.创建一个普通的maven项目

在这里插入图片描述

2.将此项目转换为web项目

1.在project Structure中的Facets中勾选Web模板

在这里插入图片描述

​ 2.还需要修改一下里面的目录格式,看下面的两张图片:

在这里插入图片描述

在这里插入图片描述

修改完毕后点击下面的OK,项目最终呈现出来的目录结构如下:

在这里插入图片描述

3.Tomcat环境配置

1.先点击Run-> Edit Configurations…

在这里插入图片描述

2.在勾选Tomcat模块,这里我选用本机的Tomcat

在这里插入图片描述

然后配置一下Tomcat的属性信息。

在这里插入图片描述

接着记得把项目打成war包。

在这里插入图片描述

如果是非maven的web项目还需要以下操作,而由于我们本篇用的Maven进行开发,所以下面的操作可以忽略掉。

在这里插入图片描述

4. 引入项目需要相关jar

在pom.xml中加入下面的依赖:

<dependencies>
    <!--Servlet API-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>3.0-alpha-1</version>
    </dependency>

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

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

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

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>5.0.3.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.5</version>
    </dependency>

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.1</version>
    </dependency>

    <!--c3p0-->
    <dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.1.2</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.45</version>
    </dependency>

    <!--JSTL-->
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1</version>
    </dependency>

    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.3</version>
    </dependency>

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.7</version>
    </dependency>
</dependencies>

第二步:配置文件的书写

1.Web.xml的相关配置

在Web.xml中配置下面的监听器和Servelt拦截器,使项目支持SpringWeb 和 SpringMVC的开发,并指定了Spring,SpringMVC配置文件(applicationContext.xml,applicationContext-controller.xml)的地址。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!--配置Springweb支持的监听器-->
    <context-param>
        <!--监听器的父类ContextLoader中有一个属性contextConfigLocation,该属性保存着容器配置文件applicationContext.xml的位置-->
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <!--配置Spring-web.jar提供的监听器,此监听器可以在服务器启动时 初始化IOC容器
        初始化Ioc容器(applicationContext.xml),必须告诉监听器此容器的位置-->
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!--项目整合springmvc-->
    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext-controller.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--上面param-value 当xml 命名为servletname的值-servlet.xml  并且放在web-Inf 目录下可以不用配置 -->
    <!--拦截一切请求,给DispatcherServlet 让它自己去找@requestMapping-->
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>
2.配置数据库信息文件,db.properties,注意存放的目录在resources下面

在这里插入图片描述

由于Spring参与了整合,MyBatis的配置完全可以交由Spring进行处理,核心思想就是,在Spring的IOC容器中将MyBatis核心sqlSessionFactory配置进去

3.applicationContext.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">
	<!--使数据库信息文件被识别-->
    <context:property-placeholder location="classpath:db.properties"/>

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${mysql.driver}"></property>
        <property name="jdbcUrl" value="${mysql.url}"></property>
        <property name="user" value="${mysql.username}"></property>
        <property name="password" value="${mysql.password}"></property>
    </bean>

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!--加载mybatis配置文件-->
<!--        <property name="configLocation" value="classpath:conf.xml"></property>-->
        <!--加载mapper.xml路径-->
        <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
    </bean>
        
        
	<!--批量产生mapper-->
    <bean id="mappers" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
        <property name="basePackage" value="mapper"></property>
        <!--上面的basePackage所在的property的作用 :
            将mapper包中,所有的接口 产生与之对应的动态代理对象
            (对象名就是首字母小写的接口名):比如我现在的包产生的对象是studentMapper
        -->
    </bean>

    <bean id="loginService" class="service.impl.LoginServiceImpl">
        <property name="loginMapper" ref="loginMapper"></property>
    </bean>

</beans>
4.applicationContext-controller.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: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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">



    <context:component-scan base-package="controller"></context:component-scan>


    <!--配置视图解析器() 该解析器的作用是将东西渲染成success.jsp页面-->
    <!--如果发现jsp中包含了jstl语言,则自动转为JstlView-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/view/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!--mvc标配-->
    <mvc:annotation-driven></mvc:annotation-driven>

</beans>

第三步:写一个具体的项目

就写个登录校验的小项目吧

1.数据库建立下面的表:

在这里插入图片描述

2.实体类
package entity;

public class Login {
    private String yy;
    private String mm;

    public Login() {
    }

    public Login(String yy, String mm) {
        this.yy = yy;
        this.mm = mm;
    }

    public String getYy() {
        return yy;
    }

    public void setYy(String yy) {
        this.yy = yy;
    }

    public String getMm() {
        return mm;
    }

    public void setMm(String mm) {
        this.mm = mm;
    }
}
3.前端页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>index</title>
</head>
<body>

  <form action="check" method="post">
      用户名:<input type="text" name="yy"/><br/>
      密  码:<input type="text" name="mm"/><br/>
      <input type="submit" value="登录"/>
  </form>

</body>
</html>
4.controller:
package controller;

import entity.Login;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import service.LoginService;

import java.util.List;

@SessionAttributes(value = "logins")
@Controller
public class Handler {

    @Autowired
    LoginService loginService;

    @PostMapping("check")
    public String checking(Login login){
        int n = loginService.checking(login);
        if(n>0){
            return "success";
        }else {
            return "failure";
        }
    }

    @GetMapping("all")
    public String queryAll(Model model){
        List<Login> logins = loginService.queryAll();
        model.addAttribute("logins",logins);
        return "lu";
    }

}
5.service:(接口这里我就省略了)
package service.impl;

import entity.Login;
import mapper.LoginMapper;
import org.springframework.beans.factory.annotation.Autowired;
import service.LoginService;

import java.util.List;

public class LoginServiceImpl implements LoginService {

    LoginMapper loginMapper;

    public LoginMapper getLoginMapper() {
        return loginMapper;
    }

    public void setLoginMapper(LoginMapper loginMapper) {
        this.loginMapper = loginMapper;
    }

    public int checking(Login login) {
        return loginMapper.checking(login);
    }

    public List<Login> queryAll() {
        return loginMapper.queryAll();
    }

}
mapper:
package mapper;

import entity.Login;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;


public interface LoginMapper {

//    @Select("select count(*) from login where yy=#{yy} and mm=#{mm}")
    int checking(Login login);

//    @Select("select * from login")
    List<Login> queryAll();
}
6.写mapper.xml,有下面两种位置可书写

由于maven项目默认要求配置文件都要放在resources中,没有放入resources目录下的配置文件都不会识别

  • 将配置文件写在resources下面的mapper文件夹中(本文就是这种方式)
<?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">
<!--namespace:该mapper.xml映射文件的 唯一标识符-->
<mapper namespace="mapper.LoginMapper">

   <select id="checking" parameterType="entity.Login" resultType="int">
       select count(*) from login where yy = #{yy} and mm = #{mm}
   </select>
    
   <select id="queryAll"  resultType="entity.Login">
       select * from login
   </select>

</mapper>
  • 如果想放在java目录下依旧能识别,只需在pom.xml中加入下面的东西

      <build>
        	<resources> 
    	  	<resource> 
    	  	<directory>src/main/java</directory> 
    	  	<includes> 
    	  	<include>**/*.xml</include> 
    	  	</includes> 
    	  	<filtering>false</filtering>
    		</resource> 
    		<resource>
    		<directory>src/main/resources</directory>
    		</resource>
    	</resources>
     </build>
    

最后项目的总体目录如下:

在这里插入图片描述

第四步,运行该项目

效果图如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

键盘歌唱家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值