功能介绍
- 登录验证,(同时ajax的异步验证)
- 老师和学生登录后有不同的界面
- 学生可以给老师留言,并查看自己留言的状态
- 老师可以对学生进行增删改查,对留言进行处理
一、包结构
导入的架包
后台各个层的功能
- User:用户类、Message:留言信息类、MessageVo:过度类为实现特定功能单另的类
- BaseDao: Mybatis特性抽取的封装类
- UserDao: dao层的接口类;MessageDao:dao层的接口类
- UserMapper.xml 和 MessageMapper.xml是sql语句的配置类
- UserService和MessageService 是service层的接口类;UserServiceImpl 和 MessageServiceImpl是service的实现类
- mybatis-config.xml Mybatis的配置文件;springmvc.xml springmvc的配置文件
前端页面的功能
- Login.jsp登录页面
- addUser.jsp 添加学生页面
- doUpdate.jsp学生信息的修改页面
- userInfo.jsp老师登录进去的页面
- student.jsp学生信息显示页面
- doMessage.jsp 老师页面的留言区
- leaveMsg.jsp学生留言页面
- error.jsp错误页面,当发生输入错误时,自动跳到错误页面
二、代码区
后台代码
一、entity包
- 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;
}
}
- 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;
}
}
- 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包
- 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;
}
}
- 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);
}
- 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);
}
- 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>
- 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包
- 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);
}
- 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;
}
}
- 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();
}
- 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;
}
}
配置文件
- 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>
- 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包
- 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";
}
}
}
- 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";
}
}
}
前端页面
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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 */;
三、总结
- 设计之初,把握自己的逻辑,前后端交互的项目设计,首先要设计好自己的页面需要的信息,之后再书写自己的逻辑层,把我好自己的需要实现的功能(controller包)
- 过程中注意把控细节,sql语句的细节,配置文件的路径,方法名和配置文件中的id一致
- 增删改需要自动提交事务,所以BaseDao中的SQLsession中提供两种一种自动提交,一种不提交
下载资源链接地址:
https://download.csdn.net/download/wenquan19960602/12277108