本篇学习介绍
本项目基于MVC设计,主要对SSM框架的学习及讲解,分别介绍了xml项目编写流程,
已经注解模式编写开发,使用开发工具 IDEA ,MYSQL ,Shiro权限认证,AOP日志,
管理、Maven依赖管理、git版本控制
一、创建一个项目
1、maven配置
在创建项目之前,检查Maven是否配置,具体配置如图所示:
第一步:file-->settings
第二步:设置maven settings 如同所示:
2、创建maven项目
第一步:file --> new --> project 如图所示:
第二步:maven–> Next 如图所示:
第三步:编写项目名称 --> 设置存储路径 --> 编写组织id
第四步:我们创建的是web工程所以要添加web配置
第五步:由于我已经添加了,与图片显示有些区别,选择第一个即可,名称为Applcation web
3、修改pom
第一步:打开pom 添加webmvc依赖如图所示:
spring-webmvc 依赖如下:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
</dependencies>
4、导入资源
前端web页面与静态资源 如图所示:
导入静态资源步骤:
第一步:把静态资源文件解压出来如图所示:
第二步:复制静态资源文件
第三步:粘贴到工作空间去即可
第四步:复制html页面放入到WEB-INF 下的pages文件中,没有pages文件创建一个 如图所示:
二、编写web.xml文件
1、DispatcherServlet
具体编写如图所示:
代码如下:
<!--前端控制配置-->
<servlet>
<!--servlet 名称 随便取名-->
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--加载其他组件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<!--配置加载文件路径 在resources下新建一个文件夹 spring-->
<param-value>classpath:spring/*.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>
2、配置过滤器(filter)
如图所示:
代码如下:
<!--配置过滤器 统一编码-->
<filter>
<filter-name>filter</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>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
三、编写application-mvc.xml
在resource 资源目录下新建一个spring文件夹,在spring文件夹里
创建一个application-mvc.xml 具体如图所示:
1、替换头协议,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
2、开启注解驱动
<!--开启注解驱动-->
<mvc:annotation-driven/>
3、放行静态资源
<!--放行静态资源-->
<mvc:default-servlet-handler/>
4、配置包扫描路径
<!--配置包扫描路径-->
<context:component-scan base-package="com.sys"/>
5、配置视图解析器
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--配置网页路径-->
<property name="prefix" value="/WEB-INF/pages/"/>
<!--配置网页后缀名-->
<property name="suffix" value=".html"/>
</bean>
四、编写通用页面Controller
1、创建com.sys.controller包
2、编写一个IndexController类
具体代码如下:
@RequestMapping("/{page}") 采用的是restful风格编写
package com.sys.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class IndexController {
@RequestMapping("/{page}")
public String doPage(@PathVariable("page") String page){
return page;
}
}
五、IDEA配置tomcat
1、tomcat下载地址
2、tomcat端口配置
打开解压出来的apache-tomcat-8.5.58\conf下的server.xml文件
如图所示:
修改端口号 初始端口为8080 如图所示 :
3、IDEA配置tomcat
点击运行配置 如图所示:
配置tomcat的路径,具体如图所示:
错误警告提示解决方案 点击fix 如图所示:
去掉自动追加的访问路径 如图所示:
4、项目测试
运行运行tomcat ,图中处于运行状态
在浏览器输入访问地址: localhost:8080/login
如图所示:
出现404 原因,是应为依赖没有导入,所以出现404错误
六、解决出现访问404错误
1、打开项目配置
如图所示:
给下面添加依赖 把2区域的依赖全部添加到WEB-INF中如图所示:
添加成功如图所示:
2、重启项目
后运行成功会出现自动打开浏览器访问根地址
访问index页面会出现如图所示 ,说明静态资源配置成功:
七、IDEA 配置Git
1、安装gitee 码云服务
打开IDEA设置,如图所示:
选择Plugins 搜索gitee插件,图中我的已经安装过
2、gitee 具体配置
具体配置如图所示:配置完记得保存
3、git配置
本地需要安装git ,安装git 只需要修改一下安装路径即可,其他选择项直接默认即可。
配置git安装路径如图所示:一般情况系统默认会自动选择路径
4、创建git本地仓库
5、提交与拉取
提交拉取方式二
分别为:拉取,提交到本地仓库,提交到远程仓库
6、提交到本地仓库
7、提交到远程仓库
八、整合Mybatis框架
1、导入依赖
修改pom文件 pom中需要删除jdbc 依赖
<!--连接池依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
<!--数据源核心依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!--mybatis核心依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
2、编写jdbc配置参数
在resource资源文件下新建一个jdbc.properties文件
编写连接参数 1、驱动地址 ,2、连接地址值,3、用户名,4、用户密码,5、最大连接数量
具体内容如下:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db2007?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
jdbc.username=root
jdbc.password=root
jdbc.maxActive=10
3、编写mybatis-config.xml
在资源文件夹的spring文件夹中创建一个mybatis-config.xml文件夹
头文件复制application-mvc.xml中的头文件
4、引入properties配置文件
<!--引入配置资源-->
<context:property-placeholder location="classpath:jdbc.properties"/>
5、配置BruidDataSource对象
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.dirver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
6、配置SqlSessionFactoryBean对象
<!--配置SqlSessionFactoryBean mybatis 会话工厂对象-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--在静态资源文件下建一个mapper文件-->
<property name="mapperLocations" value="classpath:mappers/*.xml" />
</bean>
7、配置mapper接口扫描
<!--配置接口对象扫描-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" >
<!--配置mapper扫描路径-->
<property name="basePackage" value="com.sys.mapper"/>
<!--此属性可以不配置,不配置会一默认名称注入-->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
8、编写一个UserMapper.xml文件
在resource资源文件夹下创建一个mapper文件夹,再在mapper文件夹下创建一个UserMapper.xml文件
替换一下User Mapper.xml 文件的头文件,具体如下:
<?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>
</mapper>
九、创建数据库
1、创建库:
库名为:db2007
CREATE DATABASE db2007 CHARSET utf8;
2、创建表
自定义 ,我以db_user表为例:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for db_user
-- ----------------------------
DROP TABLE IF EXISTS `db_user`;
CREATE TABLE `db_user` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`age` int(10) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
3、插入几条数据
INSERT INTO `db_user` VALUES (1, 'zhangsan', '123456', 16);
INSERT INTO `db_user` VALUES (2, '李四', '123456', 20);
十、编写业务代码
1、Dao层
在mapper 文件夹下建一个UserMapper接口
编写一个查询所有用户的方法,名称自定义 如图所示:
2、映射XML
在资源文件夹resource下中的mappers文件夹中建一个UserMapper.xml 前面建了就无需创建,
打开UserMapper.xml 进行映射关联,代码如下:namespace 是与接口类进行绑定关联,从而产生映射关系
<mapper namespace="com.sys.mapper.UserMapper">
3、编写查询SQL
代码如下:注意:
查询语句 select 标签 中ID 名称 必须与UserMapper接口中方法名称保持一致
,这样才能产生方法的映射。resultType:
此属性是返回对象实体类型 ,此出我用的User对象
<select id="findUserAll" resultType="com.sys.entity.User">
SELECT * FROM db_user
</select>
整体代码结构如图所示:
4、编写实体对象
在com.sys包下创建一个entity 包
在entity编写一个实体对象,命名为User
属性名称必须与db_user数据表中字段名称一致
Serializable :
此对象为序列化接口
代码如下:
package com.sys.entity;
import java.io.Serializable;
public class User implements Serializable {
private Integer id;
private String name;
private String password;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
", age=" + age +
'}';
}
}
5、编写业务逻辑层接口
在com.sys下创建一个service包,在此包中创建一个UserService接口
编写一个方法此方法,可以直接从dao层复制过来,也可以自己直接定义名称,没有特殊要求
代码下:
package com.sys.service;
import com.sys.entity.User;
import java.util.List;
public interface UserService {
public List<User> findUserAll();
}
6、编写一个UserService接口实现类
在service下创建一个包,包名为impl ,在impl中创建一个类,命名为UserServiceImpl 实现UserService接口
重写当中的方法,同时注入UserMapper接口
如图所示:
代码如下:
package com.sys.service.impl;
import com.sys.entity.User;
import com.sys.mapper.UserMapper;
import com.sys.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> findUserAll() {
return userMapper.findUserAll();
}
}
7、编写控制层Controller
在controller包中新建一个UserController ,在类上加上@RestController
编写一个访问映射方法,并引入UserService 接口
如图所示:
代码如下:
package com.sys.controller;
import com.sys.entity.User;
import com.sys.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/findUserAll")
public String getUserAll(){
List<User> userAll = userService.findUserAll();
System.out.println(userAll);
return userAll.toString();
}
}
8、测试接口
成功返回数据,OK
十一、总结
注意事项:
每次添加新的jar包依赖需要进入 ,如图所示:
十二、整合jackson
1、添加jar包依赖
<!--序列化jackson依赖-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.2</version>
</dependency>
2、配置json转换器
在application-mvc.xml中配置代码如下:
<!--通过处理器映射DefaultAnnotationHandlerMapping来开启支持@Controller注解-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<!--通过处理器适配器AnnotationMethodHandlerAdapter来开启支持@RequestMapping注解-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<!-- 设置返回字符串编码 -->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name = "supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- json转换器 -->
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>