Javaweb以SSM框架开发的疫情管理系统
该系统主要的功能实现了登录注册,人员信息登记,体温模拟监测,查看人员信息详情,
一、项目开发前期工作
1.1项目所需开发工具及其所涉技术
该项目我所使用的开发工具有jdk8.0 、eclipse、Tomcat7.0版本的服务器、前端页面开发的话我采用的是Visual Studio Code,采用的数据库是Mysql 5.5.7版本,整体项目开发所设技术在前端方向我采用了layui框架该项目的特点体现在体积轻盈,整体带给人的感受的话较为简洁。另外还采用了echarts可视化开发,实时向用户展示疫情动态数据。前后台交互的话我采用的是Ajax进行的,实现了局部数据刷新从而减轻了项目负担。后台采用的SSM框架式开发的建议在采用SSM开发时可以先好maven,因为这样可以大量减少后期由jar架包缺失和架包冲突而带来的报错。SSM框架即包括mybatis、spring、SpringMvc。其设计模式我采用的是MVC模式来进行设计的其中包括模型层简称M、视图层V,控制层C。
1.2创建动态web项目
创建的项目在这里我就直接以截图的方式来进行展示了哈!对于初学者来说可以问问度娘。
二、数据库表的设计
三、前端页面展示
后台逻辑代码编写
实现两个类的封装类即mode层:管理员类
下面展示一些 内联代码片
。
管理员类:
package com.lyt.model;
public class Ad {
private int id;
private String administrators;
private String password;
@Override
public String toString() {
return "Ad [id=" + id + ", administrators=" + administrators + ", password=" + password + "]";
}
public Ad(int id, String administrators, String password) {
super();
this.id = id;
this.administrators = administrators;
this.password = password;
}
public Ad() {
super();
// TODO Auto-generated constructor stub
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAdministrators() {
return administrators;
}
public void setAdministrators(String administrators) {
this.administrators = administrators;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
登记人员类:
package com.lyt.model;
/**
* 用户
* @author
*
*/
public class Personnel {
private int id;
private String aname;
private String sex;
private String age;
private String phone;
private String ad;
private String temperature;
private String datetime;
private String state;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAname() {
return aname;
}
public void setAname(String aname) {
this.aname = aname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAd() {
return ad;
}
public void setAd(String ad) {
this.ad = ad;
}
public String getTemperature() {
return temperature;
}
public void setTemperature(String temperature) {
this.temperature = temperature;
}
public String getDatetime() {
return datetime;
}
public void setDatetime(String datetime) {
this.datetime = datetime;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
@Override
public String toString() {
return "Personnel [id=" + id + ", aname=" + aname + ", sex=" + sex + ", age=" + age + ", phone=" + phone
+ ", ad=" + ad + ", temperature=" + temperature + ", datetime=" + datetime + ", state=" + state + "]";
}
public Personnel(int id, String aname, String sex, String age, String phone, String ad, String temperature,
String datetime, String state) {
super();
this.id = id;
this.aname = aname;
this.sex = sex;
this.age = age;
this.phone = phone;
this.ad = ad;
this.temperature = temperature;
this.datetime = datetime;
this.state = state;
}
public Personnel() {
super();
// TODO Auto-generated constructor stub
}
}
mapper层
package com.lyt.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.lyt.model.Ad;
import com.lyt.model.Personnel;
public interface PersonnelMapper {
List<Personnel> selectId(Ad ad );
//用户登录
Ad selectad(@Param("administrators") String administrators ,@Param("password") String password);
//用户登记
public int insertA(Personnel personnel);
void deleteA(int id);
List<Personnel> selects(@Param("state") String state );
List <Personnel> Sid(@Param("id") int id);
}
mapper配置sql语句模块及mybatis
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
namespace:必须与对应的接口全类名一致 PersonnelMapper.java
id :必须与对应接口的某个对应的方法名一致即必须要和PersonnelMapper.java接口中的方法同名。
-->
<mapper namespace="com.lyt.mapper.PersonnelMapper">
<!--
<insert id="save" parameterType="Personnel">
insert into lkx2(Personnelname,Cname,wx,qq,phone,zt) values(#{Personnelname},#{Cname},#{wx},#{qq},#{phone},#{zt})
</insert>
<update id="update" parameterType="Personnel">
update lkx2 set Personnelname=#{Personnelname},Cname=#{Cname},wx =#{wx},qq =#{qq},phone=#{phone},zt =#{zt}where id=#{id}
</update>
<delete id="deleteById" parameterType="Personnel">
delete from lkx2 where id=#{id}
</delete>
mybsits_config中配置的alias类别名,也可直接配置resultType为类路径
<select id="findByPersonnel" resultType="Personnel">
select * from lkx2 where Personnelname=#{Personnelname}
</select>
<select id="findAll" resultType="Personnel">
select * from lkx2
</select> -->
<select id="selectId" resultType="Personnel">
select *from personnel
</select>
<select id="selectad" resultType="Ad">
select *from admi1 where administrators=#{administrators} and password=#{password}
</select>
<insert id="insertA" parameterType="Personnel">
insert into personnel(aname,sex,age,phone,ad,temperature,datetime,state) values(#{aname},#{sex},#{age},#{phone},#{ad},#{temperature},#{datetime},#{state})
</insert>
<select id="selects" resultType="Personnel">
select *from personnel where state=#{state}
</select>
<select id="Sid" resultType="Personnel" >
select *from personnel where id=#{id}
</select>
<update id="UpdaSid" >
update personnel set temperature = #{temperature} where id = #{id}
</update>
</mapper>
实现service接口
package com.lyt.service;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import com.lyt.model.Ad;
import com.lyt.model.Personnel;
@Service
public interface PersonneService {
List<Personnel> selectId(Ad ad);//实现查询登记人员service层接口
Ad Adlogin(String administrators,String password);//管理员登录接口
public int insertA(Personnel personnel);//实现人员登记方法
List<Personnel> selects(String state);//查询登记人员健康码状态接口
List<Personnel>Sid(int id);
}
接口实现类:
package com.lyt.service;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lyt.mapper.PersonnelMapper;
import com.lyt.model.Ad;
import com.lyt.model.Personnel;
import com.lyt.service.PersonneService;
@Service
@Transactional
// 此处不再进行创建SqlSession和提交事务,都已交由spring去管理了。
public class PersonneServiceImpl implements PersonneService {
@Resource
private PersonnelMapper mapper;
@Override
public List<Personnel> selectId(Ad ad) {
// TODO Auto-generated method stub
List<Personnel> count=mapper.selectId(ad);
return count;
}
@Override
public Ad Adlogin(String administrators, String password) {
// TODO Auto-generated method stub
//System.out.println(administrators+password);
return mapper.selectad(administrators, password);
}
@Override
public int insertA(Personnel personnel) {
// TODO Auto-generated method stub
return mapper.insertA(personnel);
}
@Override
public List<Personnel> selects(String state) {
// TODO Auto-generated method stub
return mapper.selects(state);
}
@Override
public List<Personnel> Sid(int id) {
return mapper.Sid(id);
}
}
控制层代码展示:
package com.lyt.Controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Random;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.ibatis.annotations.Param;
import org.apache.logging.log4j.core.tools.picocli.CommandLine.Parameters;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.lyt.model.Ad;
import com.lyt.model.Personnel;
import com.lyt.service.PersonneService;
import com.mysql.cj.Session;
import com.sun.javafx.sg.prism.NGShape.Mode;
import com.sun.org.glassfish.gmbal.ParameterNames;
@Controller
public class PersonneController {
@Autowired
private PersonneService personneService;
/**
* 获取所有用户列表
* @param request
* @param model1
* @return
* @throws UnsupportedEncodingException
*/
@RequestMapping("/Login")//该方法实现登录的方法
public ModelAndView AdLogin( Model model, HttpServletRequest request, HttpServletResponse response)throws IOException {
ModelAndView mv = new ModelAndView();
String Admi = String.valueOf(request.getParameter("administrators"));//将查询到的管理员账号赋给Admin这个对象;
String password1 = String.valueOf(request.getParameter("password"));
Ad ad =personneService.Adlogin(Admi, password1);//调用service层接口方法
response.setContentType("text/html; charset=UTF-8");//进行字符编码转译
//SPrintWriter out = response.getWriter();
if (ad == null) {//进行数据判断
request.setAttribute("us-ername", ad);
mv.setViewName("/Login");
} else if (ad.getPassword().equals(password1)) {
mv.setViewName("/indexs");
} else {
request.setAttribute("username", ad);
mv.setViewName("/Login");
}
return mv;
}
@RequestMapping("/tips2") //新增功能方法
public String save(Personnel personnel, HttpServletRequest req) throws UnsupportedEncodingException{
int in= personneService.insertA(personnel);//调用service层的插入方法
//System.out.println("添加成功");
return "redirect:/allUser";//将数据转发到主页面
}
@RequestMapping("/allUser")
public String AllPersonne(Ad ad ,HttpServletRequest request, Model model1){
List<Personnel> personnel = personneService.selectId(ad);
model1.addAttribute("userList", personnel);
return "/allUser";
}
@RequestMapping("/geli")//判断健康码状态若健康码为红黄两种颜色则拿开放到隔离模块进行隔离观察实施实时体温监测
public String State(Personnel personnel,String state ,Model model,Ad ad){
List<Personnel> user = personneService.selectId(ad);
//System.out.println(user);
personnel = user.get(1);
state = personnel.getState();
List<Personnel>St=personneService.selects(state);
model.addAttribute("Sat", St );
//System.out.println(St);
return "/geli";
}
@RequestMapping("/Xq/{id}")//查询人员详细信息
public String chankan(@PathVariable int id ,HttpServletRequest request, Model model1){
//request.setAttribute("Id", id);
//System.out.println(id);
List<Personnel> chankan = personneService.Sid(id);//调用service接口方法通过ID
System.out.println(chankan);
model1.addAttribute("Ck", chankan);
return "/chakan";
}
@RequestMapping("/shuji")
public String testRandom(Personnel personnel,String state,Ad ad,Model model ){
List<Personnel> count=personneService.selectId(ad);
state = count.get(1).getState();
List<Personnel> num=personneService.selects(state);
System.out.println(num);
int min=35;
int max =42;
for (int i=0;i<num.size();i++){
Random r=new Random();
String s= (r.nextInt(max-min)+min)+"";
num.get(i).setTemperature(s);
}
model.addAttribute("W", num);
return "/geli";
}
}
总结:
整个项目的设计与开发花费了将近一个星期的时间,在这次小项目的实现中还是使自己收获了蛮多的,之前有些东西一直是懵懵懂懂的,以为这样就够了,都是真正用起来的时候才发现其难度。理论固然重要但是实操占据大臂江山。在以后的学习以及工作中我都会在实操中进行总结。以上项目如若各位有需求请在下方留言,可以为大家进行答疑,帮助你们自身也可得到提高,期待你我的合作。