很感谢大家的阅读,不过在这里希望能够提几点学习前的问题。第
一,其实我是不太建议各位去学习这一篇文章,毕竟这是我刚刚接触JavaWeb时写的项目,所以代码质量是不太好的,容易会出现Bug,再加上在JSP中写Java代码在开发中是不规范的,我是为了应付当时的作业才这样做。我更建议大家去看一下我另外一个项目:《基于Servlet的学生管理系统》,这里是基于这个项目,换一种技术进行重写的,里面有更多逻辑上的优化,排版也更舒服。如果希望进阶学习的话可以看下我的另外一篇文章:《【机房报修管理系统】
1.简介篇机房报修管理系统简介》,由于工作原因比较忙总是补不上前端篇的文章,可能在以后会填上这个坑的,在这里再次感谢各位读者的阅读,依然是那句话:“如果有疑问的地方,先百度,不行就写评论提问,最后没反应就发送邮件”。如果发送邮件三天内都没有回应,可能是我查阅邮件后忘了或者您的邮件被系统认为垃圾邮件导致我看不到,请重新发送或者写评论提示以下,一般写评论后我的邮箱是会收到邮件的。
时隔一年更新,发现有很多人在看本文章,也有不少人提出疑惑,由于我已经在上班,空闲时间不多,所以不能够及时给你们解答,在这里先说一声抱歉。其次有很多同学在部署后出现以下问题,出现原因已经写在评论中,请查看,也感谢这位热心的同学的解答。
本系统前端是基于HTML CSS Bootstrap,后端基于纯JSP制作而成。由于是新手学习,当中的代码格式不够规范,还请各位多多包含。本项目已经在Github中开源,请各位大佬Star,Folk,Issue。
当中的while(rs.next())就是遍历了学生信息表的每一行,所以利用rs.getString()来获取当前行的某一列,如第一列为rs.getString
(1)如此类推。由于我在插入JSP代码是在HTML的表格的范围中,所以能把所有信息以表格的形式列出来。
思想:在Contain.jsp中在遍历每一行数据时我都在超链接处留下一个相对应的id,让每一行的id通过URL进行传值,然后在DaoAlertStudent.jsp获取到相应的id,再进行数据库查询,从而得出当前行的信息。
在此行代码中,我做了一个有超链接的按钮,超链接的地址指向AlertStudent.jsp,但是我在地址的后面还写了?id=" rs.getString
(1),这样一来可以把当前行的id传给AlertStudent.jsp,只要在AlertStudent.jsp中写request.getParameter("id");就能够获得当前行的id。利用id进行数据库查询,得出当前行的信息,再把各个信息放在相对应的表单控件中就可以完成信息展示。
思想:在一开始登录的时候检查用户是否正确,如果正确就建立一个session的会话,每个页面在进行操作之前都需要检查session会话是否为空,若为空则使用JavaScript提示需要登录并且强制跳转回登录界面。
做法:在DaoCheckLogin.jsp中检查输入的账号和密码是否正确,如果正确就执行一条语句session.setAttribute("user",user);,这条语句的意思是将user这个对象保存在session作用域中,而Session的生命周期是Session会话域,打开一个浏览器请求一个网站的页面后,Session开始,当Session超过时间限制后,Session注销而失效。
如果user为空则输出一个JavaScript语句,弹出窗口说“请先登录!”并且强制跳转回登录页面。
思想:这里涉及到了HTML的框架布局,可以点击此超链接查看相关内容点击打开链接,设计好框架后把相应的网页放进框架中,导航栏那里的超链接的target属性记得是要填你想要显示框架的name属性的属性值。不然他会默认刷新超链接所在的当前框架。
做法:下面是我的frame.html代码(注意在框架页里面,框架不能在body元素中,必须要删除body元素,不然会不显示):
我的超链接的target属性都是指向了contain,跳转的时候只有contain这个框架镜像刷新,这样就能做到问题的效果。
做法:一般来说,如果元素在框架中,如果不设置某些属性,当超链接跳转的时候只会在当前框架刷新,不会整个页面刷新,如果需要实现整个网页刷新,对应不同的情况有不同方法。
思想:首先得要有两个概念,最大页和最小页,这个最小页(minPages)和最大页(maxPages)是用于接下来循环的边界(以下的什么当前页(pagesNo)-
3,当前页(pagesNo) 3中的数字可以任意设置,看你分页需要有多长的需求,数字越大,分页显示的数字就越多)。最小页需要判断当浏览的当前页(pagesNo)-3页的时候是否小于0时,如果小于0便会越界,因为没有页数是负数的,所以需要检查当前页(pagesNo)-3页的时候如果小于0时,就需要把最小页变为
1,如果不是小于
0,则最小页为当前页-3页。最大页同理,如果当前页(pagesNo) 3页如果越过数据库所有数据所呈现的页数(pagesCount),则最大页只能是等于数据库所能所能提供的最大页数,否则最大页就是当前页
3。最后循环显示页数就能得到这样的效果。
代码出自Contain.jsp,可以对应上面的思想进行分析,下面有判断是否是当前页,如果是当前页则添加高亮css的class属性。
由于我是使用BootStrap,里面有一个class属性:.active,把这个属性放到相对应的class中就可以了,详情可以参考代码Contain.jsph和上面的第八点。也可以参考以下网址:点击打开链接。
答:这是由于浏览器里面优先读取了缓存,即记录下你之前登录过这个系统的样式,浏览器这样做是为了能让网页访问速度更快,但是在这里却变成了绊脚石。解决方法有两个
(2)每次进入更新HTML页面的时候使用CTRL F5进行刷新,这样能不通过缓存进行刷新。
1.没有实现将所有查询到的数据分页显示,如果没有分页显示,现在数据库的数据量少还可以,但是一旦数据库有上千条数据,在显示的时候会导致一页往下拉全是数据,这样用户用起来体验就不好了。
分页查询已经实现,请示通过数据库指定行数查询 id传值的方法就能够实现,详情看我GitHub源码的Contain.jsp。
如果我的数据库有上千行语句,以每页显示10行来计算,需要100页,也就是100格,可是屏幕的空间根本不能够容下一行格的空间,所以分页元素极有可能会溢出。所以现在的解决思路是像百度那样分页,按下第10页,然后第10页移到中间,如此类推。
修复了了上面分页的Bug,能够像百度的分页那样自动扩展页数并且增添了当前页高亮的效果。效果图如下:
解决方法:我参考的方法:点击打开链接这个是因为我选的JDBC版本太高(8.0),所以导致数据库的时区出错。解决方法可以在命令行登录了MySQL数据库,输入一下命令行:
最近的JSP课程讲到了数据库的连接,然后我就试着用单纯的JSP来写这个学生资料管理系统,怎么说呢,我在以前有用过Java Swing的形式做过一个学生管理系统的经验,项目地址:点击打开链接。所以这一次的项目我是按照上一次的经验做成的。虽然说代码量不大,估计前端 后端就700~800行,可是一个人兼顾前端和后端是真的累,以后要找个会前端的帮忙背锅(笑),花了大概3~4天的空闲时间,这次的开发也挺随性的,想到什么就写什么,完全没有开发流程的规范,在实现点击修改按钮就能修改当前行的功能时,还想了一早上都不知怎样实现,然后突然灵感一来,想到能通过get方法让URL来传值,超链接也可以仿照get方法来传学号的值,再通过查询数据库就能获得当前的值了(其实直接把所有的内容通过传值获得,那就能减轻数据库的负担,这种方法更好,但是安全性不高),所以有时编程知识面和灵感也很重要。
这一次的开发虽然是按照旧的经验做的,但是也学到很多东西,如BootStrap框架的使用,JavaScript的使用,等等。巩固了上课的内容,充实了自己,自己亲手把东西做出来后也是挺有成就感的,可能下次的作品还是学生管理系统,只是编程了使用各种框架,实现前端和后端分离的学生管理系统,还敬请期待。
IT小鸟.:请问博主,您的图片数据是存在本地数据库里还是用了对象存储服务or其他什么服务呢?
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。