IDEA ===> ssm框架(spring , springMVC , myBatis) + maven 的 web项目 的 总结

一、创建项目

1.CTRL + N 新建一个maven项目 ,点击next
在这里插入图片描述
2.填写好自己的项目名和选择好要存放项目路径
在这里插入图片描述
3.如图右侧打上勾:
i. 第一栏选择本机Maven安装目录下config文件夹下的setting.xml文件
ii. 第二栏选择自己建的maven本地仓库文件夹
点击Finish!
在这里插入图片描述
4.由于之前选的是web项目,然后idea自动生成如下目录结构
在这里插入图片描述

二、编写pom.xml文件

引入相关依赖,让maven自动去下载相关jar包
1.刚创建的项目生成的pom文件,删除了maven的单元测试类junit,先看一下整体架构、、三个主要标签

<?xml version="1.0" encoding="UTF-8"?>

<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>org.example</groupId>
  <artifactId>Test</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <!--项目的名称, Maven产生的文档用-->
  <name>Test Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <!--该项目使用的问题管理系统的URL-->
  <url>http://www.example.com</url>

  <!--项目开发者属性,如即时消息如何处理等-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <!--项目引入插件所需要的额外依赖-->
  <dependencies>
  </dependencies>

  <!--构建项目需要的信息-->
  <build>
  </build>
</project>

2.引入如下依赖,也就是相当于eclipse中的导包操作,只不过此处maven会自动去setting.xml中设置的中央仓库下载相关组件包

 <properties>
      <!-- 设置项目编码编码 -->
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <!-- spring版本号 -->
      <spring.version>4.3.5.RELEASE</spring.version>
      <!-- mybatis版本号 -->
      <mybatis.version>3.4.1</mybatis.version>
      <!-- jstl版本号 -->
      <jstl.version>1.2</jstl.version>
    </properties>

    <dependencies>
      <!-- java ee -->
      <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
      </dependency>

      <!-- 单元测试 -->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
      </dependency>

      <!-- 实现slf4j接口并整合 -->
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.2</version>
      </dependency>

      <!-- JSON -->
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.8.7</version>
      </dependency>

      <!-- 数据库 -->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.41</version>
        <scope>runtime</scope>
      </dependency>

      <!-- 数据库连接池 -->
      <dependency>
        <groupId>com.mchange</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.5.2</version>
      </dependency>

      <!-- MyBatis -->
      <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis.version}</version>
      </dependency>

      <!-- mybatis/spring整合包 -->
      <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.1</version>
      </dependency>

      <!-- Spring -->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</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-context</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-tx</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</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-test</artifactId>
        <version>${spring.version}</version>
      </dependency>

      <!-- JSP相关 -->
      <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>${jstl.version}</version>
      </dependency>

    </dependencies>

    <build>
      <finalName>ssm</finalName>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <!-- 设置JDK版本 -->
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>
      </plugins>
    </build>

3.相关依赖copy进去后别忘了刷新项目,刷新后spring和springmvc的jar包都有了,那就可以干上一干了
在这里插入图片描述

三、创建各层目录(servlet,service,dao)

controller:控制器,处理前端发来的请求(POST,GET等),转到service中处理
service:业务逻辑处理层
entity:实体类,类名和数据库表名一致,属性值为private且和数据库列名一致
mapper:接口和mapper.xml的存放,用于对接数据库
db.properties是配置数据库的文件(user,password,driver,url)

—————————————分锅线—————————————————

For example:三层架构,建立起相关文件
注意:resources就是资源文件夹最后编译的时候会一起编译到target里,可以通过classloader加载访问

在这里插入图片描述

大体流程: 控制器(controller)接到前端发来的请求进行请求过滤转发给service层进行业务逻辑处理,然后service层和dao层(mapper层)进行交流,dao层和数据库打交道,然后按规定路径返回给前台。

各页详情:

1.TestController

package org.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {

    @RequestMapping("test")
    @ResponseBody
    public String Request() {
        System.out.println("success!!!");
        return "";
    }
}

2.Student.java

package org.example.entity;

public class Student {
    private int stuAge;
    private String StuName;
    private int stuNo;

    public int getStuAge() { return stuAge; }

    public void setStuAge(int stuAge) { this.stuAge = stuAge; }

    public String getStuName() { return StuName; }

    public void setStuName(String stuName) { StuName = stuName; }

    public int getStuNo() { return stuNo; }

    public void setStuNo(int stuNo) { this.stuNo = stuNo; }
}

3.StudenMapper 接口

package org.example.mapper;

import org.entity.Student;

public interface StudentMapper {
    public void addStudent(Student student);
    Student queryStudentByStuno(int stuno);
}

4.StudentMapper.xml (写sql语句地方)

<?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.StudentMapper">
    <select id="queryStudentByStuno" 	parameterType="int"  	resultType="org.example.entity.Student"  >
		select * from student where stuage = #{stuAge}
	</select>

    <insert id="addStudent" parameterType="org.example.entity.Student" >
		insert into student(stuno,stuname,stuage) values(#{stuNo},#{stuName},#{stuAge})
	</insert>
</mapper>

4.StudentServiceImpl.java

package org.example.service.impl;

import org.example.entity.Student;
import org.example.mapper.StudentMapper;
import org.example.service.StudentService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class StudentServiceImpl implements StudentService {
    //service依赖于dao(mapper)
    @Resource
    private StudentMapper studentMapper ;

    public void setStudentMapper(StudentMapper studentMapper) {
        this.studentMapper = studentMapper;
    }

    @Override
    public Student queryStudentByNo(int stuNo) {
        return  studentMapper.queryStudentByStuno(stuNo) ;
    }

    @Override
    public void addStudent(Student student) {
        studentMapper.addStudent(student);
    }

}


5,StudentService 接口

package org.example.service;

import org.entity.Student;

public interface StudentService {
		Student queryStudentByNo(int stuAge);
		void addStudent(Student student);
}

6.db.properties

driver=com.mysql.jdbc.Driver      驱动类根据jar包版本修改
url=jdbc:mysql://localhost:3306/+数据库名
username=数据库用户名
password=数据库密码

7.logging.properties (对!目前就一句话)

handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

8.index.jsp

<html>
<body>
<h2>Hello Bro!</h2>

<a href="Page/result.jsp"> jump</a>

</body>
</html>

9.result.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>^_^</title>
</head>
<body>
COOL!
</body>
</html>

四、配置spring.xml 和 springmvc.xml

spring.xml :包含spring的配置,和mybatis的配置
1、spring的配置:控制反转( ioc ),依赖注入( di )
2、mybatis的配置:引入数据源,将sqlSessionFactory创建并交给spring管理

springmvc.xml:只包括springmvc的配置
1.扫描器( 使用注解 )
2.视图转换器( 关于前端页面的 )

1、spring.xml 的配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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-3.0.xsd    ">


    <!-- 1,扫描装配bean -->
    <context:component-scan base-package="org.example.*"></context:component-scan>


    <!-- 加载db.properties文件 -->
    <bean  id="config" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
        <property name="locations">
            <array>
                <value>classpath:db.properties</value>
            </array>
        </property>

    </bean>
    <!-- 配置配置数据库信息(替代mybatis的配置文件conf.xml) -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${driver}"></property>
        <property name="url" value="${url}"></property>
        <property name="username" value="${username}"></property>
        <property name="password" value="${password}"></property>
    </bean>

    <!-- conf.xml :  数据源,mapper.xml -->
    <!-- 配置MyBatis需要的核心类:SqlSessionFactory -->
    <!-- 在SpringIoc容器中 创建MyBatis的核心类 SqlSesionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!-- 加载mapper.xml路径 -->
        <property name="mapperLocations" value="classpath:mappers/StudentMapper.xml"></property>
    </bean>

    <!-- 将MyBatis的SqlSessionFactory 交给Spring -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
        <property name="basePackage" value="org.example.mapper"></property>
        <!--上面basePackage所在的property的作用:
        将mapper包中,所有的接口   产生与之对应的 动态代理对象
        (对象名 就是 首字母小写的接口名) :studentMapper.querystudentBYNO();
          -->
    </bean>
</beans>

2、springMVC.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
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--   基础配置  -->
    <mvc:annotation-driven/>
     <!--   处理@RequestMapping这个注解  -->
    <mvc:default-servlet-handler/>
    
    <!-- 扫描controller下的组件 -->
    <context:component-scan base-package="org.controller"/>
    <!-- 视图解析器 -->
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/Page/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

五、添加Tomcat

1.点击菜单栏Run,选择Edit Configuration…
在这里插入图片描述
2.点击弹出框的右上角的加号,选择Tomcat Server中的Local
在这里插入图片描述

3.第一个框框,取个名字一般是Tomcat+版本号,注意url的端口号和下方的端口号保持一致哦
在这里插入图片描述

Tip:点击Fix,选择第一个就好,此处的名字和前一页url中的名字要一致哦
在这里插入图片描述

4.确认无误后点击Apply——>点击OK,然后启动

浏览器自动弹出:
在这里插入图片描述

持续更新中…
Firest:2020/08/28

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值