CMS系统学习笔记(二)

一.完成了User的CRUD

  • 写法和之前的CRUD是一样的
  • User(userid,username,password,age)
  • 把之前的CRUD拿过来,把名称和sql修改一下就可以完成了

二.Images的修改与删除

2.1 富文本框

由于html中原生的textarea功能太弱,无法完成一些字体,颜色等功能,因此我们在开的时候经常会使用富文本框

  • UEditor, CKEditor,wangEditor 市面用得比较多的富文本框

  • 使用是的wangEditor,要学习的话可以去看它的官网 -> http://www.wangeditor.com/

  • 主要是完成文本框的展示

...

2.2 修改的回显功能

①.单选框的回显

  • 需要保存的是被选中的那一个input加上checked属性

②.富文本框数据的回显

var E = window.wangEditor
var editor = new E('#intro');
var $text1 = $('#txtIntro');
editor.customConfig.onchange = function(html) {
	// 监控变化,同步更新到 textarea
	$text1.val(html);
}
editor.create();
// 初始化 文本编辑器的内容
editor.txt.html('${img.intro}')
// 初始化对应的内容
$text1.val(editor.txt.html());

2.3 删除功能

删除数据的时候同时也要删除相应的文件(图片) file.delete()

@RequestMapping("/delete")
public String delete(Integer id,HttpServletRequest req){
	//注意:在咱们删除功能前还要先把图片删除了
	//1.拿到咱们的Image数据
	Images images = imageService.findOne(id);
	if(images!=null){
		//2.拿到真实的路径
		String realPath = req.getServletContext().getRealPath("");
		//3.拿到文件路径
		String filePath = images.getStorepath();
		//4.获取到文件
		File file = new File(realPath+filePath);
		//5.删除文件
		file.delete();
	}
	imageService.delete(id);
	return "redirect:/images/query";
}

三.主页面的轮播图展示

  • 会去从后台拿到所有图片
  • 把图片在相应的轮播位置进行循环
  • 注意: 咱们循环的时候要保证第一个图片有.active样式的

 
	
active "> 码农

四.分页

  • 一个系统,由于数据量都会比较多,所以开发的时候都会做分页功能的
  • 真分页(limit)与假分页(内存中)
    • 真分页:匀速,用户体验还可以,用得多一点
    • 假分页:每一次非常慢(后面就快),还会占内存

4.1 创建分页对象 PageList

  • 把分页的所有数据封装给传给前端
  • 哪些属性(当前页,每页条数,首页,尾页,上一下,下一页,总页数,总条数,当前页数据)
  • 当前页,每页条数 -> 前台传过来
  • 总条数,当前页数据 -> 数据库中查出来
  • 上一页,下一页,总页数 -> 计算出来的
/**
 * 分页对象
 * @author Administrator
 *
 */
public class PageList {

	//当前页 -> 前台传过来
	private int currentPage = 1;
	//每页条数 -> 前台传过来/自己定义
	private int pageSize = 10;
	//首页(第一页)
	private int firstPage = 1;
	//上一页 计算出来  currentPage>1?currentPage-1:1
	private int prevPage;
	//下一页 计算出来 currentPage 数据库中查询出来
	private int totalCount;
	//当前页的数据 -> 数据库中查询出来
	private List data = new ArrayList<>();
	
	
	public PageList(){}
	/**
	 * @param currentPage:前台传过来
	 * @param pageSize:前台传过来
	 * @param totalCount:数据库中查询
	 * @param data:数据库中查询
	 */
	public PageList(int currentPage, int pageSize, int totalCount, List data) {
		this.currentPage = currentPage;
		this.pageSize = pageSize;
		this.totalCount = totalCount;
		this.data = data;
		//计算上一页  当前页>1 ? 当前页-1 : 1
		this.prevPage = this.currentPage>1 ? this.currentPage-1 : 1;
		//计算总页数 总条数%每页条数==0? 总条数/每页条数:总条数/每页条数+1
		this.totalPage = this.totalCount%this.pageSize==0?this.totalCount/this.pageSize:this.totalCount/this.pageSize+1;
		this.lastPage = this.totalPage; //最后一页就是总页数
		//计算下一页 当前页<总页数?当前页+1:总页数;
		this.nextPage = this.currentPage

4.2 创建SQL条件对象 SqlCondition

  • 接收前台传过来的分页条件(currentPage,pageSize)
public class SqlCondition {
	//当前页
	private int currentPage = 1;
	//每页条数
	private int pageSize = 10;
	//getter,setter省略
}	

4.3 在dao中添加了相应的方法

  • 根据条件查询到数据,封装成PageList对象 返回
/**
 * 最后返回的是PageList对象,里面都要有值
 * 	 	PageList(int currentPage, int pageSize, int totalCount, List data)
 */
@Override
public PageList queryAll(SqlCondition condition) {
	//①.拿到当前页与每页条数
	int currentPage = condition.getCurrentPage();
	int pageSize = condition.getPageSize();
	//一.查询总条数
	//1.1 准备查询总条数的sql
	String sql = "select count(*) from t_image";
	//1.2执行sql拿到总条数
	Integer totalCount = jdbcTemplate.queryForObject(sql, Integer.class);
	//二.查询当前页的数据
	//2.1 计算当前页是从第几条数据开始的
	int beginIndex = (currentPage-1) * pageSize;
	//2.2 准备相应的SQL
	String dataSql = "select * from t_image limit "+beginIndex+","+pageSize;
	//2.3 执行查询功能
	List data= jdbcTemplate.query(dataSql, new BeanPropertyRowMapper<>(Images.class));
	
	//三.创建PageList对象并且返回
	PageList pageList = new PageList(currentPage,pageSize,totalCount,data);
	return pageList;
}

4.4 前端展示数据

  • controller中的修改
@RequestMapping("/query")
public String query(SqlCondition condition,Model model){
	model.addAttribute("pageList",imageService.queryAll(condition));
	return "main";
}
  • 页面中的展示(循环的是pageList.data)

...

  • 分页条把值加上 -> ?currentPage=1


你可能感兴趣的:(学习)