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>
<div class="form-group">
<label for="edit-xiuPhone" class="control-label">联系方式:</label>
<input type="text" class="form-control" name="xiuPhone" id="edit-xiuPhone">
</div>
<div class="form-group">
<label class="control-label">状态:</label>
<input name="xiuStatus" id="edit-xiuStatus_已处理" type="radio" value="已处理"/>已处理
<input name="xiuStatus" id="edit-xiuStatus_待处理" type="radio" value="待处理"/>待处理
</div>
<div class="form-group">
<label for="edit-xiuText" class="control-label">备注:</label>
<textarea style="height: 100px;" class="form-control" name="xiuText" id="edit-xiuText"></textarea>
</div>
<div class="form-group hidden">
<label for="edit-createTime" class="control-label">创建时间:</label>
<input type="text" class="form-control" name="createTime" id="edit-createTime">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-pill btn-grad btn-info" data-dismiss="modal">取消</button>
}
})
})
function searchList() {
window.location.href = "XiuServlet?action=list&searchColumn="+document.getElementById("searchColumn").value+"&keyword=" + document.getElementById("search_keyword").value;
}
//增加表单提交之前进行检查,如果return false,则不允许提交
function addCheck() {
//根据ID获取值
if (document.getElementById("add-xiuName").value.trim().length == 0) {
alert("单车编号不能为空");
return false;
vo.setXiuRen(rs.getString("xiu_ren"));
vo.setXiuPhone(rs.getString("xiu_phone"));
vo.setXiuStatus(rs.getString("xiu_status"));
vo.setXiuText(rs.getString("xiu_text"));
list.add(vo);
}
String sqlCount = "select count(*) from `t_xiu` where 1=1 " + condition;
ps = c.prepareStatement(sqlCount);
rs = ps.executeQuery();
if (rs.next()) {
totalCount = rs.getInt(1);
}
rs.close();
ps.close();
c.close();
<!-- 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="XiuServlet" 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="col-sm-5">
<button type="button" <c:if test="${loginUser.userType != '管理员'}">disabled="disabled" title="没有权限!!!"</c:if> class="btn btn-pill btn-grad btn-warning" data-toggle="modal" data-target="#modal-add">添加公告
</button>
</div>
</div>
<br>
<br>
<div class="table-responsive">
<table class="table table-striped table-hover">
<thead>
<tr>
<th>标题</th>
<th>内容</th>
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
rs = ps.executeQuery();
while (rs.next()) {
Xiu vo = new Xiu();
vo.setId(rs.getLong("id"));
vo.setXiuName(rs.getString("xiu_name"));
vo.setXiuReason(rs.getString("xiu_reason"));
vo.setXiuDate(rs.getString("xiu_date"));
vo.setXiuHandledate(rs.getString("xiu_handledate"));
vo.setXiuRen(rs.getString("xiu_ren"));
vo.setXiuPhone(rs.getString("xiu_phone"));
vo.setXiuStatus(rs.getString("xiu_status"));
vo.setXiuText(rs.getString("xiu_text"));
list.add(vo);
}
String sqlCount = "select count(*) from `t_xiu` where 1=1 " + condition;
ps = c.prepareStatement(sqlCount);
rs = ps.executeQuery();
if (rs.next()) {
modal.find('#info-password').text(vo.password);
modal.find('#info-realName').text(vo.realName);
modal.find('#info-userSex').text(vo.userSex);
modal.find('#info-userPhone').text(vo.userPhone);
modal.find('#info-userText').text(vo.userText);
modal.find('#info-userType').text(vo.userType);
}
})
})
function searchList() {
window.location.href = "UserServlet?action=list&searchColumn="+document.getElementById("searchColumn").value+"&keyword=" + document.getElementById("search_keyword").value;
}
//增加表单提交之前进行检查,如果return false,则不允许提交
function addCheck() {
//根据ID获取值
if (document.getElementById("add-username").value.trim().length == 0) {
alert("用户名不能为空");
return false;
}
if (document.getElementById("add-password").value.trim().length == 0) {
alert("密码不能为空");
return false;
try {
Connection c = Util.getConnection();
Statement s = c.createStatement();
String sql = "select * from `t_che` where id = " + id;
ResultSet rs = s.executeQuery(sql);
if (rs.next()) {
vo = new Che();
vo.setId(rs.getLong("id"));
vo.setCheName(rs.getString("che_name"));
vo.setCheArea(rs.getString("che_area"));
vo.setCheDate(rs.getString("che_date"));
vo.setCheRen(rs.getString("che_ren"));
vo.setChePhone(rs.getString("che_phone"));
vo.setCheType(rs.getString("che_type"));
vo.setCheWei(rs.getString("che_wei"));
vo.setCheStatus(rs.getString("che_status"));
vo.setCheText(rs.getString("che_text"));
}
c.close();
} catch (Exception e) {
e.printStackTrace();
<button class="btn btn-pill btn-grad btn-danger btn-sm" data-id="${vo.id}"
data-toggle="modal" data-target="#modal-info">详情
</button>
<button class="btn btn-pill btn-grad btn-danger 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-grad btn-primary 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>
</c:forEach>
</tbody>
</table>
</div>
</div>
<!-- delete -->
<div class="modal fade" id="modal-delete" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="NoticeServlet">
<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>
List<User> list = (List<User>) userService.list(params).get("list");
for (User user : list) {
if (user.getUsername().equals(username) /*&& user.getPassword().equals(password)*/) {//说明该用户名已存在,必须换个用户名才能注册
request.getSession().setAttribute("alert_msg", "错误:用户名已存在!");
request.getRequestDispatcher("register.jsp").forward(request, response);
return;
}
}
User vo = new User();
vo.setUsername(username);
vo.setPassword(password);
//vo.setUserType("普通用户");//需要设置一个默认值
userService.add(vo);
request.getSession().setAttribute("alert_msg", "注册成功!用户名:[" + username + "]");
request.getRequestDispatcher("login.jsp").forward(request, response);
} else if ("logout".equalsIgnoreCase(action)) {//登出
HttpSession session = request.getSession();
User user = (User) session.getAttribute("loginUser");
if (user != null) {
session.removeAttribute("loginUser");
}
response.sendRedirect("login.jsp");
}
/**
* 处理Get请求
*
* @param request
* @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 {
vo.setCheRen(Util.decode(request, "cheRen"));
vo.setChePhone(Util.decode(request, "chePhone"));
vo.setCheType(Util.decode(request, "cheType"));
vo.setCheWei(Util.decode(request, "cheWei"));
vo.setCheStatus(Util.decode(request, "cheStatus"));
vo.setCheText(Util.decode(request, "cheText"));
CheService cheService = new CheServiceImpl();
//调用Service层增加方法(add),增加记录
cheService.add(vo);
this.redirectList(request, response);
} else if ("delete".equals(action)) {//删除
//取出表要删除的单车记录的主键
long id = Long.parseLong(Util.decode(request, "id"));
CheService cheService = new CheServiceImpl();
}
}
//@Override
public Che get(Serializable id) {
Che vo = null;
try {
Connection c = Util.getConnection();
Statement s = c.createStatement();
String sql = "select * from `t_che` where id = " + id;
ResultSet rs = s.executeQuery(sql);
if (rs.next()) {
vo = new Che();
vo.setId(rs.getLong("id"));
vo.setCheName(rs.getString("che_name"));
vo.setCheArea(rs.getString("che_area"));
vo.setCheDate(rs.getString("che_date"));
vo.setCheRen(rs.getString("che_ren"));
*
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
@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 ("add".equals(action)) {//增加
User vo = new User();
//取出页面传进来的各个数据,并设置到User对象的属性里
vo.setUsername(Util.decode(request, "username"));
vo.setPassword(Util.decode(request, "password"));
vo.setRealName(Util.decode(request, "realName"));
vo.setUserSex(Util.decode(request, "userSex"));
vo.setUserPhone(Util.decode(request, "userPhone"));
vo.setUserText(Util.decode(request, "userText"));
vo.setUserType(Util.decode(request, "userType"));
UserService userService = new UserServiceImpl();
}
/**
* 处理Get请求
*
* @param request
* @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方法就好
}
/**
}
}
package com.demo.servlet;
import com.demo.util.Util;
import com.demo.service.CheService;
import com.demo.service.impl.CheServiceImpl;
import com.demo.vo.Che;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
<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">
<!-- 侧边栏 -->
<jsp:include page="menu.jsp">
<jsp:param value="active" name="Che_active"/>
</jsp:include>
</div>
<link rel="stylesheet" href="css/bootstrap.css">
<link rel="stylesheet" href="css/main.css">
<script src="js/jquery-3.5.1.js"></script>
<script src="js/bootstrap.js"></script>
</head>
<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>
HttpSession session = request.getSession();
User user = (User) session.getAttribute("loginUser");
if (user != null) {
session.removeAttribute("loginUser");
}
response.sendRedirect("login.jsp");
} else if ("validationCode".equalsIgnoreCase(action)) {
String codeChars = "0123456789";// 图形验证码的字符集合,系统将随机从这个字符串中选择一些字符作为验证码
// 获得验证码集合的长度
int charsLength = codeChars.length();
// 下面三条记录是关闭客户端浏览器的缓冲区
// 这三条语句都可以关闭浏览器的缓冲区,但是由于浏览器的版本不同,对这三条语句的支持也不同
// 因此,为了保险起见,建议同时使用这三条语句来关闭浏览器的缓冲区
response.setHeader("ragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
modal.find('#edit-cheStatus_' + vo.cheStatus).prop("checked", true);
} else {
modal.find('#edit-cheStatus_' + vo.cheStatus).removeAttr("checked");
}
};
modal.find('#edit-cheText').val(vo.cheText);
}
})
})
$('#modal-info').on('show.bs.modal', function (event) {
let button = $(event.relatedTarget);
let id = button.data('id');
let modal = $(this);
$.ajax({
url: 'CheServlet?action=get&id=' + id,
type: "get",
success: function (voString) {
let vo = eval('(' + voString + ')');
modal.find('#info-cheName').text(vo.cheName);
modal.find('#info-cheArea').text(vo.cheArea);
modal.find('#info-cheDate').text(vo.cheDate);
modal.find('#info-cheRen').text(vo.cheRen);
modal.find('#info-chePhone').text(vo.chePhone);
modal.find('#info-cheType').text(vo.cheType);
}
request.getSession().setAttribute("alert_msg", "错误:用户名或密码错误!");
request.getRequestDispatcher("login.jsp").forward(request, response);
} else if ("register".equalsIgnoreCase(action)) {//注册
String username = Util.decode(request, "username");
String password = Util.decode(request, "password");
System.out.println("username=" + username);
System.out.println("password=" + password);
UserService userService = new UserServiceImpl();
Map<String, Object> params = new HashMap();
params.put("searchColumn", "username");//使用`username`字段进行模糊查询
params.put("keyword", username);
params.put("startIndex", 0);
params.put("pageSize", Long.MAX_VALUE);
List<User> list = (List<User>) userService.list(params).get("list");
for (User user : list) {
<label for="edit-userPhone" class="control-label">手机:</label>
<input type="text" class="form-control" name="userPhone" id="edit-userPhone">
</div>
<div class="form-group">
<label for="edit-userText" class="control-label">备注:</label>
<textarea style="height: 100px;" class="form-control" name="userText" id="edit-userText"></textarea>
</div>
<div class="form-group">
<label class="control-label">类型:</label>
<input <c:if test="${loginUser.userType != '管理员'}">disabled="disabled" title="没有权限!!!"</c:if> name="userType" id="edit-userType_管理员" type="radio" value="管理员"/>管理员
<input name="userType" id="edit-userType_普通用户" type="radio" value="普通用户"/>普通用户
</div>
<div class="form-group hidden">
<label for="edit-createTime" class="control-label">创建时间:</label>
<input type="text" class="form-control" name="createTime" id="edit-createTime">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-pill btn-grad btn-info" data-dismiss="modal">取消</button>
<button type="submit" class="btn btn-pill btn-grad btn-warning">提交</button>
</div>
</form>
</div>
CheService cheService = new CheServiceImpl();
//调用Service层删除方法(delete),将对应的记录删除
cheService.delete(id);
this.redirectList(request, response);
} else if ("edit".equals(action)) {//修改
//取出页面传进来的各个数据,并设置到Che对象的属性里
Che vo = new Che();
vo.setId(Long.valueOf(Util.decode(request, "id")));
vo.setCheName(Util.decode(request, "cheName"));
vo.setCheArea(Util.decode(request, "cheArea"));
vo.setCheDate(Util.decode(request, "cheDate"));
vo.setCheRen(Util.decode(request, "cheRen"));
vo.setChePhone(Util.decode(request, "chePhone"));
vo.setCheType(Util.decode(request, "cheType"));
vo.setCheWei(Util.decode(request, "cheWei"));
//过滤编码
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;
}
UserService userService = new UserServiceImpl();
Map<String, Object> params = new HashMap();
params.put("searchColumn", "username");//使用`username`字段进行模糊查询
params.put("keyword", username);
List<User> list = (List<User>) userService.list(params).get("list");
for (User user : list) {
运行环境
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…均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
登录、注册、退出、用户模块、公告模块、单车模块、报修模块的增删改查管理
↖[获取源码方式]见左侧