0、效果展示
1、概述
系统主要为用户提供了医生、客户、管理员三种权限的用户,实现了前台客户查看信息、在线预约、登录、注册等;后台医生管理坐诊信息、管理就诊信息、修改密码;后台管理员管理公告、管理宠物分类、管理就诊、管理用户、修改密码等。在设计方面,本系统采用MVC模式,同时使用JSP技术进行动态页面的设计,使用Ajax进行页面异步交互。后台数据库选用mysql数据库。
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、数据表结构
表5 挂号就诊信息
字段名称 | 字段大小 | 字段类型 | 说明 |
orderId | 4 | int | 编号 |
goodsId | 4 | int | 商品编号 |
status | 4 | int | 状态0已挂号,1检查缴费,100治疗完毕买药,101复诊 |
表6 宠物分类信息
字段名称 | 字段大小 | 字段类型 | 说明 |
typeId | 4 | int | 编号 |
typeName | 20 | varchar | 名称 |
表7 在线预约信息
字段名称 | 字段大小 | 字段类型 | 说明 |
orderId | 4 | 长整型(3) | 在线预约编号 |
goodsId | 4 | 长整型(3) | 经验编号 |
status | 4 | 长整型(3) | 状态0未确认,1已确认,100在线预约,101退约 |
4、后端代码示例
package com.control.web;
import com.dao.*;
import com.entity.*;
import com.util.PublicToolCheckParam;
import com.util.PublicToolParam;
import com.util.Validate;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
@SuppressWarnings("serial")
public class AdoptInfo extends HttpServlet {
/**
* Constructor of the object.
*/
public AdoptInfo() {
super();
}
/**
* Destruction of the servlet. <br>
*/
@Override
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
* <p>
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* The doPost method of the servlet. <br>
* <p>
* This method is called when a form has its tag value method equals to
* post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String method = (String) request.getParameter("method");
if (method.equals("addAdoptInfo")) {
addAdoptInfo(request, response);
} else if (method.equals("showAdoptInfo")) {
showAdoptInfo(request, response);
}
}
@SuppressWarnings({"unchecked", "static-access"})
public static void addAdoptInfo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String title = Validate.replaceHtml(request.getParameter("title"));
String content = Validate.replaceHtml(request.getParameter("content"));
String type = Validate.replaceHtml(request.getParameter("type"));
String publishDate = Validate.replaceHtml(request.getParameter("publishDate"));
String expiryTime = Validate.replaceHtml(request.getParameter("expiryTime"));
String publisherString = Validate.replaceHtml(request.getParameter("publisher"));
String remark = Validate.replaceHtml(request.getParameter("remark"));
if (title == null || title.trim().length() == 0) {
throw new NullPointerException("标题 不能为空");
}
if (type == null || type.trim().length() == 0) {
throw new NullPointerException("类型 不能为空");
}
if (publishDate == null || publishDate.trim().length() == 0) {
throw new NullPointerException("发布日期 不能为空");
}
if (expiryTime == null || expiryTime.trim().length() == 0) {
throw new NullPointerException("有效日期 不能为空");
}
CustomerInfoDAO customerInfoDAO = new CustomerInfoDAO();
CustomerInfo data = customerInfoDAO.getIdByEmail(publisherString);
int publisher = data.getId();
AdoptDAO adoptDAO = new AdoptDAO();
adoptDAO.addAdopt(title, type, content, publishDate, publisher, expiryTime, remark, "0");
// request.getRequestDispatcher("../web/addAdpot.jsp")
// .forward(request, response);
response.sendRedirect("../");
}
public static void showAdoptInfo(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String adoptId = request.getParameter("adoptId");
AdoptDAO adoptDAO = new AdoptDAO();
Adopt adopt = adoptDAO.getById(Integer.parseInt(adoptId));
request.setAttribute("adopt", adopt);
request.setAttribute("adoptId", adoptId);
request.getRequestDispatcher("../web/AdpotDetail.jsp").forward(request, response);
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
@Override
public void init() throws ServletException {
// Put your code here
}
}
5、前端代码示例
<%@ page language="java" import="com.entity.GoodsInfo,java.text.DecimalFormat" pageEncoding="utf-8" %>
<%@page import="java.util.ArrayList" %>
<%@page import="com.entity.Adopt" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Date" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<%
String email = (String) session.getAttribute("email");
String thirdemail = (String) session.getAttribute("thirdemail");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<base href="<%=basePath%>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>发布寄养领养</title>
<meta content="" name="keywords">
<meta content="" name="description">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" type="text/css" href="./stylesheet/bootstrap.css"><!--bootstrap框架-->
<link rel="stylesheet" type="text/css" href="./stylesheet/style.css"><!--网站主框-->
<link rel="stylesheet" type="text/css" href="./stylesheet/responsive.css"><!--自适应屏幕大小使用-->
<script type="text/javascript">
function checkLogin() {
if ("<%=email%>" == "" || "<%=email%>" == "null") {
alert("请先登陆!");
return false;
}
else {
top.location.href = "servlet/DoMethod?method=showMyInformation";
return true;
}
}
function checkPublishData() {
if (document.formAdd.type.value == '') {
alert("请选择类型");
return false;
}
if (document.formAdd.title.value == '') {
alert("请输入标题");
return false;
}
if (document.formAdd.content.value == '') {
alert("请输入内容");
return false;
}
if (document.formAdd.expiryTime.value == '') {
alert("请输入有效日期");
return false;
}
return true;
}
function checkUserLogin() {
if ("<%=email%>" == "" || "<%=email%>" == "null") {
alert("请先登陆!");
return false;
}
else {
top.location.href = "servlet/DoChatMethod?method=login";
return true;
}
}
</script>
<!---reload-!-->
</head>
<body>
<div class="boxed">
<div class="preloader">
<div class="clear-loading loading-effect-2">
<span></span>
</div>
</div>
<jsp:include page="../web/top.jsp" flush="true"/>
<div class="page-title">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="page-title-heading">
<h1 class="h1-title">发布寄养领养</h1>
</div>
<div class="clearfix"></div>
</div>
</div>
</div>
</div>
<section class="flat-row pd-contact-v2">
<div class="container">
<div class="row">
<!--左栏-->
<div class="col-md-8 boxl">
<div class="course">
<div class=" lay3">
<form name="formAdd" action="servlet/AdoptInfo?method=addAdoptInfo" method="post">
<div style="padding:10px">
<div class="clr"></div>
<div class="mt10 productsbox">
<h2> 发布寄养领养 </h2>
<div class="productscontent" style="margin-top: 15px">
类型:
<select name="type" id="type">
<option value="">请选择</option>
<option value="0">领养</option>
<option value="1">寄养</option>
</select>
</div>
<input type="hidden" name="publisher" id="publisher" value="<%=email%>"/>
<div class="productscontent" style="margin-top: 15px">
标题: <input type="text" maxlength="100" style="width: 60%" name="title"
id="title"/>
</div>
<div class="productscontent" style="margin-top: 15px">
内容:<textarea rows="5" cols="80" name="content" id="content"
style="background-color: white;height: 100px;width: 70%;margin-top: 10px"></textarea>
</div>
<input maxlength="100" type="hidden" name="publishDate"
id="publishDate"
value="<%=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())%>"/>
<div class="productscontent" style="margin-top: 15px">
有效日期: <input maxlength="100" type="text" name="expiryTime" id="expiryTime"
value="<%=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())%>"/>
</div>
<div class="productscontent" style="margin-top: 15px">
备注: <textarea rows="5" cols="80" name="remark" id="remark"
style="background-color: white;height: 100px;width: 70%;margin-top: 10px"></textarea>
</div>
</div>
<!--内容-->
</div>
<input type="submit" value="提交" style="margin-bottom: 20px"
onclick="return checkPublishData()">
</form>
</div>
</div>
</div>
<!--右栏-->
<div class="col-md-4 boxr">
<div class="overl">
<h2>用户登录</h2>
<ul>
<jsp:include page="../web/left.jsp" flush="true"/>
</ul>
</div>
</div>
</div>
</div>
</section>
<jsp:include page="../web/bottom.jsp" flush="true"/>
</div>
<script type="text/javascript" src="./javascript/jquery.min.js"></script><!--jquery主文件-->
<script type="text/javascript" src="./javascript/bootstrap.min.js"></script><!--bootstrap主文件-->
<script type="text/javascript" src="./javascript/main.js"></script><!--程序主文件-->
</body>
</html>