热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:旅游管理项目开发(一)

   1.首先导入项目,修改对应的属性文件信息,配置mybatis,spring,springmvc的相关配置文件尤其是配置好路径(一个路径绑定异常浪费

技术图片

 

 

 1.首先导入项目,修改对应的属性文件信息,配置mybatis,spring,springmvc的相关配置文件

尤其是配置好路径(一个路径绑定异常浪费了我一上午。。。)

 对应配置文件信息:

技术图片

 

 

 技术图片

 

 

 

(1)web.xml



tzms

dispatcherServlet
org.springframework.web.servlet.DispatcherServlet

contextConfigLocation
classpath:spring-*.xml

1


dispatcherServlet
/



 (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











filePattern="logs/$${date:yyyy-MM}/log-%d{MM-dd-yyyy}-%i.log.gz">












(4)mybatis-config


"http://mybatis.org/dtd/mybatis-3-config.dtd">










(5)spring-mvc.xml


xmlns="http://www.springframework.org/schema/beans"
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">







class="org.springframework.format.support.FormattingConversionServiceFactoryBean">








class="org.springframework.web.multipart.commons.CommonsMultipartResolver">








(6)spring-mybatis



xmlns="http://www.springframework.org/schema/beans"
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">

















classpath:mappers/*/dao/*.xml











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 findAllProject(){
List list = projectService.findAllProject();
return list;//转成json[{"id":1,"name":"日本游"...},{}]
}

@RequestMapping("/findPageObject")
@ResponseBody
/**
* {
* "list":[{id:1,name:"长沙游"}]
* "page":[pageCount:1,pageCount:2]
* }
* @return
*/
public Map findPageObject(Integer pageCurrent){
System.out.println(pageCurrent);
Map map = projectService.findPageObject(pageCurrent);
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 findAllProject();

/**
* 分页查询项目信息
* @param startIndex 分页时的其实位置
* @param pageSize 查询页数
* @return
*/
//默认会将用户传来的数据存放在map集合中,默认的话时param0,param1
//这里用@param进行取别名,易于读取
public List findPageObject(@Param("startIndex") int startIndex,@Param("pageSize") int pageSize);

/**
* 查询总项目条数
*/
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 findAllProject() {
return projectDao.findAllProject();
}
/**
* 分页需要返回两个数据,一个是查询出来的当前数据,一个是分页的数据
*/
@Override
public Map findPageObject(int currentPage) {
//页面显示条数
int pageSize = 5;
int startIndex = (currentPage - 1) * pageSize;
System.out.println("pageSize---"+pageSize+"startIndex---"+startIndex);
//获取当前页面数据
List findPageObject = projectDao.findPageObject(startIndex, pageSize);

//获取总条数
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 = new HashMap();
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" %>



























选择 项目编码 项目名称 开始时间 结束时间 状态 操作

<%@include file="../common/page.jsp" %>




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中
/*

*/
setTableBodyRows(result.list);//取出map中key为list的值,也就是当前数据
//设置分页信息
//调用page.js的setPagination对象,返回参数
setPagination(result.pageObject);//取出map中key为pageObject的值,就是分页数据
});
}
function setTableBodyRows(result){
//1.先获取tbody对象
var tbody = $("#tbodyId");
tbody.empty();//清空数据为了防止还保留着以前的数据
//2. 循环数据result
for(var i in result){
//3.创建一个tr对象,用来显示每行数据
var tr = $("")

//var td = $("")
//td.append(result[i].id)
//4.创建每行的td对象(一行有多个数据)
//5.在td对象内部填充查询出来的具体数据
var td = ""
+""+result[i].code+""
+""+result[i].name+""
+""+result[i].beginDate+""
+""+result[i].endDate+""
// +""+new Date(result[i].beginDate).toLocaleDateString()+""
// +""+new Date(result[i].endDate).toLocaleDateString()+""
+""+(result[i].status==1?‘有效‘:‘无效‘)+""
+"";

//6.将创建出来的td对象添加到tr对象当中去
tr.append(td);
//7.将创建出来的tr对象添加到tbody中
tbody.append(tr);
}
}

page.jsp

<%@ page cOntentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

首页
上一页 

尾页
总页数(1)
当前页(1)


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 pageCurrent++;
}
//判断点击的对象是否是首页
if(clazz=="first"){
pageCurrent=1;
}
//判定点击的对象是否是尾页
if(clazz=="last"){
pageCurrent=pageCount;
}
//重写绑定pageCurrent的值
$(‘#pageId‘).data("pageCurrent",pageCurrent);
//重新执行查询操作(根据pageCurrent的值)
findAllProject();
}


推荐阅读
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
author-avatar
透支的灬漂移_255
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有