0、效果展示
1、概述
一个宠物收容所吸引顾客的优势所是它良好的周密的收养服务,这点是宠物收容所赢得信誉的必要条件。而随着收容所的不断发展,靠手工记账进行宠物的管理已经明显力不从心。另外宠物种类不断增加而产生的需求日益旺盛,也使以往的收容所管理模式无法适应新型收容所的需要。如何运用现代的信息技术来使收容所达到快速、高效的市场反应能力,从而使收容所得到更高的效率成为宠物收容所经营收容所关心的问题。因此,宠物收容所经营者应该宠物收容所现代化经营作为努力开拓的目标,从而掌握当今市场发展的这一走向,这样就可以做到经营活络、财源茂盛。但这种方式为管理者带来很大的不便,更容易造成文件的损坏和信息查询的不便等。如果能有一套针对性的宠物收养管理系统来做这一切,不仅会达到预想不到的效果,也会更好的为宠物收容所带来盈利[14]。
2、搭建环境
本文以实现一个流浪动物管理系统 宠物收容所管理为目标,从环境搭建到编码实现全过程讲述
我们使用javaweb、J2EE来构建流浪动物管理系统 宠物收容所管理,环境使用最新版jdk和tomcat,配合mysql数据库
开发工具使用idea(也可以使用eclipse),数据库管理工具使用Navicat Premium
开发框架使用JavaBean Servlet MVC结构;
没有使用SSH(Struts+Spring+Hibernate)或SSM(Spring+SpringMVC+MyBatis),这两个框架我们在别的项目中再介绍开发过程
在项目中会引入My97DatePicker作为前端日期时间选择工具,使用fckeditor作为富媒体编辑器(也可以使用百度的ueditor)
使用DWR(Direct Web Remoting)用于改善web页面与Java类交互,实现远程服务器端AJAX读取登录数据。
使用JSTL(Java server pages standarded tag library,即JSP标准标签库),此库是由JCP(Java community Proces)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签库,并由Apache的Jakarta小组来维护。开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。
3、数据表结构
表 shouyang 收养表
名称 | 类型 | 说明 |
id | int | 编号 |
danjuhao | varchar(50) | 单据号 |
shijian | datetime | 时间 |
zongjiage | int | 价格 |
jingshouren | varchar(50) | 经手人 |
beizhu | varchar(50) | 备注 |
表 catelog 分类表
名称 | 类型 | 说明 |
id | int | 编号 |
name | varchar(50) | 名称 |
jieshao | varchar(5000) | 介绍 |
4、后端代码示例
package com.action;
import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dao.DB;
import com.orm.Tdongwu;
import com.service.liuService;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class dongwu_servlet extends HttpServlet
{
public void service(HttpServletRequest req,HttpServletResponse res)throws ServletException, IOException
{
String type=req.getParameter("type");
if(type.endsWith("dongwuAdd1"))
{
dongwuAdd1(req, res);
}
if(type.endsWith("dongwuAdd"))
{
dongwuAdd(req, res);
}
if(type.endsWith("dongwuMana"))
{
dongwuMana(req, res);
}
if(type.endsWith("dongwuDel"))
{
dongwuDel(req, res);
}
if(type.endsWith("edit"))
{
edit(req, res);
}
// if(type.endsWith("dongwuSearch"))
// {
// dongwuSearch(req, res);
// }
if(type.endsWith("photo"))
{
photo(req, res);
}
}
public void photo(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
int id=Integer.parseInt(req.getParameter("id"));
List dongwuList=new ArrayList();
String sql="select * from t_dongwu where id="+id;
Object[] params={};
DB mydb=new DB();
try
{
mydb.doPstm(sql, params);
ResultSet rs=mydb.getRs();
while(rs.next())
{
Tdongwu dongwu=new Tdongwu();
dongwu.setId(rs.getInt("id"));
dongwu.setCatelog_id(rs.getInt("catelog_id"));
dongwu.setName(rs.getString("name"));
dongwu.setBeizhu(rs.getString("beizhu"));
dongwu.setChandi(rs.getString("chandi"));
dongwu.setSex(rs.getString("sex"));
dongwu.setZhongliang(rs.getString("zhongliang"));
dongwu.setPhoto(rs.getString("photo"));
dongwu.setAge(rs.getString("age"));
dongwu.setCatelog_name(liuService.getCatelogName(rs.getInt("catelog_id")));
dongwuList.add(dongwu);
}
rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
mydb.closed();
System.out.println(dongwuList.size());
req.setAttribute("dongwuList", dongwuList);
req.setAttribute("id", id);
req.getRequestDispatcher("admin/dongwu/photo.jsp").forward(req, res);
}
public void edit(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
//System.out.println(req.getParameter("userId")+"**");
List dongwuList=new ArrayList();
String sql="select * from t_dongwu where id="+Integer.parseInt(req.getParameter("id"));
Object[] params={};
DB mydb=new DB();
try
{
mydb.doPstm(sql, params);
ResultSet rs=mydb.getRs();
while(rs.next())
{
Tdongwu dongwu=new Tdongwu();
dongwu.setId(rs.getInt("id"));
dongwu.setCatelog_id(rs.getInt("catelog_id"));
dongwu.setName(rs.getString("name"));
dongwu.setBeizhu(rs.getString("beizhu"));
dongwu.setChandi(rs.getString("chandi"));
dongwu.setSex(rs.getString("sex"));
dongwu.setZhongliang(rs.getString("zhongliang"));
dongwu.setPhoto(rs.getString("photo"));
dongwu.setAge(rs.getString("age"));
dongwu.setCatelog_name(liuService.getCatelogName(rs.getInt("catelog_id")));
dongwu.setCatelog_id(rs.getInt("catelog_id"));
dongwuList.add(dongwu);
}
rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
mydb.closed();
req.setAttribute("dongwuList", dongwuList);
req.getRequestDispatcher("admin/dongwu/dongwuEditPre.jsp").forward(req, res);
}
public void dongwuAdd(HttpServletRequest req,HttpServletResponse res)
{
int catelog_id=Integer.parseInt(req.getParameter("catelog_id"));
String name=req.getParameter("name");
String chandi=req.getParameter("chandi");
String sex=req.getParameter("sex");
String zhongliang=req.getParameter("zhongliang");
String beizhu=req.getParameter("beizhu");
String photo=req.getParameter("fujian");
String age=req.getParameter("age");
String del="no";
String sql="insert into t_dongwu (`catelog_id`, `name`, `chandi`, `sex`, `zhongliang`, `beizhu`, `del`, `photo`,`age`) values(?,?,?,?,?,?,?,?,?)";
Object[] params={catelog_id,name,chandi,sex,zhongliang,beizhu,del,photo,age};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "dongwu?type=dongwuMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
public void dongwuAdd1(HttpServletRequest req,HttpServletResponse res)
{
int catelog_id=Integer.parseInt(req.getParameter("catelog_id"));
String name=req.getParameter("name");
String chandi=req.getParameter("chandi");
String sex=req.getParameter("sex");
String zhongliang=req.getParameter("zhongliang");
String beizhu=req.getParameter("beizhu");
String photo=req.getParameter("fujian");
String age=req.getParameter("age");
String sql="update t_dongwu set catelog_id="+catelog_id+",name='"+name+"',chandi='"+chandi+"',sex='"+sex+"',zhongliang='"+zhongliang+"',beizhu='"+beizhu+"',photo='"+photo+"',age='"+age+"' where id="+Integer.parseInt(req.getParameter("id"));;
Object[] params={};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "dongwu?type=dongwuMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
public void dongwuDel(HttpServletRequest req,HttpServletResponse res)
{
int id=Integer.parseInt(req.getParameter("id"));
System.out.println("dddd");
String sql="update t_dongwu set del='yes' where id="+id;
Object[] params={};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "dongwu?type=dongwuMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
public void dongwuMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
String page1=req.getParameter("page");
if(page1==null){
page1="1";
}
//分页设置
int EVERYPAGENUM=10;//每页条数
int page=Integer.parseInt(page1); //传递过来的当前页
int cou = 1;//得到信息总数
int pagecount=1; //总页数
String sql1="select count(*) as cou from t_dongwu where del='no'";
if(req.getParameter("name")!=null)sql1+=" and name like '%"+req.getParameter("name").trim()+"%'";
Object[] params1={};
DB mydb1=new DB();
try
{
mydb1.doPstm(sql1, params1);
ResultSet rs=mydb1.getRs();
while(rs.next())
{
cou= rs.getInt("cou");
}
rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
mydb1.closed();
if (cou % EVERYPAGENUM == 0) {
pagecount= cou / EVERYPAGENUM;
} else {
pagecount=cou / EVERYPAGENUM + 1;
}
req.setAttribute("EVERYPAGENUM", EVERYPAGENUM);
req.setAttribute("page", page);
req.setAttribute("cou", cou);
req.setAttribute("pagecount", pagecount);
List dongwuList=new ArrayList();
String sql="select * from t_dongwu where del='no' ";
if(req.getParameter("name")!=null)sql+=" and name like '%"+req.getParameter("name").trim()+"%'";
sql+=" order by id desc";
Object[] params={};
DB mydb=new DB();
try
{
mydb.doPstm(sql, params);
ResultSet rs=mydb.getRs();
for (int i = 0; i < (page - 1) * EVERYPAGENUM; i++) {
rs.next();
}
for (int t = 0; t < EVERYPAGENUM; t++) {
if (rs.next()) {
Tdongwu dongwu=new Tdongwu();
dongwu.setId(rs.getInt("id"));
dongwu.setCatelog_id(rs.getInt("catelog_id"));
dongwu.setName(rs.getString("name"));
dongwu.setBeizhu(rs.getString("beizhu"));
dongwu.setChandi(rs.getString("chandi"));
dongwu.setSex(rs.getString("sex"));
dongwu.setZhongliang(rs.getString("zhongliang"));
dongwu.setPhoto(rs.getString("photo"));
dongwu.setAge(rs.getString("age"));
dongwu.setCatelog_name(liuService.getCatelogName(rs.getInt("catelog_id")));
dongwuList.add(dongwu);
} else {
break; //减少空循环的时间
}
}
rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
mydb.closed();
req.setAttribute("dongwuList", dongwuList);
req.getRequestDispatcher("admin/dongwu/dongwuMana.jsp").forward(req, res);
}
/* public void dongwuSearch(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
List dongwuList=new ArrayList();
String sql="select * from t_dongwu where del='no' and name like '%"+req.getParameter("name").trim()+"%'";
Object[] params={};
DB mydb=new DB();
try
{
mydb.doPstm(sql, params);
ResultSet rs=mydb.getRs();
while(rs.next())
{
Tdongwu dongwu=new Tdongwu();
dongwu.setId(rs.getInt("id"));
dongwu.setCatelog_id(rs.getInt("catelog_id"));
dongwu.setName(rs.getString("name"));
dongwu.setBeizhu(rs.getString("beizhu"));
dongwu.setChandi(rs.getString("chandi"));
dongwu.setSex(rs.getString("sex"));
dongwu.setZhongliang(rs.getString("zhongliang"));
dongwu.setPhoto(rs.getString("photo"));
dongwu.setCatelog_name(liuService.getCatelogName(rs.getInt("catelog_id")));
dongwuList.add(dongwu); }
rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
mydb.closed();
req.setAttribute("dongwuList", dongwuList);
req.getRequestDispatcher("admin/dongwu/dongwuMana.jsp").forward(req, res);
}
*/
public void dispatch(String targetURI,HttpServletRequest request,HttpServletResponse response)
{
RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI);
try
{
dispatch.forward(request, response);
return;
}
catch (ServletException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void init(ServletConfig config) throws ServletException
{
super.init(config);
}
public void destroy()
{
}
}
5、前端代码示例
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<jsp:useBean id="loginService" scope="page" class="com.service.loginService"></jsp:useBean>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page isELIgnored="false" %>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="<%=path %>/css/base.css" />
<script type="text/javascript" src="<%=path %>/js/popup.js"></script>
<script language="javascript">
function dongwuDel(id)
{
if(confirm('您确定删除吗?'))
{
window.location.href="<%=path %>/dongwu?type=dongwuDel&id="+id;
}
}
function dongwuAdd()
{
var url="<%=path %>/admin/dongwu/dongwuAdd.jsp";
//var n="";
//var w="480px";
//var h="500px";
//var s="resizable:no;help:no;status:no;scroll:yes";
//window.location.href=url;
window.location.href=url;
}
function photo(photo)
{
var url="<%=path %>/dongwu?type=photo&id="+photo;
var pop=new Popup({ contentType:1,isReloadOnClose:false,width:400,height:300});
pop.setContent("contentUrl",url);
pop.setContent("title","");
pop.build();
pop.show();
}
function edit(id)
{
window.location.href="<%=path %>/dongwu?type=edit&id="+id;
}
</script>
</head>
<body leftmargin="2" topmargin="2" background='<%=path %>/images/allbg.gif'>
<table width='98%' border='0'style="margin-top:8px;margin-left: 5px;">
<tr>
<td width="200">
<input type="button" value="添加" style="width: 80px;" onclick="dongwuAdd()" />
</td>
<form action="<%=path %>/dongwu?type=dongwuMana" name="formAdd" method="post">
<td>
<input type="text" name="name" size="20" value="<%if(request.getParameter("name")!=null){request.getParameter("name");} %>"/>
<input type="submit" value="搜索" style="width:40px;" />
</td>
</form> </tr>
</table>
<table width="98%" border="0" cellpadding="1" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px">
<tr bgcolor="#E7E7E7">
<td height="14" colspan="9" class="title"> 动物管理 </td>
</tr>
<tr align="center" bgcolor="#FAFAF1" height="22">
<td >类别</td>
<td>名称</td>
<td>产地</td>
<td>公母</td>
<td>重量</td>
<td>年龄</td>
<td>备注</td>
<td>图片</td>
<td>选项</td>
</tr>
<c:forEach items="${requestScope.dongwuList}" var="dongwu">
<tr align='center' bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='red';" onMouseOut="javascript:this.bgColor='#FFFFFF';" height="22">
<td bgcolor="#FFFFFF" align="center">
${dongwu.catelog_name}
</td>
<td bgcolor="#FFFFFF" align="center">
${dongwu.name}
</td>
<td bgcolor="#FFFFFF" align="center">
${dongwu.chandi}
</td>
<td bgcolor="#FFFFFF" align="center">
${dongwu.sex}
</td>
<td bgcolor="#FFFFFF" align="center">
${dongwu.zhongliang} kg
</td>
<td bgcolor="#FFFFFF" align="center">
${dongwu.age}
</td>
<td bgcolor="#FFFFFF" align="center">
${dongwu.beizhu}
</td>
<td bgcolor="#FFFFFF" align="center">
<c:if test="${dongwu.photo!=''&&dongwu.photo!=null}">
<a style="color: red" href="#" onclick="photo(${dongwu.id})">动物图片</a>
</c:if>
</td>
<td bgcolor="#FFFFFF" align="center">
<input type="button" value="删除" onclick="dongwuDel(${dongwu.id})"/>
<input type="button" value="修改" onclick="edit(${dongwu.id})"/>
</td>
</tr>
</c:forEach>
</table>
<table width='98%' border='0'style="margin-top:8px;margin-left: 5px;">
<TR align="right">
<TD ><form action="" method="post" name="formpage">
<input type="hidden" name="pageCount" value="${requestScope.pagecount}" />
<!--//用于给上面javascript传值-->
<input type="hidden" name="page" value="${requestScope.page}" />
<!--//用于给上面javascript传值-->
<input type="hidden" name="jumpurl" value="<%=path%>/dongwu?type=dongwuMana&" />
<!--//用于给上面javascript传值-->
<a href="#" onClick="PageTop()"><strong>首页</strong></a>
<a href="#" onClick='PagePre()'><strong>上一页</strong></a>
共${requestScope.cou}条记录,
共计${requestScope.pagecount}页,
当前第${requestScope.page}页
<a href="#" onClick="PageNext()"><strong>下一页</strong></a>
<a href="#" onClick="PageLast()"><strong>尾页</strong></a> 第
<input name="busjump" type="text" size="3" value="${requestScope.page}" style=" width:15px"/>
页<a href="#" onClick="bjump()"><strong>跳转</strong></a>
</form>
<script type="text/javascript" src="<%=path%>/js/page.js"></script></TD>
</TR>
</table>
</body>
</html>