一、创建项目
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