CMS管理系统知识点总结
CMS是"Content Management System"的缩写,意为"内容管理系统",一个管理内容的后台管理系统
- 后端框架:SSM
- 前端框架:jQuery、Bootstrap、GridManager表格插件
- 数据库:Mysql
- 开发工具:Eclipse
1.搭建SSM环境
(1)配置web.xml
- 配置监听器:加载spring的配置文件【applicationContext.xml】
- 配置前端控制器:并加载SpringMvc的配置文件【applicationContext-mvc.xml】
- 配置过滤器:解决post请求的中文参数乱码问题
(2)新建配置文件夹resources
- spring的核心配置文件【applicationContext.xml】
- spring-MVC的核心配置文件 【applicationContext-mvc.xml】
- 连接数据库的JDBC配置文件
- 日志文件
(3)测试
- spring测试
1.创建测试类【路径:src/main/java】SpringTest
2.在applicationContext中管理当前系统时间
3.在SpringTest中测试出当前系统时间 - web测试
1.发布项目,测试网页访问
2.新建数据库cms,mapper接口中添加查询方法,编写mapper文件【ArticleMapper.xml】
3.接口IService中添加查询方法,实现类注入mapper对象
4.编写controller层,注入service对象,调用查询查询方法。
2.配置页面跳转
(1).跳转到后台首页【WEB-INF/view/index.jsp】
(2).跳转到文章首页【WEB-INF/view/article/article.jsp】
3.关于JSTL、EL、和OGNL表达式的区别
(1)什么是EL表达式:
后台存入数据,在前台可以读出;
存:作用域对象的属性;取:根据属性的名称取。
关于四大作用域对象的作用:(保存数据,获取数据,共享数据)
1.PageCongtext pageCongtext : 当前页面
2.HttpServletRequest request : 一次请求(转发请求可以共享数据)
3.HttpSession session :一次会话(不关闭浏览器可以共享数据)
4.ServletContext application :一次应用(不关闭tomcat可以共享数据
下面回到关于EL表达式的使用:
后台存值,前台取值:
(2)JSTL
作用:消除JSP中的JAVA代码
注意:使用前需要引入JSTL标签库 <%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
常见的JSTL标签:
①forEach标签
②If标签
③choose标签
(3) 动态SQL里面的$、#
先了解什么是Mybatis
MyBatis是一个ORM的数据库持久化框架,是对JDBC代码的封装。
持久化:内存中的数据模型转换为存储模型,即把内存中的数据保存到数据库中。
ORM:对象关系映射(Object Relational Mapping,简称ORM):是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
ORM框架操作数据库关系方式有很多种,常用的有两种:
第一种:Sql操作方式(半映射或半自动):把SQL配置到配置文件中,通过不同SQL中完成对象实体和数据库关系相互转换的操作。
第二种:完整映射:直接使用对象实体和数据库关系进行映射,不用写SQL(简单的操作),由框架自己生成(JPA、Hibenate实现方式)
使用mybatis的步骤实现:
(1)创建Mybatis核心配置文件(Mybatis-config.xml),并配置环境;
(2)加载核心配置文件
(3)创建一个SqlSessionFactoryBuilder对象;
(4)通过SqlSessionFactoryBuilder对象构建一个SqlSessionFactory对象
(5)创建Mapper映射文件,并配置;
(6)通过SqlSessionFactory获取SqlSession执行映射SQL。
什么是映射
sql映射器Mapper
之前通过Mybatis操作数据库的时候,除了写接口,还要写实现类。MyBatis基于动态代理机制,让我们无需再编写Dao的实现,但是必须要遵循一定的规范:
1.传统Dao接口,现在名称统一以Mapper结尾:例如:IUserDao --> UserMapper
2.还有我们映射器配置文件要和映射器在同一个包:
(1)包:cn.itsource.mapper中(UserMapper接口 和 UserMapper.xml)
UserMapper.xml中namespace直接写UserMapper接口的的完全限定名。
注意事项:映射器接口与mxl配置对应:
1.接口的方法名与sql的id对应
2.接口中方法的返回值与sql中的resultType/resultMap对应
3.接口中的方法参数类型和sql中的parameterType对应(也可以不写parameterType)
在映射文件中(也称之为mapper文件),需要写sql语句,sql语句中传入的参数可以使用${},#{}来取值
例如:
<mapper namespace="cn.itsource.dao.IProductDao">
<!--
select :这里面写查询语句
id:用来确定这条sql语句的唯一
以后我们确定唯一,也就是找sql语句 : namespace + id
例: cn.itsource.mybatis.day1._1_hello.IProductDao.get
parameterType : 传入的参数类型 long:大Long _long:小long (具体的对应请参见文档)
resultType : 结果类型(第一条数据返回的对象类型)自己的对象一定是完全限定类名
-->
<select id="get" parameterType="long" resultType="cn.itsource.domain.Product">
select * from product where id = #{id}
</select>
</mapper>
使用#时(一般使用#)
MyBatis会把这个表达式使用?(占位符)替换,作为一个sql参数使用:推荐使用。比如name的值为: 定义SQL: select *
from t_user where name = #{name} 最终SQL: select * from t_user where
name = ?
使用$
1.MyBatis会把这个表达式的值替换到sql中,作为sql的组成部分。把获取到值直接拼接到SQL中;
2.如果sql中使用${OGNL},并且参数的类型是(integer、string…)那么OGNL表达式可以写成任意形式;