用于JavaWeb简历作业的展示

数据库部分

管理员表

用户信息

Java部分

项目结构采用三层结构

部分代码

登录页面

<%--Created by IntelliJ IDEA.User: zjtDate: 2022/2/18Time: 20:49To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="zh-CN">
<head><meta charset="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>管理员登录</title><!-- 1. 导入CSS的全局样式 --><link href="css/bootstrap.min.css" rel="stylesheet"><!-- 2. jQuery导入,建议使用1.9以上的版本 --><script src="js/jquery-2.1.0.min.js"></script><!-- 3. 导入bootstrap的js文件 --><script src="js/bootstrap.min.js"></script><script type="text/javascript">//切换验证码function refreshCode() {var vcode = document.getElementById("vcode");vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time="+ new Date().getTime();}</script>
</head><body>
<div class="container" style="width: 400px;"><h3 style="text-align: center;">管理员登录</h3><form action="${pageContext.request.contextPath}/loginServlet" method="post"><div class="form-group"><label for="username">用户名:</label><input type="text" name="username" class="form-control" id="username" placeholder="请输入用户名"/></div><div class="form-group"><label for="password">密码:</label><input type="password" name="password" class="form-control" id="password" placeholder="请输入密码"/></div><div class="form-inline"><label for="vcode">验证码:</label><input type="text" name="verifycode" class="form-control" id="verifycode" placeholder="请输入验证码" style="width: 120px;"/><a href="javascript:refreshCode()"><img src="${pageContext.request.contextPath}/checkCodeServlet" title="看不清点击刷新" id="vcode"/></a></div><hr/><div class="form-group" style="text-align: center;"><input class="btn btn btn-primary" type="submit" value="登录"></div></form><!-- 出错显示的信息框 --><div class="alert alert-warning alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" ><span>&times;</span></button><strong>${login_msg}</strong></div>
</div>
</body>
</html>

表单页面

<%--Created by IntelliJ IDEA.User: zjtDate: 2022/2/18Time: 18:12To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html lang="zh-CN">
<head><!-- 指定字符集 --><meta charset="utf-8"><!-- 使用Edge最新的浏览器的渲染方式 --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!-- viewport视口:网页可以根据设置的宽度自动进行适配,在浏览器的内部虚拟一个容器,容器的宽度与设备的宽度相同。width: 默认宽度与设备的宽度相同initial-scale: 初始的缩放比,为1:1 --><meta name="viewport" content="width=device-width, initial-scale=1"><!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --><title>用户信息管理系统</title><!-- 1. 导入CSS的全局样式 --><link href="css/bootstrap.min.css" rel="stylesheet"><!-- 2. jQuery导入,建议使用1.9以上的版本 --><script src="js/jquery-2.1.0.min.js"></script><!-- 3. 导入bootstrap的js文件 --><script src="js/bootstrap.min.js"></script><style type="text/css">td, th {text-align: center;}.footer{height: 100px;width: 100%;position: fixed;bottom: 45px;}</style><script>function deleteUser(id) {//用户提示if(confirm("您确定要删除该条数据吗?")){//确定删除//删除访问路径location.href = "${pageContext.request.contextPath}/deleteUserServlet?id="+id;}}window.onload = function () {//给删除选中按钮添加单击事件document.getElementById("deleteSelect").onclick = function () {var flag = false;if(confirm("您确定要删除选定信息吗?")){//判断是否有选中信息var cbs = document.getElementsByName("uid");//遍历for(var i = 0; i < cbs.length; i++){//设置状态if(cbs[i].checked){flag = true;break;}}if(flag) {//表单提交document.getElementById("deleteSelectForm").submit();}}};//获取第一个Cbdocument.getElementById("firstCb").onclick = function () {//获取列表中所有Cb(复选框)var cbs = document.getElementsByName("uid");//遍历for(var i = 0; i < cbs.length; i++){//设置状态cbs[i].checked = this.checked;}}}</script>
</head><body>
<div class="container"><h3 style="text-align: center;font-family: 华文行楷;font-weight: bold;">用户信息列表</h3><div style="float: left;font-family: 楷体;font-weight: bold;"><form class="form-inline" action="${pageContext.request.contextPath}/findUserByPageServlet" method="post"><div class="form-group"><label for="name">姓名</label><input type="name" value="${condition.name[0]}" name="name" class="form-control" id="name"></div><div class="form-group"><label for="address">籍贯</label><input type="address" value="${condition.address[0]}" name="address" class="form-control" id="address"></div><div class="form-group"><label for="email">邮箱</label><input type="text" value="${condition.email[0]}" name="email" class="form-control" id="email"></div><button type="submit" class="btn btn-default" style="font-weight: bold;">查询</button></form></div><div style="float: right;margin: 5px;font-family: 楷体;"><a class="btn btn-primary" href="${pageContext.request.contextPath}/add.jsp" style="font-weight: bold;">添加联系人</a><a class="btn btn-primary" href="javascript:void(0);" id="deleteSelect" style="font-weight: bold;">删除选中</a></div><form id="deleteSelectForm" action="${pageContext.request.contextPath}/deleteSelectServlet" method="post"><table border="1" class="table table-bordered table-hover"><tr class="success" style="font-family: 楷体;font-weight: bold;"><th><input type="checkbox" id="firstCb"></th><th>编号</th><th>姓名</th><th>性别</th><th>年龄</th><th>籍贯</th><th>QQ</th><th>邮箱</th><th>操作</th></tr><c:forEach items="${pb.list}" var="user" varStatus="i"><tr style="font-family: 楷体;font-weight: bold;"><td><input type="checkbox" name="uid" value="${user.id}"></td><td>${user.id}</td><td>${user.name}</td><td>${user.sex}</td><td>${user.age}</td><td>${user.address}</td><td>${user.qq}</td><td>${user.email}</td><td><a class="btn btn-default btn-sm" href="${pageContext.request.contextPath}/findUserServlet?id=${user.id}" style="font-weight: bold;">修改</a>&nbsp<a class="btn btn-default btn-sm" href="javascript:deleteUser(${user.id});" style="font-weight: bold;">删除</a></td></tr></c:forEach></table></form><div class="footer"><nav aria-label="Page navigation"><ul class="pagination"><!-- 上一页 --><c:if test="${pb.currentPage == 1}"><li class="disabled"><!-- 当前是第一页时禁用上一页 --></c:if><c:if test="${pb.currentPage != 1}"><li></c:if><a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${pb.currentPage-1}&rows=${pb.rows}&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li><c:forEach begin="1" end="${pb.totalPage}" var="i" step="1"><c:if test="${pb.currentPage == i}"><li class="active"><a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${i}&rows=${pb.rows}&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}">${i}</a></li></c:if><c:if test="${pb.currentPage != i}"><li><a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${i}&rows=${pb.rows}&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}">${i}</a></li></c:if></c:forEach><!-- 下一页 --><c:if test="${pb.totalPage == pb.totalPage}"><li class="disabled"><!-- 当前是最后一页时禁用下一页 --></c:if><c:if test="${pb.currentPage != pb.totalPage}"><li></c:if><a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${pb.currentPage+1}&rows=${pb.rows}&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li><span style="font-size: 25px; margin-left: 10px;font-family: 楷体;font-weight: bold;">共${pb.totalCount}条记录,共${pb.totalPage}页</span></ul></nav></div></div>
</body>
</html>

登录Servlet

@WebServlet("/loginServlet")
public class loginServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.设置编码request.setCharacterEncoding("utf-8");//2.获取数据//2.1获取用户填写验证码String verifycode = request.getParameter("verifycode");//3.验证码校验HttpSession session = request.getSession();String checkcode_server = (String) session.getAttribute("checkCode");session.removeAttribute("checkCode");//确保验证码一次性//当用户输入的验证码为空或者不正确时登录失败if( (!(checkcode_server!=null)) || (!checkcode_server.equalsIgnoreCase(verifycode))){//验证码不正确//提示信息request.setAttribute("login_msg","验证码错误!");//跳转登录页面request.getRequestDispatcher("/login.jsp").forward(request,response);return;}Map<String, String[]> map = request.getParameterMap();//4.封装User对象Admin admin = new Admin();try {BeanUtils.populate(admin,map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}//5.调用Service查询AdminService service = new AdminServiceImpl();Admin loginAdmin = service.login(admin);//6.判断是否登录成功if(loginAdmin != null){//登录成功//将用户存入sessionsession.setAttribute("admin",loginAdmin);//跳转页面response.sendRedirect(request.getContextPath()+"/index.jsp");}else{//登录失败//提示信息request.setAttribute("login_msg","用户名或密码错误!");//跳转登录页面request.getRequestDispatcher("/login.jsp").forward(request,response);}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}

运行结果

结束

JSP的小案例<用于JavaWeb简历展示>相关推荐

  1. HTML小案例----简单个人简历

    第一个简历 其中用了很少的css内容,废话不多说,直接上效果图 <html> <head><title>个人简历</title><meta cha ...

  2. 一篇有关javaWeb的,有关转发,重定向,session,request域的综合小案例:验证码

    **发一篇有关javaWeb的,有关转发,重定向,session,request域的综合小案例:验证码. 需求是: 1. 访问有验证码的登陆页面login.jsp 2. 用户输入用户名,密码以及验证码 ...

  3. Python Selenium之等待元素小案例(用于某网站自动打开领取QQ名片赞)--文末有附selenium知识点以及对应学习文档网址

    ''' Author: Liang LastEditors: Liang Date: 2020-10-08 11:41:09 LastEditTime: 2020-10-21 13:46:21 Ema ...

  4. JavaWeb:shiro入门小案例

    学习原因:刚接触Javaweb的时候懂的很少(当然现在也不多),所以开发一个小项目都是自己从头写到尾,从登录界面一直到数据库,当时想以后开发要是都这么写那不是很枯燥?!-知道后来团队开发,接触的开发人 ...

  5. HTML图片标签列表表格以及合并单元格,个人简历小案例

    合并单元格: 1.先实现特殊表格对应的普通表格的基本结构. 2.判定当前单元格是跨行还是跨列,给对应的单元格属性,属性值就是占据的单元格数量 (从上到下,从左到右的顺序,合并单元格,跨列用colspa ...

  6. web分页显示功能(“小案例:实现web端对客户资源的增删改查”里面的一个功能)

    分页显示功能("小案例:实现web端对客户资源的增删改查"里面的一个功能) (2016年11月19日18:15:07 上课学习总结) 效果展示: 第n页/共M页   首页  上一页 ...

  7. 4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例

    4.10/4.11/4.12 lvm讲解 操作流程: 磁盘分区-->创建物理卷-->划分为卷组-->划分成逻辑卷-->格式化.挂载-->扩容. 磁盘分区 注: 创建分区时 ...

  8. Mybatis案例升级版——小案例大道理

    纯Mybatis案例升级版--小案例大道理 前言: 这几天看了一本书<原则>,在上面看到了一句话叫"每个人都把自己眼界的局限当成世界的局限",大学生是?,大学就是鱼缸, ...

  9. (下)开发一款微信小程序的个性简历,能打开大厂之门并获得门票?(附源码)

    回顾 阅读本文之前,可以先看看上一篇分享的内容,主要讲微信小程序的由来,它的特点及产品优势,行业应用,开发语言,运行环境,开发前的准备工作等等. 本项目是基于微信小程序原生框架,常用原生组件及官方AP ...

最新文章

  1. 计算机英语protocols,计算机网络协议词汇Protocols
  2. 使用struts 2 获取服务器数据 ongl表达式 标签
  3. static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
  4. java 排序api_用java api进行sort
  5. SQL join中on与where区别
  6. 60-100-240-使用-DataSource-JDBC相关-JDBC读取各种数据源
  7. 【白皮书下载】2020年数字营销与商业增长白皮书.pdf
  8. 互联网寒冬,程序员该怎样突破重围?
  9. 洛谷P3649 [APIO2014]回文串(回文自动机)
  10. PreferenceScreen修改背景颜色
  11. thinkphp商城系统 有什么优势 好在哪里
  12. PHP-FPM 性能优化
  13. RationalDMIS基于CAD的编程测量
  14. 服务器重启后samba启动不了,提示stop: Unknown instance: smbd start/running, process 76585...
  15. 知网 万方 论文免费下载方法
  16. html中按钮下拉菜单,Bootstrap3.0学习笔记之按钮与下拉菜单
  17. Failed to open \EFI\BOOT\mmx64.efi问题解决
  18. java fock join 列子
  19. Centos 单节点部署 Elasticsearch
  20. CSDN日报191122:Android工程师的面试指南

热门文章

  1. macaw php,用 Composer构建自己的 PHP 框架之构建路由
  2. C++实现贪吃蛇(控制台)
  3. 方差、标准差、均方差、均方误差区别总结
  4. Invalid number format for port number
  5. K、M、G、T、P、E、B的含义和全称 from csdner qqtian1110
  6. 戴尔r910主板接口
  7. C/C++典型漏洞产生原理与Demo
  8. talentq测试题库rb_TalentQ OT机经分享
  9. android jack make区别,一直以为Jack就是个英文名而已,万万没想到……
  10. v中国无框直驱电机行业运营态势与投资盈利预测报告2022-2027