JavaWeb JavaBean JSP MVC MySQL Tomcat JavaScript Bootstrap Ajax
基础JSP+Servlet或JSP+SSM(Spring、SpringMVC、MyBatis)框架或JSP+SSM+Maven(pom.xml)框架或SpringBoot…均可
开发工具:eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
确认要删除该学员记录吗?
<div class="form-group hidden">
<label class="control-label">(hidden)</label>
<input type="hidden" class="form-control" name="action" value="delete">
<input type="text" class="form-control" name="id" id="delete-id">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-pill btn-warning" data-dismiss="modal">取消</button>
<button type="submit" class="btn btn-pill btn-info">删除</button>
</div>
</form>
</div>
</div>
</div>
</body>
<script>
$('#modal-delete').on('show.bs.modal', function (event) {
let button = $(event.relatedTarget);
let id = button.data('id');
let modal = $(this);
modal.find('#delete-id').val(id);
})
$('#modal-edit').on('show.bs.modal', function (event) {
let button = $(event.relatedTarget);
let id = button.data('id');
<form action="UserServlet">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">删除用户</h4>
</div>
<div class="modal-body">
确认要删除该用户记录吗?
<div class="form-group hidden">
<label class="control-label">(hidden)</label>
<input type="hidden" class="form-control" name="action" value="delete">
<input type="text" class="form-control" name="id" id="delete-id">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-pill btn-warning" data-dismiss="modal">取消</button>
modal.find('#edit-jiaoyuanNeirong').val(vo.jiaoyuanNeirong);
modal.find('#edit-jiaoyuanPrice').val(vo.jiaoyuanPrice);
modal.find('#edit-jiaoyuanDate').val(vo.jiaoyuanDate);
for (let val of "空闲/已预定".split('/')) {
if (val == vo.jiaoyuanStatus) {
modal.find('#edit-jiaoyuanStatus_' + vo.jiaoyuanStatus).prop("checked", true);
} else {
modal.find('#edit-jiaoyuanStatus_' + vo.jiaoyuanStatus).removeAttr("checked");
}
};
modal.find('#edit-jiaoyuanText').val(vo.jiaoyuanText);
}
})
})
$('#modal-info').on('show.bs.modal', function (event) {
let button = $(event.relatedTarget);
let id = button.data('id');
let modal = $(this);
$.ajax({
url: 'JiaoyuanServlet?action=get&id=' + id,
type: "get",
success: function (voString) {
let vo = eval('(' + voString + ')');
modal.find('#info-jiaoyuanName').text(vo.jiaoyuanName);
modal.find('#info-jiaoyuanAge').text(vo.jiaoyuanAge);
modal.find('#info-jiaoyuanSex').text(vo.jiaoyuanSex);
modal.find('#info-jiaoyuanXueli').text(vo.jiaoyuanXueli);
modal.find('#info-jiaoyuanPhone').text(vo.jiaoyuanPhone);
modal.find('#info-jiaoyuanNeirong').text(vo.jiaoyuanNeirong);
function editCheck() {
//根据ID获取值
if (document.getElementById("edit-username").value.trim().length == 0) {
alert("用户名不能为空");
return false;
}
if (document.getElementById("edit-password").value.trim().length == 0) {
alert("密码不能为空");
return false;
}
if (document.getElementById("edit-realName").value.trim().length == 0) {
alert("姓名不能为空");
return false;
}
if (document.getElementById("edit-userPhone").value.trim().length == 0) {
alert("手机不能为空");
return false;
}
return true;
}
</script>
</html>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
}
//@Override
public Xueyuan get(Serializable id) {
Xueyuan vo = null;
try {
Connection c = Util.getConnection();
Statement s = c.createStatement();
String sql = "select * from `t_xueyuan` where id = " + id;
ResultSet rs = s.executeQuery(sql);
if (rs.next()) {
vo = new Xueyuan();
vo.setId(rs.getLong("id"));
vo.setXueyuanName(rs.getString("xueyuan_name"));
vo.setXueyuanAge(rs.getString("xueyuan_age"));
vo.setXueyuanSex(rs.getString("xueyuan_sex"));
vo.setXueyuanPhone(rs.getString("xueyuan_phone"));
vo.setXueyuanNeirong(rs.getString("xueyuan_neirong"));
vo.setXueyuanDate(rs.getString("xueyuan_date"));
vo.setXueyuanPrice(rs.getString("xueyuan_price"));
modal.find('#edit-jiaoyuanSex_' + vo.jiaoyuanSex).prop("checked", true);
} else {
modal.find('#edit-jiaoyuanSex_' + vo.jiaoyuanSex).removeAttr("checked");
}
};
modal.find('#edit-jiaoyuanXueli').val(vo.jiaoyuanXueli);
modal.find('#edit-jiaoyuanPhone').val(vo.jiaoyuanPhone);
modal.find('#edit-jiaoyuanNeirong').val(vo.jiaoyuanNeirong);
modal.find('#edit-jiaoyuanPrice').val(vo.jiaoyuanPrice);
modal.find('#edit-jiaoyuanDate').val(vo.jiaoyuanDate);
for (let val of "空闲/已预定".split('/')) {
if (val == vo.jiaoyuanStatus) {
modal.find('#edit-jiaoyuanStatus_' + vo.jiaoyuanStatus).prop("checked", true);
} else {
modal.find('#edit-jiaoyuanStatus_' + vo.jiaoyuanStatus).removeAttr("checked");
vo.setJiaoyuanText(Util.decode(request, "jiaoyuanText"));
JiaoyuanService jiaoyuanService = new JiaoyuanServiceImpl();
//调用Service层更新方法(update),更新记录
jiaoyuanService.update(vo);
this.redirectList(request, response);
} else if ("get".equalsIgnoreCase(action) || "editPre".equalsIgnoreCase(action)) {//根据主键ID,查询详情信息并跳转到详情页面或编辑页面
Serializable id = Util.decode(request, "id");//取出页面传入的主键,用于查询详情
JiaoyuanService jiaoyuanService = new JiaoyuanServiceImpl();
Jiaoyuan vo = jiaoyuanService.get(id);
response.getWriter().println(com.alibaba.fastjson.JSONObject.toJSONString(vo));
} else {//默认去列表页面
this.redirectList(request, response);
}
}
/**
* 处理Get请求
*
* @param request
* @param response
* @throws ServletException
* @throws IOException
//根据ID获取值
if (document.getElementById("edit-xueyuanName").value.trim().length == 0) {
alert("学员姓名不能为空");
return false;
}
if (document.getElementById("edit-xueyuanAge").value.trim().length == 0) {
alert("性别不能为空");
return false;
}
if (document.getElementById("edit-xueyuanPhone").value.trim().length == 0) {
alert("联系方式不能为空");
return false;
}
if (document.getElementById("edit-xueyuanNeirong").value.trim().length == 0) {
alert("学习内容不能为空");
return false;
}
if (document.getElementById("edit-xueyuanDate").value.trim().length == 0) {
alert("期望时间不能为空");
return false;
}
if (document.getElementById("edit-xueyuanPrice").value.trim().length == 0) {
alert("期望价格不能为空");
return false;
}
return true;
}
</div>
</div>
</div>
<!-- info -->
<div class="modal fade" id="modal-info" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">教员</h4>
</div>
<div class="modal-body">
<button type="submit" class="btn btn-pill btn-warning">提交</button>
</div>
</form>
</div>
</div>
</div>
<!-- info -->
<div class="modal fade" id="modal-info" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">学员</h4>
</div>
<div class="modal-body">
<table class="table table-striped table-hover" style="font-size: 15px;">
<tr>
<td style="width: 15%;">学员姓名:</td>
<td><b id="info-xueyuanName"></b></td>
</tr>
<tr>
<td style="width: 15%;">性别:</td>
<td><b id="info-xueyuanAge"></b></td>
params.put("searchColumn", searchColumn);//要查询的列
params.put("keyword", keyword);//查询的关键字
XueyuanService xueyuanService = new XueyuanServiceImpl();
Map<String, Object> map = xueyuanService.list(params);
request.getSession().setAttribute("list", map.get("list"));
Integer totalRecord = (Integer) map.get("totalCount");//根据查询条件取出对应的总记录数,用于分页
String pageNum = Util.decode(request, "pageNum");//封装分页参数
com.demo.util.PageBean<Object> pb = new com.demo.util.PageBean(Integer.valueOf(pageNum != null ? pageNum : "1"), totalRecord);
params.put("startIndex", pb.getStartIndex());
params.put("pageSize", pb.getPageSize());
List list = (List) xueyuanService.list(params).get("list");//根据分页参数startIndex、pageSize查询出来的最终结果list
pb.setServlet("XueyuanServlet");
pb.setSearchColumn(searchColumn);
pb.setKeyword(keyword);
pb.setList(list);
request.getSession().setAttribute("pageBean", pb);
request.getSession().setAttribute("list", pb.getList());
function addCheck() {
//根据ID获取值
if (document.getElementById("add-xueyuanName").value.trim().length == 0) {
alert("学员姓名不能为空");
return false;
}
if (document.getElementById("add-xueyuanAge").value.trim().length == 0) {
alert("性别不能为空");
return false;
}
if (document.getElementById("add-xueyuanPhone").value.trim().length == 0) {
alert("联系方式不能为空");
return false;
}
if (document.getElementById("add-xueyuanNeirong").value.trim().length == 0) {
<tr>
<td style="width: 15%;">创建时间:</td>
<td><b id="info-createDate"></b></td>
</tr>
</table>
<br>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-pill btn-warning" data-dismiss="modal">关闭</button>
</div>
</form>
</div>
</div>
</div>
<!-- edit -->
<div class="modal fade" id="modal-edit" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="NoticeServlet" onsubmit="return editCheck()">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">更新公告</h4>
</div>
import java.util.Map;
import java.util.Random;
//@WebServlet("/AuthServlet")
public class AuthServlet extends HttpServlet {
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//过滤编码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
String action = Util.decode(request, "action");
if ("login".equalsIgnoreCase(action)) {//登录
String username = Util.decode(request, "username");
String password = Util.decode(request, "password");
String validationCode = Util.decode(request, "validationCode");
if (validationCode != null && !validationCode.equals(request.getSession().getAttribute("validationCode"))) {//验证码不通过
request.getSession().setAttribute("alert_msg", "错误:验证码不正确!");
request.getRequestDispatcher("login.jsp").forward(request, response);
return;
}
c.close();
} catch (Exception e) {
e.printStackTrace();
}
return vo;
}
//@Override
public Map<String, Object> list(Map<String, Object> params) {
List<User> list = new ArrayList();
int totalCount = 0;
String condition = "";
String sqlList;
if (params.get("searchColumn") != null && !"".equals(params.get("searchColumn"))) {
condition += " and `" + params.get("searchColumn") + "` like '%" + params.get("keyword") + "%'";
}
try {
Connection c = Util.getConnection();
PreparedStatement ps;
ResultSet rs;
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">校园家教兼职信息管理系统</span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">校园家教兼职信息管理系统</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="#">欢迎:<span style="color: yellow">${loginUser.username}</span></a></li>
<li><a href="AuthServlet?action=logout">退出</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<c:when test="${fn:length(vo.xueyuanText) > 19}">
<c:out value="${fn:substring(vo.xueyuanText, 0, 19)}..."/>
</c:when>
<c:otherwise>
<c:out value="${vo.xueyuanText}"/>
</c:otherwise>
</c:choose>
</td>
<th style="text-align: center;">
<button class="btn btn-pill btn-warning btn-sm" data-id="${vo.id}"
data-toggle="modal" data-target="#modal-info">详情
</button>
<button class="btn btn-pill btn-default btn-sm"
<c:if test="${loginUser.userType != '管理员'}">disabled="disabled" title="没有权限!!!"</c:if>
data-id="${vo.id}"
data-toggle="modal" data-target="#modal-edit">编辑
</button>
<button class="btn btn-pill btn-info btn-sm" <c:if test="${loginUser.userType != '管理员'}">disabled="disabled" title="没有权限!!!"</c:if> data-id="${vo.id}"
data-toggle="modal" data-target="#modal-delete">删除
</button>
</th>
</tr>
</div>
</div>
</body>
<script>
$('#modal-delete').on('show.bs.modal', function (event) {
let button = $(event.relatedTarget);
let id = button.data('id');
let modal = $(this);
modal.find('#delete-id').val(id);
})
$('#modal-edit').on('show.bs.modal', function (event) {
let button = $(event.relatedTarget);
let id = button.data('id');
let modal = $(this);
$.ajax({
url: 'NoticeServlet?action=get&id=' + id,
type: "get",
success: function (voString) {
let vo = eval('(' + voString + ')');
modal.find('#edit-id').val(vo.id);
modal.find('#edit-noticeName').val(vo.noticeName);
modal.find('#edit-noticeText').val(vo.noticeText);
modal.find('#edit-noticeType').val(vo.noticeType);
modal.find('#edit-createDate').val(vo.createDate);
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div style="float: right;padding-right: 10px;color: #515151;"><jsp:include page="split.jsp"/></div>
</div>
</div>
</div>
<!-- add -->
<div class="modal fade" id="modal-add" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="XueyuanServlet" onsubmit="return addCheck()">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="myModalLabel">增加学员</h4>
</div>
<div class="modal-body">
<div class="form-group hidden">
<label class="control-label">(hidden)</label>
<input type="text" class="form-control" name="action" value="add">
</div>
* @param response
* @throws ServletException
* @throws IOException
*/
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);//Get请求和Post请求的处理是一样的,所以把request、response转交给Post方法就好
}
/**
* 根据参数,查询出条例条件的记录集合,最后将数据返回给调用处或者将数据集合设置到session域里,再跳转到对应的列表页面
*
* @param request
* @param response
*/
private void redirectList(HttpServletRequest request, HttpServletResponse response) throws IOException {
//查询列和关键字
String searchColumn = Util.decode(request, "searchColumn");
String keyword = Util.decode(request, "keyword");
*
* @return 如果连接成功则返回连接对象,如果连接失败返回null
*/
public static Connection getConnection() throws Exception {
Class.forName(DBDRIVER);
return DriverManager.getConnection(DBURL, DBUSER, PASSWORD);
}
/**
* 测试连接是否成功
*
* @param args
* @throws Exception
*/
public static void main(String[] args) {
try {
Connection conn = Util.getConnection();
System.out.println("数据库连接成功!!!");
conn.close();
} catch (Exception e) {
运行环境
Java≥6、Tomcat≥7.0、MySQL≥5.5
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
技术框架
JavaWeb JavaBean JSP MVC MySQL Tomcat JavaScript Bootstrap Ajax
基础JSP+Servlet或JSP+SSM(Spring、SpringMVC、MyBatis)框架或JSP+SSM+Maven(pom.xml)框架或SpringBoot…均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
登录、注册、退出、用户模块、公告模块、教员模块、学员模块的增删改查管理