真分页:每次从数据库读取部分数据
好处:占用内存小
劣势:翻页慢
它查询数据是匀速的
真分页:数据对象
① 每页多少条数据 pagesize=3
② 一共多少条数据 totallist
③ 当前第几页 currentpage
④ 首页 firstpage
⑤ 上一页 prepage
⑥ 下一页 nextpage
⑦ 尾页 lastpage
⑧ 总页数 totalpage
其中总数据条数需要从数据库查询
String sql=“select count(*) from jobs “+li.getSql()+”;”;
Integer totalCount = jdbcTemplate.queryForObject(sql, Integer.class);
每页多少条数据,需要设置 pagesize=3
当前页数默认是第一页,以后随之改变
pl.setCurrentpage(pl.getCurrentpage());
pl.setTotallist(userDaoImpl.total(li));
pl.setTotalpage(pl.getTotallist()%pl.getPagesize()==0?pl.getTotallist()/pl.getPagesize():pl.getTotallist()/pl.getPagesize()+1);
pl.setLastpage(pl.getTotalpage());
pl.setPrepage(pl.getCurrentpage()==1?pl.getCurrentpage():pl.getCurrentpage()-1);
pl.setNextpage(pl.getCurrentpage()==pl.getLastpage()?pl.getLastpage():pl.getCurrentpage()+1);
return pl;
5. CMS首页数据 ,高级查询;
高级查询就是多条件查询。
主要是对sql数据库数据的筛选
String sql=" where title “;
if(li.getTitle()==null||”".equals(li.getTitle()))
{
sql+=“like ‘%’ “;
}
else{
sql+=” = '”+li.getTitle()+"’ “;
}
if(li.getWorkingTime()!=2)
{
sql+=” and positiontype = ‘"+li.getWorkingTime()+"’";
}
li.setSql(sql);
return li;
//获取总条数
@Override
public Integer total(Limit li) {
String sql=“select count(*) from jobs “+li.getSql()+”;”;
Integer totalCount = jdbcTemplate.queryForObject(sql, Integer.class);
return totalCount;
}
当页面跳转时,表单数据没有放置其中,所以我们用一下方式传输数据:
页面静态化配置
完成静态化的步骤:
1.导入jar包
2.创建一个配置对象 1.传递一个版本
3.设置模板加载路径
4设置一个模板编码
5.获取一个模板对象
6获取一个数据
7生成文件
//1.导入jar包
// 2.创建一个配置对象 1.传递一个版本
Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);
//3.设置模板加载路径
File file = new File("E:/eclipse-workspace/UTF8WROKE/Day45-MAVEN/src/main/webapp/test");
cfg.setDirectoryForTemplateLoading(file);
// 4.设置一个模板编码
cfg.setDefaultEncoding("UTF-8");
// 5.获取一个模板对象
Template template = cfg.getTemplate("test1.ftl");
// 6.获取一个数据 ,封装在map中
HashMap map = new HashMap<>();
map.put("name", "小王");
map.put("age", 13);
//相当于存储的是a标签的一些信息
HashMap map2 = new HashMap<>();
map2.put("href", "https://www.baidu.com");
map2.put("aname", "百度");
map.put("user",map2);
// 7.生成文件
PrintWriter pw = new PrintWriter(new File(file,"test1.html"));
template.process(map, pw);
pw.close();
具体事例:
新增事例增加静态化页面
req.setCharacterEncoding(“UTF-8”);
//添加,调用底层的add
// 2.创建一个配置对象 1.传递一个版本
Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);
//3.设置模板加载路径
File file = new File(“E:/eclipse-workspace/UTF8WROKE/Day45-MAVEN/src/main/webapp/test”);
cfg.setDirectoryForTemplateLoading(file);
// 4.设置一个模板编码
cfg.setDefaultEncoding(“UTF-8”);
// 5.获取一个模板对象
Template template = cfg.getTemplate(“demo.ftl”);
// 6.获取一个数据 ,获取一个对象
// 7.生成文件
String html=UUID.randomUUID()+".html";
PrintWriter pw = new PrintWriter(new File(req.getRealPath("/details"),html));
template.process(user, pw);
pw.close();
String contextPath =req.getServletContext().getRealPath("/details");
if(user.getId() != null){
File file2 = new File(req.getServletContext().getRealPath("/details"),user.getHtmlurl());
file2.delete();
user.setHtmlurl(html);
userServiceImpl.update(user);
2.创建图片管理方法
Images queryOne(Integer id);//查找图片
void add(Images images);//添加图片
Integer total();//计算图片总数
List queryAll(PageList pl);//查询分页图片
void del(Integer id);//删除图片
void update(Images images);//修改图片
List query();//查询所有图片
3.创建控制文件
//作为页面的入口
@RequestMapping("/list")
public String list(PageList pl,HttpServletRequest req ){
Integer total = imagesServiceImpl.setTotal();
pl.set(pl, total);
List list = imagesServiceImpl.queryAll(pl);
req.setAttribute("pl", pl);
req.setAttribute("list", list);
return "forward:/WEB-INF/views/main.jsp";
}
//编辑
@RequestMapping("/edit")
public String edit(Images images,HttpServletRequest req){
if(images.getImgid()!=null){
Images images2 = imagesServiceImpl.queryOne(images.getImgid());
req.setAttribute("images2", images2);
}
return "forward:/WEB-INF/views/main_add.jsp";
}
//保存
@RequestMapping("/save")
public String save(Images images,HttpServletRequest req) throws Exception, IOException{
//获取到上传的文件数据
MultipartFile fileImg = images.getFileImg();
//获取存储位置及以前的名字
ServletContext context = req.getServletContext();
String realPath = context.getRealPath("/upload");
String newName= images.getStorename();
if(!fileImg.isEmpty()){
//获取原始文件名
String oldName = fileImg.getOriginalFilename();
//创建新名字
newName=UUID.randomUUID().toString()+"."+FilenameUtils.getExtension(oldName);
//创建文件
fileImg.transferTo(new File(realPath,newName));
}
if(images.getImgid()!=null){
//如果产生新文件,则删除原有文件
if(newName!=images.getStorename()){
Images images2 = imagesServiceImpl.queryOne(images.getImgid());
File file = new File(realPath,images2.getStorename());
imagesServiceImpl.delFile(file);
}
//新设置存储位置及文件名
images.setStorepath(realPath);
images.setStorename(newName);
imagesServiceImpl.update(images);
}else{
//新设置存储位置及文件名
images.setStorepath(realPath);
images.setStorename(newName);
imagesServiceImpl.add(images);
}
return "forward:/image/list";
}
//删除文件
@RequestMapping("/del")
public String del(Images images,HttpSession session){
Images images2 = imagesServiceImpl.queryOne(images.getImgid());
//删除上传的文件
File file = new File(images2.getStorepath(),images2.getStorename());
imagesServiceImpl.delFile(file);
//删除数据库信息
imagesServiceImpl.del(images2.getImgid());
return "forward:/image/list";
}
2.创建管理方法
void add(Users users);
void update(Users users);
void del(Users users);
String checkName(String username);
Users queryOne(String username,String password);
3.创建前端控制方法
//登录页面
@RequestMapping("/login")
public String login(Users users,HttpServletRequest req){
Users users2 = usersServiceImpl.queryOne(users.getUsername(), users.getPassword());
System.out.println(users2);
if(users2!=null){
return "forward:/user/list";
}
return "forward:/index.html";
}
//注册页面
@RequestMapping("/register")
public String register(Users users,HttpServletRequest req){
usersServiceImpl.add(users);
req.setAttribute("users", users);
return "forward:/activation.jsp";
}
//激活页面
@RequestMapping("/activation")
public String activation(Users users,HttpServletRequest req){
usersServiceImpl.update(users);
return "forward:/index.html";
}
//放弃激活
@RequestMapping("/del")
public String del(Users users,HttpServletRequest req){
usersServiceImpl.del(users);
return "forward:/index.html";
}
;
利用ajax判断用户名是否重复
后台程序
//检查用户名是否重复
@RequestMapping("/checkName")
@ResponseBody
public String checkName(Users users,HttpServletRequest req){
return usersServiceImpl.checkName(users.getUsername());
}
@Override
public String checkName(String username) {
String sql="select * from user where username=? ";
try {
jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(Users.class),username);
} catch (Exception e) {
return “false”;
}
return "true";
}
2.前台代码