1.首先导入项目,修改对应的属性文件信息,配置mybatis,spring,springmvc的相关配置文件
尤其是配置好路径(一个路径绑定异常浪费了我一上午。。。)
对应配置文件信息:
(1)web.xml
(2)jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///tzms?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=true
jdbc.username=root
jdbc.password=981130
(3)log4j2.xml
(4)mybatis-config
"http://mybatis.org/dtd/mybatis-3-config.dtd">
(5)spring-mvc.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cOntext="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
(6)spring-mybatis
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cOntext="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
2.产品-项目模块部分相关代码
(1)controller
package com.tanzhou.tzms.product.controller;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.tanzhou.tzms.product.domain.Project;
import com.tanzhou.tzms.product.service.ProjectService;
@Controller
@RequestMapping("/project")
public class ProjectController {
@Autowired
private ProjectService projectService;
/**
* 返回项目管理页面
* @return
*/
@RequestMapping("/listUI")
public String listUI(){
return "product/project_list";//项目列表页面
}
/**
* 项目管理下的首页展示数据
*/
@RequestMapping("/findAllProject")
@ResponseBody
public List
List
return list;//转成json[{"id":1,"name":"日本游"...},{}]
}
@RequestMapping("/findPageObject")
@ResponseBody
/**
* {
* "list":[{id:1,name:"长沙游"}]
* "page":[pageCount:1,pageCount:2]
* }
* @return
*/
public Map
System.out.println(pageCurrent);
Map
System.out.println(map);
return map;
}
}
(2)dao
package com.tanzhou.tzms.product.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.tanzhou.tzms.product.domain.Project;
/**
* 项目模块的dao层
* @author xq
*
*/
public interface ProjectDao {
/**
* 查询所有的项目信息
*/
public List
/**
* 分页查询项目信息
* @param startIndex 分页时的其实位置
* @param pageSize 查询页数
* @return
*/
//默认会将用户传来的数据存放在map集合中,默认的话时param0,param1
//这里用@param进行取别名,易于读取
public List
/**
* 查询总项目条数
*/
public int getRowCount();
}
(3)service
package com.tanzhou.tzms.product.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.tanzhou.tzms.common.web.PageObject;
import com.tanzhou.tzms.product.dao.ProjectDao;
import com.tanzhou.tzms.product.domain.Project;
import com.tanzhou.tzms.product.service.ProjectService;
@Service("projectService")
public class ProjectServiceImpl implements ProjectService{
@Autowired
private ProjectDao projectDao;
@Override
public List
return projectDao.findAllProject();
}
/**
* 分页需要返回两个数据,一个是查询出来的当前数据,一个是分页的数据
*/
@Override
public Map
//页面显示条数
int pageSize = 5;
int startIndex = (currentPage - 1) * pageSize;
System.out.println("pageSize---"+pageSize+"startIndex---"+startIndex);
//获取当前页面数据
List
//获取总条数
int rowCount = projectDao.getRowCount();
System.out.println("获取总条数"+rowCount);
//计算总页数
// int pageCount;
// if(rowCount%2 == 0) {
// pageCount = rowCount/2;
// }else {
// pageCount = rowCount/2;
// pageCount += 1;
// }
//封装分页信息
PageObject page = new PageObject();
page.setRowCount(rowCount);//总条数
page.setPageSize(pageSize);//每一页显示的数据
page.setPageCurrent(currentPage);//选择的页数(用户传递)
page.setStartIndex(startIndex);//查询数据开始
//把当前数据以及分页信息封装到map进行返回
Map
map.put("list",findPageObject);
map.put("pageObject",page);
return map;
}
}
(4)domain
package com.tanzhou.tzms.product.domain;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.tanzhou.tzms.common.web.JsonDateTypeConvert;
/**
* 项目描述类,用来封装数据,数据传递
*
*/
public class Project implements Serializable{
/**
* 添加序列化版本id,当对象的成员发生变化时,也要保住和流中的版本号一致
*/
private static final long serialVersiOnUID= 1L;
/**
* 项目ID
*/
private Integer id;
/**项目编号*/
private String code;
/**项目名称*/
private String name;
/**项目开始时间*/
private Date beginDate;
/**项目结束时间*/
private Date endDate;
/**项目状态 0:无效,1:有效*/
private Integer status;
/**项目备注*/
private String remarks;
private Date createdTime;
private Date modifiedTime;
private String createdUser;
private String modifiedUser;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//对象转成json,取出对象数据,调用get方法取出,如果属性的get方法方法有注解
//就会先进行类型转换再转换成json
@JsonSerialize(using = JsonDateTypeConvert.class)
public Date getBeginDate() {
return beginDate;
}
public void setBeginDate(Date beginDate) {
this.beginDate = beginDate;
}
@JsonSerialize(using = JsonDateTypeConvert.class)
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
public Date getModifiedTime() {
return modifiedTime;
}
public void setModifiedTime(Date modifiedTime) {
this.modifiedTime = modifiedTime;
}
public String getCreatedUser() {
return createdUser;
}
public void setCreatedUser(String createdUser) {
this.createdUser = createdUser;
}
public String getModifiedUser() {
return modifiedUser;
}
public void setModifiedUser(String modifiedUser) {
this.modifiedUser = modifiedUser;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
@Override
public String toString() {
return "Project [id=" + id + ", code=" + code + ", name=" + name + ", beginDate=" + beginDate + ", endDate="
+ endDate + ", status=" + status + ", remarks=" + remarks + ", createdTime=" + createdTime
+ ", modifiedTime=" + modifiedTime + ", createdUser=" + createdUser + ", modifiedUser=" + modifiedUser
+ "]";
}
}
前端项目列表部分代码
project_list.jsp
<%@ page cOntentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
选择 | 项目编码 | 项目名称 | 开始时间 | 结束时间 | 状态 | 操作 |
---|
project_list.js
/*
* 当在页面点击项目管理时,页面已经加载完成,需要再次发送异步请求去访问已经写好的加载数据的方法
*
* $(document).ready(function(){
})//当页面加载完成时所执行的函数
*
*/
//jq
$(function(){
//调用
findAllProject();
})//当页面加载完成时所执行的函数
//加载项目信息函数
function findAllProject(){
//异步请求
// var url="project/findAllProject";
var url="project/findPageObject";
// $.ajax({
// url:url,
// typr:"get",
// dataType:"json",
// success:function(){//当异步发送请求成功后的回调函数
//
// }
// })
var pageCurrent = $("#pageId").data("pageCurrent");
if(pageCurrent == undefined){//没有获取当前页数据
pageCurrent = 1;//默认取出第一页数据
}
var params = {"pageCurrent":pageCurrent};
$.getJSON(url,params,function(result){//载入成功后的回调函数
//将数据显示在table中的tbody中
/*
page.jsp
page.js
$(document).ready(function(){
$("#pageId").on(‘click‘,
‘.pre,.next,.first,.last‘,jumpToPage);
});
//设置分页
function setPagination(pageObject){
//1.初始化总页数
$(".pageCount").html("总页数("+pageObject.pageCount+")");
//2.初始化当前页的页码
$(".pageCurrent").html("当前页("+pageObject.pageCurrent+")");
//3.在pageId对应的对象上绑定总页数
//data函数用于以key/value的方式在对象上绑定数据
$("#pageId").data("pageCount",pageObject.pageCount);
//4.在pageId对象的对象上绑定当前页面值
$("#pageId").data("pageCurrent",pageObject.pageCurrent);
}
//定义一个函数,通过此函数实现页面的跳转
function jumpToPage(){
//获得点击对象上class属性对应的值,根据此值
//判定具体点击的是哪个对象(例如上一页,下一页)
var clazz=$(this).attr("class");
//获得pageId对象上绑定的pageCurrent对应的值
var pageCurrent=$(‘#pageId‘).data("pageCurrent");
//获得pageId对象上绑定的pageCount对应的值
var pageCount=$(‘#pageId‘).data("pageCount")
//根据class属性的值判断点击的是否是上一页
if(clazz==‘pre‘&&pageCurrent>1){
pageCurrent--;
}
//判断点击的是否是下一页
if(clazz=="next"&&pageCurrent
}
//判断点击的对象是否是首页
if(clazz=="first"){
pageCurrent=1;
}
//判定点击的对象是否是尾页
if(clazz=="last"){
pageCurrent=pageCount;
}
//重写绑定pageCurrent的值
$(‘#pageId‘).data("pageCurrent",pageCurrent);
//重新执行查询操作(根据pageCurrent的值)
findAllProject();
}