Mybatis+SpringMVC的简单学生管理系统(提供数据库设计)|登录、验证、用户等级不同功能不同、留言、增删改查等

功能介绍

  1. 登录验证,(同时ajax的异步验证)
  2. 老师和学生登录后有不同的界面
  3. 学生可以给老师留言,并查看自己留言的状态
  4. 老师可以对学生进行增删改查,对留言进行处理

一、包结构

在这里插入图片描述
在这里插入图片描述
导入的架包
在这里插入图片描述

后台各个层的功能

  1. User:用户类、Message:留言信息类、MessageVo:过度类为实现特定功能单另的类
  2. BaseDao: Mybatis特性抽取的封装类
  3. UserDao: dao层的接口类;MessageDao:dao层的接口类
  4. UserMapper.xml 和 MessageMapper.xml是sql语句的配置类
  5. UserService和MessageService 是service层的接口类;UserServiceImpl 和 MessageServiceImpl是service的实现类
  6. mybatis-config.xml Mybatis的配置文件;springmvc.xml springmvc的配置文件

前端页面的功能

  1. Login.jsp登录页面
  2. addUser.jsp 添加学生页面
  3. doUpdate.jsp学生信息的修改页面
  4. userInfo.jsp老师登录进去的页面
  5. student.jsp学生信息显示页面
  6. doMessage.jsp 老师页面的留言区
  7. leaveMsg.jsp学生留言页面
  8. error.jsp错误页面,当发生输入错误时,自动跳到错误页面

二、代码区

后台代码

一、entity包

  1. user.java
package entity;
public class User {
	private int id;
	private String name;
	private int age;
	private String address;
	private int tele;
	private String password;
	private int level;
	public int getLevel() {
		return level;
	}
	public void setLevel(int level) {
		this.level = level;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public int getTele() {
		return tele;
	}
	public void setTele(int tele) {
		this.tele = tele;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}

  1. Message.java
package entity;

import java.util.Date;

public class Message {
	private int mid,sidFrom,status;
	private String content;
	private Date createdTime,updateTime;
	public int getMid() {
		return mid;
	}
	public void setMid(int mid) {
		this.mid = mid;
	}
	public int getSidFrom() {
		return sidFrom;
	}
	public void setSidFrom(int sidFrom) {
		this.sidFrom = sidFrom;
	}
	public int getStatus() {
		return status;
	}
	public void setStatus(int status) {
		this.status = status;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public Date getCreatedTime() {
		return createdTime;
	}
	public void setCreatedTime(Date createdTime) {
		this.createdTime = createdTime;
	}
	public Date getUpdateTime() {
		return updateTime;
	}
	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
}

  1. MessageVo.java
package entity;

public class MessageVo {
	private int mid;
	private String sname,content,ctime,utime;
	public int getMid() {
		return mid;
	}
	public void setMid(int mid) {
		this.mid = mid;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getCtime() {
		return ctime;
	}
	public void setCtime(String ctime) {
		this.ctime = ctime;
	}
	public String getUtime() {
		return utime;
	}
	public void setUtime(String utime) {
		this.utime = utime;
	}
}	

二、dao包

  1. BaseDao.java
package dao;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
//增删改需要自动提交,查询不需要
public class BaseDao {
	
	public static SqlSessionFactory factory=null;
	
	public static void getFactory() {
	//mybatis的配置文件的路径
		String resource = "mybatis-config.xml";
		InputStream inputStream;
		try {
			inputStream = Resources.getResourceAsStream(resource);
			factory=new SqlSessionFactoryBuilder().build(inputStream);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
	public static SqlSession getSession() {
		if (factory==null) {
			getFactory();
		}
		SqlSession session=factory.openSession();
		return session;
	}

	public static SqlSession getSession(boolean isAutoCommit) {
		if (factory==null) {
			getFactory();
		}
		SqlSession session=factory.openSession(isAutoCommit);
		return session;
	}
}

  1. UesrDao.java
package dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import entity.User;

public interface UserDao {
	//获取所有学生信息
	List<User> getUser();
	//根据id获取个人用户信息
	User getUserById(int id);
	
	//修改学生信息
	int modify(
			@Param("id")String id,
			@Param("name")String name,
			@Param("age")String age,
			@Param("address")String address,
			@Param("tele")String tele);
	//添加学生
	int addUser(User user);
	
	//删除学生
	int delUserById(int id);
}

  1. MessageDao.java
package dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import entity.Message;

public interface MessageDao {
	//将留言传到数据库
	int sendMsg(@Param("id")int sidFrom,@Param("content")String content);
	//根据status来获取留言信息
	List<Message> getMessage(Integer[] statuses);
	//根据mid处理留言状态
	int deal(@Param("mid")int mid,@Param("status")int status);
	//获取所有留言信息
	List<Message> getAllMessage();
	
	//读留言
	int readMessage();
	
	//学生获取自己的留言信息
	List<Message> getMessageById(int id);
}

  1. UserMapper.xml
<?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">
<mapper namespace="dao.UserDao">
	<!-- 根据id获取个人信息 -->
	<select id="getUserById" resultMap="user">
		select * from user where id  = #{id}
	</select>
	<!--获取所有人的信息  -->
	<select id="getUser" resultMap="user">
		select * from user
	</select>
	<!--修改  -->
	<update id="modify">
		update user 
		<trim prefix="set" suffixOverrides="," suffix="where id = #{id}">
			<if test="name != null and name != ''" >
				name=#{name},
			</if>
			<if test="age != null and age != ''">
				age = #{age},
			</if>
			<if test="address != null and address != ''">
				address = #{address},
			</if>
			<if test="tele != null and tele != ''">
				tele =#{tele},
			</if>
		</trim>
	</update>
	<!--删除  -->
	<delete id="delUserById">
		delete from user where id =#{id}
	</delete>
	<!--添加  -->
	<insert id="addUser">
		insert into user(name,age,address,tele,password) values(#{name},#{age},#{address},#{tele},#{password})
	</insert>
	<resultMap type="entity.User" id="user">
		<result property="id" column="id"/>
		<result property="name" column="name"/>
		<result property="age" column="age"/>
		<result property="address" column="address"/>
		<result property="tele" column="tele"/>
		<result property="level" column="levle"/>
	</resultMap>
</mapper>
  1. MessageMapper.xml
<?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">
<mapper namespace="dao.MessageDao">
	<select id="getMessageById" resultMap="message">
		select * from user u  
		left join message m on u.id = m.sid_from where id = #{id}
	</select>	
	
	<!-- 获取所有留言信息 -->
	<select id="getAllMessage" resultMap="message">
		select * from message
	</select>
	<!--将留言传到数据库  -->
	<insert id="sendMsg">
		insert into message(sid_from,content) values(#{id},#{content}) 
	</insert>
	<!--获取留言信息(通过不同留言状态)  -->
	<select id="getMessage" resultMap="message">
		select * from message where `status` in 
		<foreach collection="array" open="(" close=")" separator="," item="status">
			#{status}
		</foreach>
		 order by created_Time desc
	</select>
	<!--对留言信息的处理  -->
	<update id="deal">
		update message set `status`=#{status},updated_time=SYSDATE() where mid=#{mid}
	</update>
	<!--已读信息  -->
	<update id="readMessage">
		update message set `status` = 1 where `status` = 0
	</update>
	<resultMap type="entity.Message" id="message">
		<result property="mid" column="mid"/>
		<result property="sidFrom" column="sid_from"/>
		<result property="content" column="content"/>
		<result property="createdTime" column="created_Time"/>
		<result property="updateTime" column="updated_Time"/>
		<result property="status" column="status"/>
	</resultMap>
</mapper>

三、service包

  1. UserService.java
package service;

import java.util.List;

import entity.User;

public interface UserService {
	List<User> getUser();
	
	User getUserById(int id);
	
	boolean modify(String id,String name,String age,String address,String tele);
	
	boolean addUser(String name,int age,String address,int tele,String password);
	
	boolean delUserById(int id);
}

  1. UserServiceImpl.java
package service.impl;

import java.util.List;

import dao.BaseDao;
import dao.UserDao;
import entity.User;
import service.UserService;

public class UserServiceImpl implements UserService{

	@Override
	public List<User> getUser() {
		// TODO Auto-generated method stub
		return BaseDao.getSession().getMapper(UserDao.class).getUser();
	}

	@Override
	public User getUserById(int id) {
		// TODO Auto-generated method stub
		return BaseDao.getSession().getMapper(UserDao.class).getUserById(id);
	}

	@Override
	public boolean modify(String id,String name, String age, String address, String tele) {
		if (BaseDao.getSession(true).getMapper(UserDao.class).modify(id,name, age, address, tele)>0) {
			return true;
		}
		return false;
	}

	@Override
	public boolean addUser(String name, int age, String address, int tele,String password) {
		User user = new User();
		user.setAge(age);
		user.setName(name);
		user.setAddress(address);
		user.setTele(tele);
		user.setPassword(password);
		if (BaseDao.getSession(true).getMapper(UserDao.class).addUser(user)>0) {
			return true;
		}
		return false;
	}

	@Override
	public boolean delUserById(int id) {
		if (BaseDao.getSession(true).getMapper(UserDao.class).delUserById(id)>0) {
			return true;
		}
		return false;
	}

}

  1. MessageService.java
package service;

import java.util.List;

import entity.Message;
import entity.MessageVo;

public interface MessageService {
	boolean sendMsg(int sidFrom,String content);
	
	List<Message> getUnReadMsg();
	
	List<MessageVo> getUnDealedMsg();
	
	List<Message> getAgreeMsg();
	
	List<Message> getRefMsg();
	
	boolean deal(int mid,String type);
	
	List<Message> getAllMessage();
	//学生获取自己的留言信息
	List<Message> getMessageById(int id);
	
	//是否撤回
	boolean feedBack(int mid);
	
	//是否已读
	boolean readMessage();
}

  1. MessageServiceImpl.java
package service.impl;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import dao.BaseDao;
import dao.MessageDao;
import dao.UserDao;
import entity.Message;
import entity.MessageVo;
import entity.User;
import service.MessageService;

public class MessageServiceImpl implements MessageService{

	@Override
	public boolean sendMsg(int sidFrom, String content) {
		if (BaseDao.getSession(true).getMapper(MessageDao.class).sendMsg(sidFrom, content)>0) {
			return true;
		}
		return false;
	}

	@Override
	public List<Message> getUnReadMsg() {
		// TODO Auto-generated method stub
		Integer[] status = {0};
 		return BaseDao.getSession().getMapper(MessageDao.class).getMessage(status);
	}

	@Override
	public List<Message> getAgreeMsg() {
		// TODO Auto-generated method stub
		Integer[] status = {2};
		return BaseDao.getSession().getMapper(MessageDao.class).getMessage(status);
	}

	@Override
	public List<Message> getRefMsg() {
		// TODO Auto-generated method stub
		Integer[] status = {3};
 		return BaseDao.getSession().getMapper(MessageDao.class).getMessage(status);
	}
	
	@Override
	public boolean deal(int mid, String type) {
		// TODO Auto-generated method stub
		int status = 0;
		if (type.equals("agree")) {
			status = 2;
		}else if(type.equals("disagree")) {
			status = 3;
		}
		
		if (BaseDao.getSession(true).getMapper(MessageDao.class).deal(mid, status)>0) {
			return true;
		}
		return false;
	}

	@Override
	public List<MessageVo> getUnDealedMsg() {
		Integer[] status = {0,1};
		List<Message> mlist = BaseDao.getSession().getMapper(MessageDao.class).getMessage(status);
		System.out.println(mlist);
		List<MessageVo> mvList=new ArrayList<MessageVo>();
		for (Message message : mlist) {
			mvList.add(changeMsgVo(message));
		}
		return mvList;
	}

	@Override
	public List<Message> getMessageById(int id) {
		// TODO Auto-generated method stub
		return BaseDao.getSession().getMapper(MessageDao.class).getMessageById(id);
	}

	@Override
	public List<Message> getAllMessage() {
		// TODO Auto-generated method stub
		return BaseDao.getSession().getMapper(MessageDao.class).getAllMessage();
	}

	private MessageVo changeMsgVo(Message msg) {
		MessageVo vo=new MessageVo();
		vo.setMid(msg.getMid());
		vo.setContent(msg.getContent());
		System.out.println(msg.getSidFrom());
		User user = BaseDao.getSession().getMapper(UserDao.class).getUserById(msg.getSidFrom());
		vo.setSname(user.getName());
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		vo.setCtime(sdf.format(msg.getCreatedTime()));
		if (msg.getUpdateTime() == null) {
			vo.setUtime("2020-01-01 00:00:00");;
		}else {
			
			vo.setUtime(sdf.format(msg.getUpdateTime()));
		}
		System.out.println(vo);
		return vo;
	}
	@Override
	public boolean feedBack(int mid) {
		int status = 4;
		if (BaseDao.getSession(true).getMapper(MessageDao.class).deal(mid, status)>0) {
			return true;
		}
		return false;
	}
	@Override
	public boolean readMessage() {
		BaseDao.getSession(true).getMapper(MessageDao.class).readMessage();
		return true;
	}
}

配置文件

  1. Mybatis
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
 <environments default="development">
 <environment id="development">
 <transactionManager type="JDBC"/>
 <dataSource type="POOLED">
	 <property name="driver" value="com.mysql.jdbc.Driver"/>
	 <!-- <property name="url" value="jdbc:mysql://localhost:3306/bd13?useUnicode=true&characterEncoding=UTF-8"/>-->
	  <property name="url" value="jdbc:mysql://localhost:3306/数据库名"/>
	 <property name="username" value="数据库用户名"/>
	 <property name="password" value="密码"/>
 </dataSource>
 </environment>
 </environments>
 <!--mapper的路径  -->
 <mappers>
 	<mapper resource="dao/UserMapper.xml"/>
 	<mapper resource="dao/MessageMapper.xml"/>
</mappers>
</configuration>
  1. SpringMVC
<?xml version="1.0" encoding="UTF-8"?>
<beans 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-3.0.xsd              
	http://www.springframework.org/schema/beans              
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd              
	http://www.springframework.org/schema/context              
	http://www.springframework.org/schema/context/spring-context-3.0.xsd">       
	
	<mvc:annotation-driven />
	
	<context:component-scan base-package="controller"></context:component-scan>      
	
	<context:annotation-config />
	
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/" />
		<property name="suffix" value=".jsp" />
	</bean>
</beans>

四、controller包

  1. UserController.java
package controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import entity.Message;
import entity.MessageVo;
import entity.User;
import service.MessageService;
import service.UserService;
import service.impl.MessageServiceImpl;
import service.impl.UserServiceImpl;

@Controller
public class UserController {
	UserService service = new UserServiceImpl();
	MessageService mservice = new MessageServiceImpl();
	@RequestMapping("/doLogin")
	public String doLogin(@RequestParam(value="id") int id,
							@RequestParam(value="pwd")String password,
							HttpServletRequest request,
							HttpSession session) {
		
		User user = service.getUserById(id);
		if (user.getPassword().equals(password)) {
			session.setAttribute("user", user);
			if (user.getLevel()>3) {
				return "redirect:/initTeacher.action";
			}else {
				return "redirect:/initStudent.action";
			}
		}else {
			return "error";
		}
	}
	
	
	@RequestMapping("/checkId")
	public void check(HttpServletResponse response,@RequestParam("id")int id) {
		User user =service.getUserById(id);
		System.out.println(user);
		String answer = "";
		if (user==null) {
			answer = "没有这个学号";
		}else {
			answer = "请继续输入密码";
		}
		try {
			response.setCharacterEncoding("utf-8");
			PrintWriter writer = response.getWriter();
			writer.write(answer);
			writer.flush();
			writer.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

	@RequestMapping("/doUpdateId")
	
	public String doUpdateId(@RequestParam(value="id") String id,
			HttpServletRequest request,
			HttpSession session) {
		int i = new Integer(id);
		User user = service.getUserById(i);
		request.setAttribute("user", user);
		return "doUpdate";
	}
	@RequestMapping("/doUpdate")
	public String doUpdate(
			@RequestParam(value="id") String id,
			@RequestParam(value="name") String name,
			@RequestParam(value="age")String age,
			@RequestParam(value="address")String address,
			@RequestParam(value="tele")String tele,
			HttpServletRequest request
			) {
		 boolean flag = service.modify(id,name, age, address, tele);
		return "redirect:/initTeacher.action";
	}
	
	@RequestMapping("/delUser")
	public String delUser(@RequestParam(value="id",required = false) int id,
			HttpServletRequest request,
			HttpSession session){
		service.delUserById(id);
		return "redirect:/initTeacher.action";
	}
	
	@RequestMapping("/addUser")
	public String addUser(
			@RequestParam(value="name")String name,
			@RequestParam(value="pwd")String password,
			@RequestParam(value="address")String address,
			@RequestParam(value="age")int age,
			@RequestParam(value="tele")int tele,
			HttpServletRequest request,
			HttpSession session) {
		service.addUser(name, age, address, tele,password);
		return "redirect:/initTeacher.action";
	}
	@RequestMapping("/initTeacher")
	public String initTeacher(HttpServletRequest request,HttpSession session) {
		List<User> uList = service.getUser();
		List<MessageVo> unDeal=mservice.getUnDealedMsg();
		List<Message> agree=mservice.getAgreeMsg();
		List<Message> disagree=mservice.getRefMsg();
		
		request.setAttribute("ulist", uList);
		request.setAttribute("unDeal", unDeal);
		request.setAttribute("agree", agree);
		request.setAttribute("disagree", disagree);
		return "userInfo";
	}
	
	@RequestMapping("/initStudent")
	
	public String initStudent(HttpServletRequest request,HttpSession session) {
		boolean flag = false;
		User user = (User) session.getAttribute("user");
		List<Message> slist = mservice.getMessageById(user.getId());
		List<Message> mlist = mservice.getAllMessage();
		for (Message message : mlist) {
			if (user.getId()==message.getSidFrom()) {
				request.setAttribute("slist", slist);
				flag=true;
			}
		}
		if (flag) {
			return "student";
		}else {
			return "leaveMsg";
		}
	}
}

  1. MessageController.java
package controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import entity.Message;
import entity.MessageVo;
import entity.User;
import service.MessageService;
import service.UserService;
import service.impl.MessageServiceImpl;
import service.impl.UserServiceImpl;

@Controller
public class UserController {
	UserService service = new UserServiceImpl();
	MessageService mservice = new MessageServiceImpl();
	@RequestMapping("/doLogin")
	public String doLogin(@RequestParam(value="id") int id,
							@RequestParam(value="pwd")String password,
							HttpServletRequest request,
							HttpSession session) {
		
		User user = service.getUserById(id);
		if (user.getPassword().equals(password)) {
			session.setAttribute("user", user);
			if (user.getLevel()>3) {
				return "redirect:/initTeacher.action";
			}else {
				return "redirect:/initStudent.action";
			}
		}else {
			return "error";
		}
	}
	
	
	@RequestMapping("/checkId")
	public void check(HttpServletResponse response,@RequestParam("id")int id) {
		User user =service.getUserById(id);
		System.out.println(user);
		String answer = "";
		if (user==null) {
			answer = "没有这个学号";
		}else {
			answer = "请继续输入密码";
		}
		try {
			response.setCharacterEncoding("utf-8");
			PrintWriter writer = response.getWriter();
			writer.write(answer);
			writer.flush();
			writer.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

	@RequestMapping("/doUpdateId")
	
	public String doUpdateId(@RequestParam(value="id") String id,
			HttpServletRequest request,
			HttpSession session) {
		int i = new Integer(id);
		User user = service.getUserById(i);
		request.setAttribute("user", user);
		return "doUpdate";
	}
	@RequestMapping("/doUpdate")
	public String doUpdate(
			@RequestParam(value="id") String id,
			@RequestParam(value="name") String name,
			@RequestParam(value="age")String age,
			@RequestParam(value="address")String address,
			@RequestParam(value="tele")String tele,
			HttpServletRequest request
			) {
		 boolean flag = service.modify(id,name, age, address, tele);
		return "redirect:/initTeacher.action";
	}
	
	@RequestMapping("/delUser")
	public String delUser(@RequestParam(value="id",required = false) int id,
			HttpServletRequest request,
			HttpSession session){
		service.delUserById(id);
		return "redirect:/initTeacher.action";
	}
	
	@RequestMapping("/addUser")
	public String addUser(
			@RequestParam(value="name")String name,
			@RequestParam(value="pwd")String password,
			@RequestParam(value="address")String address,
			@RequestParam(value="age")int age,
			@RequestParam(value="tele")int tele,
			HttpServletRequest request,
			HttpSession session) {
		service.addUser(name, age, address, tele,password);
		return "redirect:/initTeacher.action";
	}
	@RequestMapping("/initTeacher")
	public String initTeacher(HttpServletRequest request,HttpSession session) {
		List<User> uList = service.getUser();
		List<MessageVo> unDeal=mservice.getUnDealedMsg();
		List<Message> agree=mservice.getAgreeMsg();
		List<Message> disagree=mservice.getRefMsg();
		
		request.setAttribute("ulist", uList);
		request.setAttribute("unDeal", unDeal);
		request.setAttribute("agree", agree);
		request.setAttribute("disagree", disagree);
		return "userInfo";
	}
	
	@RequestMapping("/initStudent")
	
	public String initStudent(HttpServletRequest request,HttpSession session) {
		boolean flag = false;
		User user = (User) session.getAttribute("user");
		List<Message> slist = mservice.getMessageById(user.getId());
		List<Message> mlist = mservice.getAllMessage();
		for (Message message : mlist) {
			if (user.getId()==message.getSidFrom()) {
				request.setAttribute("slist", slist);
				flag=true;
			}
		}
		if (flag) {
			return "student";
		}else {
			return "leaveMsg";
		}
	}
}

前端页面

  1. Login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="jquery-1.8.3.js"></script>
<script type="text/javascript">
	function check() {
		var id = $("#id").val();
		if (id==null||id=="") {
			alert("学号不能为空");
			return;
		}else{
			$.post("checkId.action",{"id":id},function(data){
				$("#msg").text(data);
			});
		}
	}
</script>
</head>
<body>
<h2 align="center">登录页面</h2>
<form action="doLogin.action" >
	学号:<input id="id" type="text" name="id" onblur="check()"/><br>
	密码:<input type="password" name="pwd"><br>
	<input type="submit" value="登录">
</form>
<p id = "msg"></p>
</body>
</html>
  1. userInfo.jsp
<%@page import="java.util.ArrayList"%>
<%@page import="java.lang.reflect.Array"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@ page import="entity.*,java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
.wtd{
	width: 150px;
}
</style>
<script type="text/javascript" src="jquery-1.8.3.js"></script>
<script type="text/javascript">
	$(document).ready(function() {
		$("#unDealTitle").click(function() {
			$("#unDeal").slideToggle(3000);
			$.post("readMessage.action");
		});

		$("#disagreeTitle").click(function() {
			$("#disagree").slideToggle(3000);
		});

		$("#agreeTitle").click(function() {
			$("#agree").slideToggle(3000);
		});
	});
</script>
</head>
<body>
	<%
		
		Object userObj = request.getAttribute("ulist");
		List<User> ulist = new ArrayList<User>();

		if (userObj != null) {
			ulist = (List<User>) userObj;
		}
	%>
		<div align="center">
			<h2>欢迎${user.name }</h2><br> 
			<a href="Login.jsp">重新登录</a>
		</div>
	<table align="center" border="1" color="black">
		<tr align="center">
			<td>
				<button ><a href="addUser.jsp">添加用户</a></button>
			</td>
		</tr>
		<tr align="center">
			<td>学号</td>
			<td>姓名</td>
			<td>年龄</td>
			<td>地址</td>
			<td>电话</td>
			<td colspan="2">操作</td>
		</tr>

		<%
			for (User u : ulist) {
		%>
		<tr>
			<td><%=u.getId()%></td>
			<td><%=u.getName()%></td>
			<td><%=u.getAge()%></td>
			<td><%=u.getAddress()%></td>
			<td><%=u.getTele()%></td>
			<td><a href="doUpdateId.action?id=<%=u.getId()%>">修改</a></td>
			<td><a href="delUser.action?id=<%=u.getId()%>">删除</a></td>
		</tr>

		<%
			}
		%>
	</table>
<%
	List<MessageVo> unDeal = (List<MessageVo>) request.getAttribute("unDeal");
	List<Message> disagree = (List<Message>) request.getAttribute("disagree");
	List<Message> agree = (List<Message>) request.getAttribute("agree");

%>
	<div align="center" name="message">
	
		<h4 id="unDealTitle" align="center">
			您有 <%=unDeal.size()%>条未处理消息
		</h4>
		<div id="unDeal" style="display: none;">
			<table align="center">
				<tr>
					<th>发送人</th>
					<th class="wtd">留言内容</th>
					<th>发送时间</th>
					<th colspan="2">操作</th>
				</tr>
				<%
					for (MessageVo mvo : unDeal) {
				%>
				<tr>
					<td><%=mvo.getSname()%></td>
					<td class="wtd"><%=mvo.getContent()%></td>
					<td><%=mvo.getCtime()%></td>
					<td><a href="msg/agree/deal.action?mid=<%=mvo.getMid()%>">同意</a>
						<a href="msg/disagree/deal.action?mid=<%=mvo.getMid()%>">驳回</a></td>
				</tr>
				<%
					}
				%>
			</table>
		</div>
		<br>
		<h4 id="disagreeTitle" align="center">
			您总共有<%=disagree.size()%>条已驳回的消息
		</h4>
		<div id="disagree" style="display: none;">
			<table align="center">
				<tr>
					<th>发送人</th>
					<th class="wtd">留言内容</th>
					<th>发送时间</th>
					<th>操作</th>
				</tr>
				<%
					for (Message mess : disagree) {
				%>
				<tr>
					<td><%=mess.getSidFrom()%></td>
					<td class="wtd"><%=mess.getContent()%></td>
					<td><%=mess.getCreatedTime()%></td>
					<td><a href="msg/agree/deal.action?mid=<%=mess.getMid()%>">同意</a></td>
				</tr>
				<%
					}
				%>
			</table>
		</div>
		<br>
		<h4 id="agreeTitle" align="center">
			您总共有<%=agree.size()%>条已同意的消息
		</h4>
		<div id="agree" style="display: none;">
			<table align="center">
				<tr>
					<th>发送人</th>
					<th class="wtd">留言内容</th>
					<th>发送时间</th>
					<th>审批时间</th>
				</tr>
				<%
					for (Message mess : agree) {
				%>
				<tr>
					<td><%=mess.getSidFrom()%></td>
					<td class="wtd"><%=mess.getContent()%></td>
					<td><%=mess.getCreatedTime()%></td>
					<td><%=mess.getUpdateTime()%></td>
				</tr>
				<%
					}
				%>
			</table>

		</div>
</body>
</html>
  1. addUser.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="addUser.action">
	姓名:<input type="text" name = "name" >
	年龄:<input type="text" name = "age" >
	地址:<input type="text" name = "address" >
	电话:<input type="text" name = "tele" >
	密码:<input type="text" name = "pwd" >
	<input type="submit" value="提交">
	
</form>
</body>
</html>
  1. doMessage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*,entity.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2 align="center"> 班主任页面${user.name }</h2>
<%
	Object userObj = request.getAttribute("mlist");
	List<Message> mlist = new ArrayList<Message>();
	if(userObj != null){
		mlist = (List<Message>)userObj;
	}
%>
<table>
	<tr>
		<td>发送人</td>
		<td>内容</td>
		<td>留言时间</td>
		<td colspan="2">状态</td>
	</tr>
	<% 
		for(Message m : mlist){
	%>
		<tr>
			<td><%=m.getSidFrom() %></td>
			<td><%=m.getContent() %></td>
			<td><%=m.getCreatedTime() %></td>
			<td>
				<a href="msg/agree/deal.action?mid = <%=m.getMid()%>">同意</a>
				<a href="msg/disagree/deal.action?mid = <%=m.getMid()%>">驳回</a>
			</td>
		</tr>
	<%
		}
	%>
</table>
</body>
</html>
  1. doUpdata.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ page import="entity.User" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="doUpdate.action">
<h2 align="center">${user.name}</h2>
<input type="hidden" name ="id" value="${user.id}">
	姓名:<input type="text" name="name"/>
	年龄:<input type="text" name="age"/>
	地址:<input type="text" name="address"/>
	电话:<input type="text" name="tele"/>
	<input type="submit"  value = "确定"/>
</form>
</body>
</html>
  1. leaveMsg.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2 align="center">欢迎学员${user.name }</h2>
<center>
<form action="leaveMsg.action">
<input type="hidden" name="sidFrom" value="${user.id }">
<p align="center">书写留言</p>
<textarea rows="10" cols="30" name="content">
</textarea><br>
<input type="submit" value="确定留言" >
</form>
</center>
</body>
</html>
  1. student.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ page import="java.util.*,entity.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	Object userObj = request.getAttribute("slist");
	List<Message> slist = new ArrayList<Message>();

	if(userObj != null){
		slist = (List<Message>)userObj;
 	}
%>

<h2 align = "center"> 欢迎  ${user.name }</h2>
<h2 align = "center"> ${info}</h2>
<div align="center">
	<p>${info }</p>
	<button><a href="leaveMsg.jsp">写留言</a></button>
	<button><a href="Login.jsp">重新登录</a></button>
</div>
<table align="center">
	<tr>
		<td>留言号</td>
		<td>内容</td>
		<td>创建时间</td>
		<td>处理时间</td>
		<td>状态</td>
		<td>操作</td>
	</tr>
	
	<%
	for(Message m : slist){
		%>
		<tr>
			<td><%=m.getMid() %></td>
			<td><%=m.getContent() %></td>
			<td><%=m.getCreatedTime() %></td>
			<td><%=m.getUpdateTime() %></td>
			<td><% 
			int i = m.getStatus();
			if(i==0){ out.println("未处理");}
			if(i==1){out.println("已查看");}
			if(i==2){out.println("同意");}
			if(i==3){out.println("驳回");}
			if(i==4){out.println("已撤回");}
				%></td>
			<td>
			<% if(m.getStatus()==0){%>
				<a href="feedBack.action?mid=<%=m.getMid()%>">撤回</a>
			<% } %>
			</td>
		</tr>
	<%
	}
	%>
</table>
</body>
</html>

数据库设计

/*
SQLyog Ultimate v13.1.1 (64 bit)
MySQL - 5.5.36 : Database - trainning
*********************************************************************
*/

/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`trainning` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `trainning`;

/*Table structure for table `message` */

DROP TABLE IF EXISTS `message`;

CREATE TABLE `message` (
  `mid` int(5) NOT NULL AUTO_INCREMENT,
  `sid_from` int(5) DEFAULT NULL,
  `content` char(100) DEFAULT NULL COMMENT '留言',
  `created_Time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_Time` timestamp NULL DEFAULT NULL,
  `status` int(5) DEFAULT '0' COMMENT '0:未处理,1:已处理,2:同意,3:驳回',
  PRIMARY KEY (`mid`)
) ENGINE=InnoDB AUTO_INCREMENT=126 DEFAULT CHARSET=utf8;

/*Data for the table `message` */

insert  into `message`(`mid`,`sid_from`,`content`,`created_Time`,`updated_Time`,`status`) values 
(121,2,'天气真好','2020-03-27 09:41:12','2020-03-27 10:09:24',4),
(123,2,'我很棒','2020-03-27 13:38:37','2020-03-27 13:41:12',2),
(124,2,'hello','2020-03-27 13:39:29','2020-03-27 13:39:32',4),
(125,16,'你好','2020-03-27 13:43:16','2020-03-27 13:44:13',2);

/*Table structure for table `user` */

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `name` char(10) NOT NULL,
  `age` int(10) DEFAULT NULL,
  `address` char(20) DEFAULT NULL,
  `tele` int(11) DEFAULT NULL,
  `password` char(20) NOT NULL,
  `level` int(5) DEFAULT '1' COMMENT '用户等级',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

/*Data for the table `user` */

insert  into `user`(`id`,`name`,`age`,`address`,`tele`,`password`,`level`) values 
(2,'marry',23,'河北',12312,'1234',1),
(11,'peng',22,'北京',232,'1234',4),
(13,'jack',22,'天津',1234,'111111',1),
(14,'tom',11,'北京',1234,'111111',1),
(16,'liiiiii',22,'天津',12312,'111111',1);

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

三、总结

  1. 设计之初,把握自己的逻辑,前后端交互的项目设计,首先要设计好自己的页面需要的信息,之后再书写自己的逻辑层,把我好自己的需要实现的功能(controller包)
  2. 过程中注意把控细节,sql语句的细节,配置文件的路径,方法名和配置文件中的id一致
  3. 增删改需要自动提交事务,所以BaseDao中的SQLsession中提供两种一种自动提交,一种不提交

下载资源链接地址:
https://download.csdn.net/download/wenquan19960602/12277108

原创文章 28 获赞 41 访问量 1020

猜你喜欢

转载自blog.csdn.net/wenquan19960602/article/details/105140163