一个展示招聘信息的网站,后台对招聘信息进行增删改查,前台展示职位列表。简单的写一下实现思路。
数据查询就比较简单,新建一个Jobs类,数据库查询职位信息,封装为List
1.新建一个PageLIst类,字段如下,提供构造方法,get、set方法,
//当前页
private Integer currentPage;
//总页数
private Integer totalPage;
//页面显示数据数
private Integer pageSize;
//总数据数
private Integer totalCount;
//首页
private Integer firstPage=1;
//上一页
private Integer prePage;
//下一页
private Integer nextPage;
//尾页
private Integer lastPage;
private List list;
并设计一个计算分页需要的各项数据的方法
public void getPageNum(Integer currentPage,Integer totalCount,Integer pageSize){
this.currentPage=currentPage;
this.firstPage=1;
this.totalPage=totalCount%pageSize==0?totalCount/pageSize:(totalCount/pageSize+1);
this.pageSize=pageSize;
this.totalCount=totalCount;
this.prePage=currentPage==1?1:(currentPage-1);
this.lastPage=totalPage;
this.nextPage=currentPage==lastPage?lastPage:(currentPage+1);
}
2.新建一个SqlCondition类,提供字段 当前页currentPage和每页显示的条数pageSize,提供控制sql语句中limit 开始的数(代码中get、set方法,构造方法已省略)
//当前页
private Integer currentPage=1;
//每页展示的数据数
private Integer pageSize=5;
//分页查询 sql语句中控制limit
public Integer getNum(){
return (currentPage-1)*pageSize;
}
3.controller层用SqlCondition sc 来接收数据,将数据封装到PageList中添加到作用域,在service层通过查询数据库将查询到的Jobs对象放到PageList的list字段中
1.往数据库添加数据,生成一个HTML静态化页面,修改时生成一个新的HTML页面,删除原来的页面,
File file = new File("E:/javaEEworkspace/0712-CMS05/src/main/webapp/template");
String ftl = "join_us_details.ftl";
// 1.导入jar包
// 2.创建一个配置对象,传递一个版本
Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);
// 3.设置模板加载路径
cfg.setDirectoryForTemplateLoading(file);
//4设置一个模板编码
cfg.setDefaultEncoding("UTF-8");
//5.获取一个模板对象
Template template = cfg.getTemplate(ftl);
String htmlurl = UUID.randomUUID().toString()+".html";
7生成文件
File file2 = new File(file,htmlurl);
PrintWriter out = new PrintWriter(file2);
template.process(jobs, out);
out.close();
// 6获取一个数据
if(jobs.getId()!=null){//修改
//删除原来的文件
String oldurl = jobsServiceImpl.findOne(jobs.getId()).getHtmlurl();
String realPath = req.getServletContext().getRealPath("/template");
File file3 = new File(realPath,oldurl);
file3.delete();
jobs.setHtmlurl(htmlurl);
jobsServiceImpl.update(jobs);
}else{//添加
jobs.setHtmlurl(htmlurl);
jobsServiceImpl.add(jobs);
}
删除需要删除数据库和静态化页面
@RequestMapping("/del")
public String del(Integer id,HttpServletRequest req){
String oldurl = jobsServiceImpl.findOne(id).getHtmlurl();
String realPath = req.getServletContext().getRealPath("/template");
File file3 = new File(realPath,oldurl);
file3.delete();
jobsServiceImpl.del(id);
return "redirect:/jobs/list";
}
在SqlCondition中添加字段,提供一个用于拼接sql语句的方法
public String getSql(){
String sql="";
if(title!=null&&!"".equals(title.trim())){
sql+=" and title like '%"+this.title+"%' ";
}
if(positiontype!=null&&positiontype!=2){
sql+=" and positiontype="+this.positiontype+" ";
}
return sql;
}
1.图片列表的展示
2.添加和修改图片信息及上传文件
@RequestMapping("/save")
public String save(Images img,HttpServletRequest req) throws Exception{
MultipartFile fileImg = img.getFileImg();
if(fileImg!=null){//上传了文件,说明是添加
//获取文件名字
String filename = fileImg.getOriginalFilename();
//获取文件的后缀
String extension = FilenameUtils.getExtension(filename);
//随机生成文件名
String name = UUID.randomUUID().toString()+"."+extension;
String realPath = req.getServletContext().getRealPath("/images/");
//文件路径
filename = realPath+name;
FileOutputStream fos = new FileOutputStream(filename);
InputStream is = fileImg.getInputStream();
IOUtils.copy(is, fos);
fos.close();
is.close();
img.setStorename(name);
img.setStorepath("/images/"+name);
}
if(img.getImgid()!=null){//修改
imagesServiceImpl.update(img);
}else{
//添加
imagesServiceImpl.add(img);
}
return "redirect:/img/list";
}
3.图片下载
@RequestMapping("/download")
public ResponseEntity download(Integer imgid,HttpServletRequest req) throws IOException{
String realPath = req.getServletContext().getRealPath("/images/");
Images img = imagesServiceImpl.findOne(imgid);
File file = new File(realPath,img.getStorename());
//设置头信息
HttpHeaders headers = new HttpHeaders();
//设置响应的文件名
String downloadFileName = new String(img.getStorename().getBytes("UTF-8"), "iso-8859-1");
headers.setContentDispositionFormData("attachment", downloadFileName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
// MediaType:互联网媒介类型 contentType:具体请求中的媒体类型信息
return new ResponseEntity(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
}
4.删除
@RequestMapping("/del")
public String del(Integer imgid,HttpServletRequest req){
//获取文件路径
Images img = imagesServiceImpl.findOne(imgid);
String filePath = req.getServletContext().getRealPath("/images/")+img.getStorename();
//删除文件
new File(filePath).delete();
//删除数据库
imagesServiceImpl.del(imgid);
return "redirect:/img/list";
}
1.通过id调用js函数
3.后台代码
@RequestMapping("/checkUsername")
@ResponseBody
public Boolean checkUsername(String username){
List checkName = userServiceImpl.checkName(username);
for (User user : checkName) {
if(username.equals(user.getUsername())){
return false;
}
}
return true;
}