- 需求分析
- 登录功能(后台,管理员)
- 数据录入(后台,管理员)
- 数据展示(前台,面向用户,地图、图表、表格)
- 开发环境
- JDK 1.8(运行环境)
- MySQL5.7
- Tomcat8.0
mode层:管理员
package com.ycu.epidemic.bean;
public class UserInfo {
private Integer userId;
private String account;
private String password;
private String userName;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "UserInfo{" +
"userId=" + userId +
", account='" + account + '\'' +
", password='" + password + '\'' +
", userName='" + userName + '\'' +
'}';
}
}
Model层省份
package com.ycu.epidemic.bean;
public class ProvinceInfo {
private Integer provinceId;
private String provinceName;
private String provincePinYing;
public Integer getProvinceId() {
return provinceId;
}
public void setProvinceId(Integer provinceId) {
this.provinceId = provinceId;
}
public String getProvinceName() {
return provinceName;
}
public void setProvinceName(String provinceName) {
this.provinceName = provinceName;
}
public String getProvincePinYing() {
return provincePinYing;
}
public void setProvincePinYing(String provincePinYing) {
this.provincePinYing = provincePinYing;
}
}
model层:疫情信息:确诊,治愈等
package com.ycu.epidemic.bean;
import java.util.Date;
public class EpidemicInfo {
private Integer serialId;
private Integer provinceId;
private Short dataYear,dataMonth,dataDay;
private Integer affirmed,suspected,cured,isolated,dead;//每日疫情数据
private Integer userId;
private Date inputDate;
public Integer getSerialId() {
return serialId;
}
public void setSerialId(Integer serialId) {
this.serialId = serialId;
}
public Integer getProvinceId() {
return provinceId;
}
public void setProvinceId(Integer provinceId) {
this.provinceId = provinceId;
}
public Short getDataYear(short year) {
return dataYear;
}
public void setDataYear(Short dataYear) {
this.dataYear = dataYear;
}
public Short getDataMonth() {
return dataMonth;
}
public void setDataMonth(Short dataMonth) {
this.dataMonth = dataMonth;
}
public Short getDataDay() {
return dataDay;
}
public void setDataDay(Short dataDay) {
this.dataDay = dataDay;
}
public Integer getAffirmed() {
return affirmed;
}
public void setAffirmed(Integer affirmed) {
this.affirmed = affirmed;
}
public Integer getSuspected() {
return suspected;
}
public void setSuspected(Integer suspected) {
this.suspected = suspected;
}
public Integer getCured() {
return cured;
}
public void setCured(Integer cured) {
this.cured = cured;
}
public Integer getIsolated() {
return isolated;
}
public void setIsolated(Integer isolated) {
this.isolated = isolated;
}
public Integer getDead() {
return dead;
}
public void setDead(Integer dead) {
this.dead = dead;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public Date getInputDate() {
return inputDate;
}
public void setInputDate(Date inputDate) {
this.inputDate = inputDate;
}
}
model:累计疫情数据
package com.ycu.epidemic.bean;
public class EpidemicDetailInfo extends EpidemicInfo {
private String provinceName;
//累计的:确诊,疑似。。。
private Integer affirmedTotal,suspectedTotal,curedTotal,isolatedTotal,deadTotal;
public String getProvinceName() {
return provinceName;
}
public void setProvinceName(String provinceName) {
this.provinceName = provinceName;
}
public Integer getAffirmedTotal() {
return affirmedTotal;
}
public void setAffirmedTotal(Integer affirmedTotal) {
this.affirmedTotal = affirmedTotal;
}
public Integer getSuspectedTotal() {
return suspectedTotal;
}
public void setSuspectedTotal(Integer suspectedTotal) {
this.suspectedTotal = suspectedTotal;
}
public Integer getCuredTotal() {
return curedTotal;
}
public void setCuredTotal(Integer curedTotal) {
this.curedTotal = curedTotal;
}
public Integer getIsolatedTotal() {
return isolatedTotal;
}
public void setIsolatedTotal(Integer isolatedTotal) {
this.isolatedTotal = isolatedTotal;
}
public Integer getDeadTotal() {
return deadTotal;
}
public void setDeadTotal(Integer deadTotal) {
this.deadTotal = deadTotal;
}
}
model:每日疫情数据
package com.ycu.epidemic.bean;
import java.util.List;
public class DailyEpidemicInfo {
private String date;
private List<EpidemicInfo> array;//对应多个省疫情
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public List<EpidemicInfo> getArray() {
return array;
}
public void setArray(List<EpidemicInfo> array) {
this.array = array;
}
}
model:ajax异步请求,封装前台数据(json)
package com.ycu.epidemic.bean;
public class AjaxResponseInfo<T> {
private int code;//0:正常,其它不正常
private String msg;
private T data;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
日期转换类:
package com.ycu.epidemic.common;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
@Component
public class DateConverter implements Converter<String,Date> {
private SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd");
public Date convert(String s){
if(s == null || s.length()==0){
return null;
}
Date date = null;
try {
date = sdf.parse(s);
}catch (ParseException e) {
e.printStackTrace();
System.out.println("转换提交的参数"+s+"为日期值时出错:"+e.getMessage());
}
return date;
}
}
Controller控制器:
package com.ycu.epidemic.controller;
import com.ycu.epidemic.bean.*;
import com.ycu.epidemic.service.EpidemicService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpSession;
import java.util.List;
@Controller
@RequestMapping("/epidemicData")
public class EpidemicController {
@Autowired
private EpidemicService epidemicService;
@PostMapping("/ajax/input")
@ResponseBody
public AjaxResponseInfo inputData(@RequestBody DailyEpidemicInfo dailyEpidemicInfo, HttpSession session){
AjaxResponseInfo responseInfo = new AjaxResponseInfo();
UserInfo user = (UserInfo) session.getAttribute("loginUser");
if (user == null){
responseInfo.setCode(-2);
responseInfo.setMsg("您没有登录");
}else {
/**
* 录入每日疫情数据
* @Param dailyEpidemicInfo 对前台数据封装
* @Param session 取到当前用户
* @Author:lijinhua
* @Date:2020/7/12
*/
List<ProvinceInfo> list = epidemicService.saveData(dailyEpidemicInfo,user.getUserId());
responseInfo.setData(list);
}
return responseInfo;
}
@GetMapping("/ajax/lastestData")
@ResponseBody
public AjaxResponseInfo findLastestData(){
/**
* 查最近的数据(累计)
* @Param
* @Author:lijinhua
* @Date:2020/7/12
*/
AjaxResponseInfo ajaxResponseInfo = new AjaxResponseInfo();
List<EpidemicDetailInfo> list = epidemicService.findLastestData();
ajaxResponseInfo.setData(list);//转成json串
// System.out.println(ajaxResponseInfo.getData());
return ajaxResponseInfo;
}
}
package com.ycu.epidemic.controller;
import com.ycu.epidemic.bean.AjaxResponseInfo;
import com.ycu.epidemic.bean.ProvinceInfo;
import com.ycu.epidemic.service.ProvinceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
@RequestMapping("/province")
public class ProvinceController {
@Autowired
private ProvinceService provinceService;
@GetMapping("/ajax/noDataList")
@ResponseBody
public AjaxResponseInfo noDataProvinceList(String date){
List<ProvinceInfo> list = null;
AjaxResponseInfo<List<ProvinceInfo>> responseInfo = new AjaxResponseInfo<>();
if (!StringUtils.isEmpty(date)){
list = provinceService.findNoDataProvince(date);//调用业务
responseInfo.setData(list);
}
else
{
responseInfo.setCode(-1);
responseInfo.setMsg("参数不足");
}
return responseInfo;
}
}
package com.ycu.epidemic.controller;
import com.ycu.epidemic.bean.UserInfo;
import com.ycu.epidemic.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
/**
*
* @Param user 封装前台请求数据
* @Author:lijinhua
* @Date:2020/7/12
*/
@RequestMapping("/login")
public String login(UserInfo user, Model model, HttpSession session) {
UserInfo u = userService.findByAccount(user);
if (u == null) {
model.addAttribute("msg", "账号或密码不正确");
return "login";
}
if (u.getPassword().equals(user.getPassword())) {
//登录成功
session.setAttribute("loginUser", u);
return "redirect:/main.jsp";
}
session.setAttribute("msg", "账号或密码不正确");
return "login";
}
//退出登录
@RequestMapping("/logout")
public String logout(HttpSession session){
session.invalidate();
return "redirect:/epidemic.jsp";
}
}
Mapper层:
疫情Mapper层(保存已录入的数据;查询到累计的疫情数据)
package com.ycu.epidemic.mapper;
import com.ycu.epidemic.bean.EpidemicDetailInfo;
import com.ycu.epidemic.bean.EpidemicInfo;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
@Mapper
public interface EpidemicMapper {
@Insert(value = "INSERT INTO epidemics(province_id,data_year,data_month,data_day,affirmed,suspected,isolated,dead,cured,user_id,input_date)" +
"VALUES(#{provinceId},#{dataYear},#{dataMonth},#{dataDay},#{affirmed},#{suspected},#{isolated},#{dead},#{cured},#{userId},#{inputDate})")
public int saveInfo(EpidemicInfo epidemicInfo);
@Select(value="SELECT e1.province_id,temp.province_name,e1.data_year,e1.data_month,e1.data_day," +
" temp.affirmed_total,temp.suspected_total,temp.isolated_total,temp.cured_total,temp.dead_total" +
" FROM epidemics e1 RIGHT OUTER JOIN(" +
" SELECT e. province_id,p.province_name,SUM(e.affirmed) affirmed_total," +
" SUM(e.suspected) suspected_total,SUM(e.isolated) isolated_total," +
" SUM(e.cured) cured_total,SUM(e.dead) dead_total" +
" FROM epidemics e RIGHT OUTER JOIN provinces p ON e.province_id = p.province_id" +
" GROUP BY e.province_id,p.province_name" +
" ) temp ON e1.province_id = temp.province_id" +
" WHERE e1.data_year=#{year} AND e1.data_month =#{month} AND e1.data_day =#{day}")
public List<EpidemicDetailInfo> findLastestData(Map<String,Short> condition);
}
省份mapper层(查找还未录入数据的省份)
package com.ycu.epidemic.mapper;
import com.ycu.epidemic.bean.ProvinceInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface ProvinceMapper {
@Select(value = "SELECT p.province_id,p.province_name,p.province_py FROM provinces p" +
" WHERE (p.del_flag IS NULL OR p.del_flag = 0)" +
" AND p.province_id NOT IN(" +
" SELECT e.province_id FROM epidemics e" +
" WHERE e.data_year=#{arg0} AND e.data_month=#{arg1} AND e.data_day =#{arg2}" +
" ) ORDER BY p.province_id LIMIT 0,6")
public List<ProvinceInfo> findNoDataProvince(short year,short month,short day);
}
管理员登录验证Mapper
package com.ycu.epidemic.mapper;
import com.ycu.epidemic.bean.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface UserMapper {
@Select("SELECT * from users where account=#{account}")
public UserInfo findByAccount(UserInfo user);
}
Service层:
package com.ycu.epidemic.service;
import com.ycu.epidemic.bean.DailyEpidemicInfo;
import com.ycu.epidemic.bean.EpidemicDetailInfo;
import com.ycu.epidemic.bean.EpidemicInfo;
import com.ycu.epidemic.bean.ProvinceInfo;
import java.util.List;
public interface EpidemicService {
//返回还未录入的省份
public List<ProvinceInfo> saveData(DailyEpidemicInfo dailyEpidemicInfo,Integer userId);
public List<EpidemicDetailInfo> findLastestData();
}
package com.ycu.epidemic.service;
import com.ycu.epidemic.bean.DailyEpidemicInfo;
import com.ycu.epidemic.bean.EpidemicDetailInfo;
import com.ycu.epidemic.bean.EpidemicInfo;
import com.ycu.epidemic.bean.ProvinceInfo;
import com.ycu.epidemic.common.DateConverter;
import com.ycu.epidemic.mapper.EpidemicMapper;
import com.ycu.epidemic.mapper.ProvinceMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@Service
public class EpidemicServiceImp implements EpidemicService{
@Autowired
private EpidemicMapper epidemicMapper;
@Autowired
private ProvinceMapper provinceMapper;
@Override
public List<ProvinceInfo> saveData(DailyEpidemicInfo dailyEpidemicInfo, Integer userId) {
/**
* 保存每日疫情数据
* @Param dailyEpidemicInfo 每日疫情数据
* @Param userId 录入用户ID
* @Author:lijinhua
* @Date:2020/7/12
*/
// Date curDate = new Date();
String curDate = "2020-7-12";//用上面的new Date实现保存每日数据
String [] arr = dailyEpidemicInfo.getDate().split("-");
short year=2020,month=7,day=12;
// year = Short.parseShort(arr[0]);
// month = Short.parseShort(arr[1]);
// day = Short.parseShort(arr[2]);
DateConverter dateConverter = new DateConverter();
Date curDte = dateConverter.convert(curDate);
for (EpidemicInfo epidemicInfo:dailyEpidemicInfo.getArray()) {
epidemicInfo.setUserId(userId);
epidemicInfo.setInputDate(curDte);
epidemicInfo.setDataYear(year);
epidemicInfo.setDataMonth(month);
epidemicInfo.setDataDay(day);
epidemicMapper.saveInfo(epidemicInfo);
}
return provinceMapper.findNoDataProvince(year,month,day);
}
@Override
public List<EpidemicDetailInfo> findLastestData() {
/**
* 查询每个省份累计疫情
* @Param
* @Author:lijinhua
* @Date:2020/7/12
*/
Calendar calendar = new GregorianCalendar();
short year=2020,month=7,day=12;//注:日期此处写死了
// year = (short) calendar.get(Calendar.YEAR);
// month = (short) (calendar.get(Calendar.MONTH)+1);//0~11
// day = (short) calendar.get(Calendar.DATE);
Map<String,Short> condition = new HashMap<>();
condition.put("year",year);
condition.put("month",month);
condition.put("day",day);
return epidemicMapper.findLastestData(condition);
}
}
package com.ycu.epidemic.service;
import com.ycu.epidemic.bean.ProvinceInfo;
import java.util.List;
public interface ProvinceService {
public List<ProvinceInfo> findNoDataProvince(String date);
}
package com.ycu.epidemic.service;
import com.ycu.epidemic.bean.ProvinceInfo;
import com.ycu.epidemic.mapper.ProvinceMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ProvinceServiceImp implements ProvinceService{
@Autowired
private ProvinceMapper provinceMapper;
@Override
public List<ProvinceInfo> findNoDataProvince(String date) {
/**
*查询还没录入数据的省份
* @Param date
* @Author:lijinhua
* @Date:2020/7/12
*/
List<ProvinceInfo> list = null;
short year =0,month=0,day=0;
String [] arr = date.split("-");
if (arr.length >=3){
year = Short.parseShort(arr[0]);
month = Short.parseShort(arr[1]);
day = Short.parseShort(arr[2]);
list = provinceMapper.findNoDataProvince(year,month,day);
}
return list;
}
}
package com.ycu.epidemic.service;
import com.ycu.epidemic.bean.UserInfo;
public interface UserService {
public UserInfo findByAccount(UserInfo user);
}
package com.ycu.epidemic.service;
import com.sun.deploy.security.BadCertificateDialog;
import com.ycu.epidemic.bean.UserInfo;
import com.ycu.epidemic.mapper.UserMapper;
import org.apache.ibatis.annotations.Mapper;
import org.aspectj.apache.bcel.generic.FADD;
import org.aspectj.apache.bcel.generic.IADD;
import org.aspectj.apache.bcel.generic.LADD;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class UserServiceImp implements UserService{
@Autowired
private UserMapper userMapper;
@Override
public UserInfo findByAccount(UserInfo user) {
/**
* 通过账号查询用户
* @Param user
* @Author:lijinhua
* @Date:2020/7/12
*/
return userMapper.findByAccount(user);
}
}
前端使用echarts展示:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>疫情信息</title>
<style type="text/css">
#body1 {
background-color: #10AEB5;
}
</style>
<!-- Bootstrap -->
<link href="${pageContext.request.contextPath}/bootstrap/css/bootstrap.css" rel="stylesheet">
<!--[if lt IE 9]>
<script src="${pageContext.request.contextPath}/bootstrap/js/html5shiv.js"></script>
<script src="${pageContext.request.contextPath}/bootstrap/js/respond.js"></script>
<![endif]-->
</head>
<body id="body1">
<div class="container">
<div class="row">
<div class="col-md-12" style="background-color:#fff;margin-bottom: 5px;">
<div id="myMap" style="height: 600px;"></div>
</div>
</div>
<div class="row" style="height: 400px; overflow: auto;">
<div class="col-md-16" style="background-color:#fff;">
<table class="table table-hover table-bordered table-striped">
<thead>
<tr>
<th>省份</th>
<th>确诊人数</th>
<th>疑似人数</th>
<th>隔离人数</th>
<th>治愈人数</th>
<th>死亡人数</th>
</tr>
</thead>
<tbody id="tbody1">
</tbody>
</table>
</div>
</div>
<div class="row" style="margin-top: 5px;">
<div class="col-md-12">
<div id="mycharts" style="height: 500px;border: 1px solid gray;background-color:#fff;"></div>
</div>
</div>
<div class="row">
<a href="login.jsp">登录</a>
</div>
</div>
<script src="${pageContext.request.contextPath}/bootstrap/js/jquery-1.11.2.js"></script>
<script src="${pageContext.request.contextPath}/bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/echarts/echarts.js"></script>
<script type="text/javascript">
$(function () {
//获取当前日期
var myDate = new Date("2020-7-12");//参数去掉即获取当前日期!!!!(日期此处写死了)
var y = myDate.getFullYear();
var m = myDate.getMonth()+1;
var d = myDate.getDate();
var nowDate = y+"-"+m+"-"+d;
//定义个用来给表格中装载数据的函数
var fillToTable = function (epidemics) {
var tbody1 = $("#tbody1");
tbody1.empty();
$.each(epidemics, function (index, epidemic) {
var tr = $("<tr>");
var td = $("<td>");
td.text(epidemic.provinceName);
tr.append(td);
td = $("<td>");
td.html("" + epidemic.affirmedTotal);
tr.append(td);
td = $("<td>");
td.html("" + epidemic.suspectedTotal);
tr.append(td);
td = $("<td>");
td.html("" + epidemic.isolatedTotal);
tr.append(td);
td = $("<td>");
td.html("" + epidemic.curedTotal);
tr.append(td);
td = $("<td>");
td.html("" + epidemic.deadTotal);
tr.append(td);
tbody1.append(tr);
});
};
//初始化图表
var myCharts = echarts.init($("#mycharts").get(0));
var option = {
title: {
text: "当日全国疫情柱状图",
subtext: nowDate
},
grid: {
show: true
},
legend: {
data: [nowDate]
}
,
tooltip: {
trigger: 'axis'
}
,
xAxis: {
data: []
}
,
yAxis: {}
,
series: [{
type: 'bar',
name: nowDate,
data: []
}]
};
myCharts.setOption(option);
//将服务器端返回的数据设置到图表上
var fillToChart = function (epidemics) {
var provinceNames = [];
var affirmedTotal = [];
$.each(epidemics, function (index, epidemic) {
provinceNames.push(epidemic.provinceName);
affirmedTotal.push(epidemic.affirmedTotal);
});
myCharts.setOption({
xAxis: {
data: provinceNames
},
series: [{
data: affirmedTotal
}]
});
};
var myMap = echarts.init($("#myMap").get(0));
//获取地图json数据,显示中国地图
$.getJSON("${pageContext.request.contextPath}/echarts/china.json", {}, function (chinaJson) {
echarts.registerMap("china", chinaJson);
var option = {
title: {
text: nowDate+" 全国疫情分布图"
},
legend: {
data: ["累计确诊人数"]
},
tooltip: {},
visualMap: {
type: 'piecewise',
min: 0,
max: 10000,
splitList:
[{
start: 1000,
end: 10000
}, {
start: 500,
end: 1000
}, {
start: 100,
end: 500
}, {
start: 0,
end: 100
}],
textStyle:
{
color: 'orange'
}
},
series: [
{
name: '累计确诊人数',
type: 'map',
mapType: 'china',
data: []
}
]
};
myMap.setOption(option);
}, "json");
//将数据填充到地图中
var fillToMap = function (epidemics) {
var data = [];
$.each(epidemics, function (index, epidemic) {
var obj = {};
obj.name = epidemic.provinceName;
obj.value = epidemic.affirmedTotal;
data.push(obj);
});
myMap.setOption({
series: [
{
name: '累计确诊人数',
type: 'map',
mapType: 'china',
data: data
}
]
});
};
//发送请求获取最新疫情数据
$.get("${pageContext.request.contextPath}/epidemicData/ajax/lastestData", {}, function (resp) {
if (resp.code < 0) {
alert(resp.msg);
} else {
fillToTable(resp.data);
fillToChart(resp.data);
fillToMap(resp.data);
}
}, "json");
});
</script>
</body>
</html>
管理员登录页面:
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2020/3/12
Time: 21:16
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>登录界面</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/bootstrap/css/bootstrap.css">
</head>
<body style="background-color: #10aeb5">
<div class="modal-dialog" style="margin-top: 20%">
<form action="${pageContext
.request.contextPath}/user/login" method="post" class="form-horizontal">
<div class="modal-content">
<div class="modal-header" style="text-align: center" ;>
<h4>登录</h4>
</div>
<div class="modal-body" id="modal-body">
<div class="form-group" style="margin-left: 20px;margin-right:20px">
<input type="text" class="form-control" placeholder="请输入账号" name="account" autocomplete="off" >
</div>
<div class="form-group" style="margin-left: 20px;margin-right:20px">
<input type="text" class="form-control" placeholder="请输入密码" name="password" autocomplete="off" >
</div>
</div>
<div class="modal-footer" id="modal-footer">
<div class="form-group" style="margin-left: 20px;margin-right: 20px; ">
<button type="submit" class="btn btn-primary form-control">登录</button>
</div>
</div>
<c:if test="${not empty msg}">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="alert alert-danger alert-dismissable" >
<button type="button" class="close" data-dismiss="alert"><span>x</span></button>
${msg}
</div>
</div>
</div>
</c:if>
</div>
</form>
</div>
<script src="${pageContext.request.contextPath}/bootstrap/js/jquery-1.11.2.js"></script>
<script src="${pageContext.request.contextPath}/bootstrap/js/bootstrap.js"></script>
</body>
</html>
录入数据页面:
<%--
Created by IntelliJ IDEA.
User: lijinhua
Date: 2020/7/10
Time: 10:56
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>疫情数据统计系统后台管理</title>
<jsp:include page="template/bootstrap_common.jsp"></jsp:include>
</head>
<body>
<script src="${pageContext.request.contextPath}/bootstrap/js/jquery-1.11.2.js"></script>
<script src="${pageContext.request.contextPath}/bootstrap/js/bootstrap.js"></script>
<div class="container">
<%-- 头部--%>
<jsp:include page="template/top.jsp"></jsp:include>
<div class="row">
<%-- 左边菜单--%>
<div class="col-md-3">
<jsp:include page="template/menu.jsp"></jsp:include>
</div>
<div class="col-md-9">
<%--右边--%>
<ul class="breadcrumb">
<li><a href="${pageContext.request.contextPath}/main.jsp">主页</a></li>
<li>后台主页</li>
</ul>
欢迎使用疫情数据统计系统
</div>
</div>
</div>
</body>
</html>