一 环境准备
软件环境:
1 jdk1.8
JAVA_HOME:是给软件用的,各种启动的软件都会寻找JAVA_HOME的环境变量;
Path:给windows用的;
2 eclipse marS2/neon
解压的无中文路径,无空格的文件夹中;防止读取相对路径时出现乱码
如果当前系统的JAVA_HOME对应版本是支持neon的启动的,那么就可以直接启动eclipse
设置workspace,无中文路径,无空格
3 maven3.5
解压到无中文路径,无空格的文件夹即可(后续会介绍,配置,和使用等)
4 tomcat 9
tomcat7 没有自动处理乱码,tomcat8以上的版本,无需管理乱码(servlet没有验证)
5 mysql5.5
如果是5.5无需变动,如果不是,需要删除重新安装;5.0无法导入5.5备份的数据;
删除:只装过一次5.0,直接删除服务(控制面板的卸载程序)
安装sqlYog,数据库客户端;
二 分析SSM三大框架
Spring框架:工厂类创建对象加在xml的标签创建对象
通过配置文件扫描注解
@Controller 控制层对象
@Service 业务层对象
@Component 普通对象
对象的创建交给Spring
控制反转: 对象我框架包了
java基础复用的方法
方法封装被调用
子继承父类,直接调用
Spring框架节点
Spring管理的所有对象中相互注入使用
@Resource
@Autowired
注入依赖:哪用对象,跟我说,注入就直接用Springmvc处理页面和程序的交互(升级了servlet的使用)前端控制器(springmvc,dispatcherServlet,映射mapping "/")
适配器映射器(handleMapping)(寻找RequestMapping的接收地址)
适配器协调器(handleAdapter):转给handler
处理器(handler): 调用RequestMapping的方法所在类的对象,执行方法,返回
字符串渲染: WEB-INF/views/index.jsp
显式页面想添加数据: Model 模板对象 addAttribute
Springmvc为什么和spring整合?
1 实现代码中的三层结构;controller,service,mapper依赖注入
2 处理持久层困难(spring可以整合mybatis)
Springmvc是怎么整合的?
需要:看到配置文件了
不需要:无缝整合;controller直接注入service使用,形成service调用mapper(前提是spring整合了mybatis),三层项目结构
mybatis:JDBCmybatis功能:
自动封装(提交的参数,返回的结果,无需手动jdbc处理resultSet)
sql语句是通过映射文件xml绑定(bind)接口mapper的同名方法;
配置文件
驼峰命名,分页插件
和spring整合
配置文件(spring_mybatis)
datasource:数据库连接中的参数,url,username,password,数据库连接池
sqlSession:datasource
整合一起使用的SSM框架的配置文件
spring:管理spring容器的配置文件
spring-mvc:springmvc配置文件
mybatis:mybatis持久层配置文件
spring-mybatis:整合spring和mybatis的配置文件
三 将easymall项目与SSM框架整合
3.1框架SSM结构
3.2数据库的设计
创建easymalldb数据库
1 商品相关--t_product
○ 展示全部商品的分页信息
○ 某个商品的信息
○ 后台的商品管理增删改查
商品表格
product_id:商品的id,全局唯一,主键,char,UUID
product_name: 商品的名称,varchar
product_price: 商品价格 double
product_category: 商品类目
product_imgurl: 商品图片的url连接地址
product_num: 商品的库存
product_description: 商品的简介
2 用户相关---t_user
• 登录 (查询单个user)
• 注册 (新增)
• 注册的用户名校验(查询)
用户表格
user_id: 全局唯一的主键,uuid
user_name:用户名称
user_password:密码
user_nickname: 昵称
user_email: 用户邮箱
user_type: 用户类型,于权限有关;
3 购物车相关--t_cart
• 添加购物车
• 查询当前用户的所有购物车商品
• 修改购物车数量
• 删除购物车
购物车表格
id:购物车id int
user_id:当前商品属于的用户id
product_id:当前商品id
product_image:商品的图片
product_name:商品名称
product_price:商品价钱
num:购物车中商品数量
user_id
product_id
复合主键;通过2个字段的同时使用,可以唯一的定位
到一条购物车商品数据;
4 订单相关--t_order和t_order_item(主从表的关系,order为主,item为从,1对多的关系)
• 我的全部订单
• 新增订单
• 删除订单
主表t_order
order_id: 主键,也是t_order_item关联的键
order_money: 订单支付金额
order_receiverinfo: 收信人信息
order_paystate: 支付状态
order_time:创建时间
user_id: 用户关联的
表格代码 可以直接通过sqlyong导入数据库(想要数据库设计sql代码留言私发,这里不支持上传)
四 maven工具管理项目框架
4.1web项目的管理方式的弊端:myeclipse生成一个web应用的项目结构,servlet直接开发代码
如果用到三大框架的内容:
1 jar的管理不规范把jar包先找到,完全是凭借测试和经验完成的;
2 直接整合外界的第三方tomcat进行war包的运行
3 项目管理的结构
src:代码
webroot:web应用相关
ssm框架的配置文件????
src管理配置文件;
4.2 maven介绍
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件是一个软件,并且可以实现各种项目结构的管理功能--工具;
快速搭建项目(java普通工程,web应用工程)
可以通过引入的各种插件完成丰富的外接功能(例如maven的tomcat插件可以直接在项目内部启动插件的tomcat运行web工程)
对工程的管理结构非常严格:
java工程:
src/main/java:编写代码的文件夹
src/main/resouces:配置文件(ssm框架,properties等)
src/test/java:测试代码,在打包时不会进行包装
pom.xml:通过一小段描述来管理项目(管理依赖的jar包,是通过dependency完成)
web应用工程:
和java工程一样:
main的文件夹下,有webapp的管理,web应用所在的路径;
有了maven就可以方便快速的搭建我们想要的各种工程结构,从而通过对pom文件中描述信息的修改(标签),完成项目的各种管理功能;
五 maven的安装和环境配置
六 easymall工程的搭建
1 选择骨架(webapp)2 web的应用结构
src/main/java:当前easymall的ssm框架的所有运行代码都在这个文件夹
src/main/resources: 存放配置文件的位置
src/test/java:测试内容
3 pom的依赖
maven主要就是管理jar包的依赖,当前SSM框架需要依赖的东西非常多;
spring,springmvc,mybatis,一些工具的依赖;
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
com.jt
easymall-ssm
war
0.0.1-SNAPSHOT
easymall-ssm Maven Webapp
http://maven.apache.org
4.3.7.RELEASE
3.4.5
1.7.12
1.2.17
3.4.2
0.9.1
org.apache.commons
commons-lang3
3.3.2
org.springframework
spring-context
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
com.fasterxml.jackson.core
jackson-core
2.8.1
com.fasterxml.jackson.core
jackson-databind
2.8.1
javax.servlet
javax.servlet-api
3.1.0
provided
org.springframework
spring-tx
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-aop
${spring.version}
org.aspectj
aspectjweaver
1.8.7
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
1.3.1
mysql
mysql-connector-java
5.0.8
junit
junit
4.12
com.alibaba
druid
1.0.14
com.alibaba
fastjson
1.2.7
commons-fileupload
commons-fileupload
1.3.2
jstl
jstl
1.2
org.apache.poi
poi
3.13
com.github.pagehelper
pagehelper
${pagehelper.version}
com.github.jsqlparser
jsqlparser
${jsqlparser.version}
org.apache.shiro
shiro-all
1.2.3
maven-compiler-plugin
1.8
1.8
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
80
/
4 拷贝静态资源
easymall-ssm的静态文件拷贝到当前工程中,从navigator保存
这里要关闭eclipse自带的web前端的各种校验
(需要静态资源留言)
5 准备ssm框架的配置文件
spring本身的配置文件
spring整合mybatis配置文件
springmvc配置文件
mybatis配置文件
5.1 web.xml
tomcat容器启动时会加载当前工程的web.xml文件,会根据web.xml文件中的配置,设置当前加载各种其他资源,listener,初始化参数,配置spring和springmvc配置文件
1
2 contextConfigLocation
3
4 classpath:spring/spring*.xml;5
6
7
8 指定当前tomcat启动时需要加载的配置文件,classpath=target/classes;9 成功加载配置文件之后,如果有依赖的jar包,就可以正确启动spring springmvc容器了;10
11
12 springmvc
13 org.springframework.web.servlet.DispatcherServlet
14
15 contextConfigLocation
16 classpath:spring/spring_mvc.xml
17
18 1
19
20
21 springmvc
22 /
23
创建springmvc中的dispatcherServlet,实现读取springmvc的配置文件,当前的servlet就会提供给springmvc的逻辑使用;
当前dispatcherServlet接收所有的请求地址 "/"
web.xml是通知tomcat在启动时加载所有的需要配置的文件;SSM框架
5.2 spring.xml
1
3
4
5
6
7
8
9
10 classpath:mysql.properties
11
12
13
14
15
利用加载的spring容器,创建一个PropertyPlaceHolder的对象,读取mysql.properties的数据(key-value键值对),其中的数据就是配置加载的datasource的内容,在配置的指定上进行解耦,可以修改properties变动连接数据库的信息.
扫描包的路径,所有当前工程已com.jt开始的包中只要存在注解都会被spring容器扫描到,像@Component,@Service等就会自动创建对象
5.3 spring_mvc.xml
保持当前jsp等页面资源加载成功js,css等内容
springmvc扫描的spring创建的对象,完成和spring的整合;requestMapping映射就可以加载所有com.jt.easymall.controller的类中;
启动responseBody requestMapping requestParam requestBody
页面渲染时拼接的前后缀名称,/WEB-INF/views/保存着所有页面;
MultipartFile是springmvc的包中的类,处理页面上传的文件;
大小定义,和懒加载,接收的实际上是流对象;
5.4 spring-mybatis整合
1
2
3 class="com.alibaba.druid.pool.DruidDataSource"
4 init-method="init"
5 destroy-method="close">
6
7
8 ${jdbc_driverClass}
9 spring启动时,PropertiesPlaceHolder加载了mysql.properties文件 定义的jdbc_driverClass10
11
12 ${jdbc_url}
13
14
15 ${jdbc_userName}
16
17
18 ${jdbc_userPassword}
19
20
21
22 5
23
24
25
26 2
27
28
29
30 6000
31
32
33
34 2
35
36
37
38 2
39
40
41
42 true
43
44
45
46 180
47
48
49
50 clientEncoding=UTF-8
51
52
53
54
55
56
57 class="org.mybatis.spring.SqlSessionFactoryBean"
58 p:dataSource-ref="alibabaDataSource"//绑定的数据源59 p:mapperLocations="classpath:mapper/*.xml">//映射文件mapper.xml的位置 src/main/resources60
61 //指向mybatis的内容配置文件62
63 //持久层封装对象时,无需指定类的全路径名称 resultType="Product"64
spring管理的整合持久层对象sqlSession;没有这个对象动态代理无法完成接口类方法的实现和xml映射文件中sql语句的绑定关系
5.5 mybatis.xml
到此SSM项目框架搭建成功(搭建过程中可能会出现不同的问题,一些常见的问题已经整理好 请查看https://www.cnblogs.com/nanlinghan/p/9973495.html解决)
七 测试工程(easymall首页显示)
逻辑:
首页index.jsp存储在 WEB-INF/views/index.jsp
访问url:localhost:port/直接访问
代码逻辑
编写在一个被spring和springmvc扫描到的controller里
1 @RequestMapping("/")2 publicString goIndex(){3 return "index";}4
5 packagecom.jt.easymall.controller;6 @Controller7 public classIndexController {8
9 //添加首页的映射地址"/"
10 @RequestMapping("/")11 publicString goIndex(){12 return "index";//WEB-INF/views/index.jsp
13 }}
Maven的tomcat插件
maven内部可以引入tomcat的插件,执行当前工程的启动功能,无需外部的tomcat容器来加载当前工程的war包执行了;
pom中通过描述信息,引入maven的tomcat插件
配置启动maven工程的debug模式
完成配置之后,可以点击debug测试当前工程的启动