JavaWeb:CMS项目笔记

1.项目简介

一个展示招聘信息的网站,后台对招聘信息进行增删改查,前台展示职位列表。简单的写一下实现思路。

2. 职位管理及页面静态化

数据查询就比较简单,新建一个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<T> 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;
	}

3.轮播图管理

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<byte[]> 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<byte[]>(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";
	}

4.Ajax检查用户名是否重复

1.通过id调用js函数
<p id="check" ></p>
2.js代码

<script type="text/javascript">
	function regist(){
		//创建ajax对象
		var xhr = null;
		//针对其他浏览器
		if(window.XMLHttpRequest){
			xhr = new XMLHttpRequest();
		}else{
			//针对低版本的ie浏览器
			xhr=new ActiveXObject('Microsoft.XMLHTTP');
		}
		//获取用户名
		var username = document.getElementById("username").value
		xhr.open("get","/checkUsername?username="+username)
		xhr.onreadystatechange = function(){
			if(xhr.status==200&&xhr.readyState == 4){
				var check = document.getElementById("check")
				//获取响应的字符串
				var msg = xhr.responseText
				console.debug(msg)
				if(msg=="false"){//标识当前账户不能用
					check.innerText =  "当前用户已经存在,请换名字"
				}else{//表示当前用户可以使用
					check.innerText = "当前用户可用"
				}
			}
		}
		xhr.send()
	}
</script>

3.后台代码

@RequestMapping("/checkUsername")
	@ResponseBody
	public Boolean checkUsername(String username){
		List<User> checkName = userServiceImpl.checkName(username);
		for (User user : checkName) {
			if(username.equals(user.getUsername())){
				return false;
			}
		}
		return true;
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值