任务要求如下:

大作用题目:简历信息管理系统的设计与实现

1、构思基于B/S的简历信息管理系统的功能需求、栏目设置、操作流程,表现方式等。
2、使用HTML、CSS、JavaScript、Servlet和JSP等技术实现简历信息管理中的增、删、改、查和展示(列表及详细页)等基本功能。鼓励在系统实现中使用JavaBean和Ajax技术。鼓励实现列表翻页、多选操作、附件上传下载等扩展性功能。
3、简历内容应至少包含15个以上的信息项(可以包含照片和证书信息)。
4、统一使用MySQL 8作为数据库,统一以MyEclispse 2016可正确兼容的项目包来组织系统文件。
5、完成系统设计与实现报告(后面会提供模板)
大作业组织方式:网络协作(疫情期间)及现场协作(开学以后),分组进行。
1、实行自由分组,每组基本人数6人,并保证每组人数不低于4个,各组推选出组长1名。
2、分组一般不得跨班进行,不得已跨班分组时需教师同意。
3、组长应(疫情期间可通过网络)组织组员进行题目的分析与系统总体设计、协调组内人员分工、控制开发进度和系统总体联调。
4、考核答辩以小组为单位进行,每组一个代表参加答辩,代表由教师从小组成员中随机挑选,其答辩成绩代表小组所有人考核成绩。(开学以后)
5、鉴于“从湖北省和国内其他中、高风险地区返陕的师生,教职员工一律居家隔离14天,学生由学校统一组织留观14天”,从湖北省和国内其他中、高风险地区返陕的同学,可以不参加分组,个人完成并通过网络提交自己的开发成果和报告文件!
6、疫情期间未带电脑回家的同学可以自行成组,开学以后完成设计工作并以小组形式进行答辩。
7、对整体创意、效果类同的小组作品按抄袭处理!

一、需求分析

将系统分为用户和管理员两个界面
<1>用户界面基本功能需求:
(1)用户登录
简历信息管理系统采用账号和密码的验证模式,进入简历信息管理系统之前,用户必须在登录界面输入账号和密码,只有通过验证的用户才能进入简历信息管理系统的操作主界面。
(2)用户注册
新用户可以点击注册按钮,申请一个账号。
(3)用户个人信息管理
用户成功登录主界面以后可以对自己的信息进行查看和修改,比如可以修改密码。
(4)简历信息管理
包括3个功能模块:填报简历、查看简历、修改简历
(5)注销登录
点击注销按钮退出简历信息管理系统。
<2>管理员界面的基本功能需求:
(1)管理员登录
管理员进入简历信息管理系统之前也要进行账号和密码的校验,登录成功之后才能进入简历信息管理系统。
(2)个人信息管理
分为两个功能模块:查看管理员信息和修改管理员信息
我的信息:点击该按钮之后,用页面将该管理员的信息显示出来。
修改信息:在该界面,管理员可以修改自己的基本信息(账号不能被修改)
(3)简历信息管理
功能模块:简历列表
在该模块中,管理员可以查看所有用户提交过的简历,并对这些数据进行增、删、改、查等操作,还必须具有简历列表的翻页和多选删除、组合查询等功能。
(4)注销登陆
管理员点击注销按钮之后退出简历信息管理系统。

二、总体设计

根据上一步需求分析的结果,我们可以绘制出简历信息管理系统的功能模块图(如下)

Web简历信息管理系统_servlet


该系统主要三个模块,用户模块、管理员模块、联系作者

在用户模块中,用户登录以后可以对自己的基本信息和简历信息进行管理,例如可以修改密码、提交简历、如果觉得简历没有完善可以对提交的简历进行更新操作,提交之后还可以通过查看简历按钮查看自己提交的简历信息。

在联系作者模块中,用户可以点击联系作者查看该简历信息管理系统的开发人员信息。

在管理员模块中,管理员可以进行个人信息和简历信息的管理,个人信息包括修改姓名和密码以及查看自己的信息。简历信息管理包括查看所有用户提交过的简历,并对这些简历进行查看和删除操作。

根据我们对各个模块功能的大致分析,绘制出简历信息管理系统的系统流程图

Web简历信息管理系统_tomcat_02


该项目有两个界面,一个是普通用户的界面,用户身份验证成功后进入用户主界面进行个人信息管理和简历信息的管理,另一个是管理员界面,管理员身份校验成功后可以对所有用户的简历信息进行管理,同时也可以对自己的账号信息进行查看和更新操作。

下面是这个项目所有页面的思维导图,图中可看出每个页面以及与该页面相对应的后台交互过程。

Web简历信息管理系统_servlet_03


主要就是前台用html页面或者jsp动态页面的方式将内容呈现给用户,用户填报了数据之后,提交给对应的后台servlet或者jsp进行数据处理,处理完了后根据用户的请求对页面再次转发,FilterServlet包下的两个过滤器可以有效防止用户直接拿网址进入后台的风险,所以本系统的安全性能很高,几乎可以不用担心外部的非法请求和攻击。Javabean包下面放着三个javabean的类和一个数据库操作类DAO.java、一个数据库连接类DbUtil.java,用javabean进行封装之后,我们这个系统还用到了EL表达式和JSTL标签技术,这两个结合起来使用可以大大减少我们的代码量,而且使得代码的可读性大大提高。

三、详细设计

<1>普通用户界面

1.用户登录模块

Web简历信息管理系统_数据库_04


Web简历信息管理系统_web_05


用户在前台login.html输入用户名和密码,将值提交到userLogin.java进行处理。先要查询数据库校验用户身份,如果校验成功,我们在servlet中将用户登录的账号加入session中,方便我们在以后对这个用户进行操作。

2.个人信息管理模块

Web简历信息管理系统_tomcat_06


这个是用户修改密码的流程,点击修改密码按钮,对自己的信息进行修改,在userChangePassword.java中进行更相信数据库的操作。主要代码如下:

Web简历信息管理系统_web_07


3.简历信息管理模块

(1)填报简历

Web简历信息管理系统_servlet_08


Web简历信息管理系统_web_09


Web简历信息管理系统_web_10


我们将用户上传的数据进行封装处理后,调用DAO层的数据库插入方法,将用户的数据插入到数据库中,用户上传的照片只存路径就可以。数据插入成功后回到主界面。这里我们用了JSTL标签来判断是否允许用户提价简历,如果没有提交过,显示提交界面,如果已经提交过,则不能进行二次提交,这是不会显示简历提交的界面。

(2)我的简历

用户在提交之后可以查看自己提交的简历,那这其实就是一个查询数据库的过程,由于账号user_id是主键,用账号可以查看简历的所有值。

Web简历信息管理系统_java_11


Web简历信息管理系统_servlet_12


我们通过账号查出简历的所有信息以后,还对javabean进行了封装,直接放入session的域里面,然后在userResumeShow.jsp中运用EL表达式和JSTL标签可以很方便的取出简历的值进行显示。

(3)修改简历

Web简历信息管理系统_java_13


先在userResumeChange.jsp中将该用户在数据库中的值查出来,然后放进session中,我们就可以在当前页面用EL表达四和JSTL标签显示成可以编辑的简历,允许用户对自己的简历进行修改,同时也会进行判断用户是否提交过简历,

如果已经提交过,那么不会显示修改简历的界面。

Web简历信息管理系统_web_14


Web简历信息管理系统_web_15


Web简历信息管理系统_数据库_16


这里分了两种情况,如果用户更新了照片,我们就要改数据库中的照片路径,如果没有那就不用改,只是调用了两个不同的方法。

4.用户注销模块

点击注销按钮,页面转发到 deleteSession.java的servlet中进行处理

Web简历信息管理系统_数据库_17


在这个页面中,我们只需销毁session就可以结束这次会话,那session里面寸的账号那些值也就都没了,实现了注销的效果。

<2>管理员界面

1.个人信息管理模块

(1)我的信息

这一部分主要是管理员对自己的身份信息和账号信息进行查看和修改,

管理员查看自己的信息是查数据库的过程,由于账号是主键,所以我们可以用账号查到每个管理员的所有信息。

Web简历信息管理系统_数据库_18


左边是现在数据中查询管理员的所有信息并封装成Admin类的对象,随后将该对象放到session中,那我们就可以直接在当前页面取出session中存的对象,并利用EL表达式和JSTl标签进行打印。

Web简历信息管理系统_java_19


(2)修改信息

这个功能和查看信息差不多,只不过要把通过管理员账号查出来的值显示成可编辑的页面,这样在用户更新自己的信息之后,表单的值会再次提交到servlet进行数据库的更新操作。

Web简历信息管理系统_java_20


先通过数据库查出管理员的信息,并放进session,方便用EL表达式和JSTL标签进行操作。

Web简历信息管理系统_数据库_21


这里通过给表单添加onsubmit()属性来限制表单的提交,只有输入的信息项不为空是testmessage()函数的返回值才能为true,表单才可以正常提交,否则,表单不会被提交。这也防止了在serlvet中进行判空的操作。

Web简历信息管理系统_servlet_22


也对session中的值进行了判断,如果为空就不显示修改信息的界面,代码更健壮、安全。

2.简历信息管理模块
(1)显示所有的简历列表

我们这里要利用mysql数据库的limit关键字和count(*)这个聚集函数,用limit去限制查询的开始位置和查询的记录总数,用count去作为查询的总记录数,之后可以利用count去算出显示的页数。

Web简历信息管理系统_web_23


我们将前台页面传递过来的页码参数结构以后,调用数据库的查询方法find(Connection con,int page),该方法时查出我们在传递过来的页码上要显示的记录数,主要时sql语句:select * from user_resume order by user_idlimit?,?;

第一个参数用于指定查询记录的起始位置,第二个参数用于指定查询数据所返回的记录数。我们要用前台传递过来的页码进行计算,确定两个参数,然后将数据据库的查询结果封装到集合里面。还要放进request的域里面,方便前台进行数据接收。

Web简历信息管理系统_web_24


在前台将集合里面的值用jstl的<c:foreach>标签进行遍历即可实现数据库的分页查询。这里需要注意,我们在分页之前需要用聚集函数去计算出我们总的简历能够显示多少页。

Web简历信息管理系统_数据库_25


Web简历信息管理系统_servlet_26


如果是当前页,那就显示[当前页的页码],如果不是当前页,那就显示一个可以跳转的超链接,方便前台用户的体验。

(2)简历的多选删除功能

我们经常需要对大量的数据进行操作,如果将简历逐个删除,那要进行大量的连接数据库操作,这样负担太大,我们可以使用数据库的批量删除方法,连接一次数据库就能删除大量的数据。

Web简历信息管理系统_tomcat_27


能直接将选中账号传入adminResumedeletemore.java是我们在遍历list集合进行简历的分页显示时,就已经为每一条简历加入了复选框,所以我们能直接选中每一条简历的账号。

Web简历信息管理系统_数据库_28


Web简历信息管理系统_数据库_29


3.联系作者模块

Web简历信息管理系统_java_30


我们先调用数据库中的方法,将管理员的账号和姓名查出来并封装到集合里面,再将请求转发到linkAuthor.jsp中,然后再用EL表达式和JSTL标签将集合的值遍历打印出来。

4.servlet过滤器设计

为了防止用户直接拿网址就能进入后台,我们必须去写一个过滤器去过滤客户端的请求,如果满足过滤器的要求,那就将请求交给下一个过滤器,如果已经是最后一个过滤器了,那直接将请求交给目标资源。设计过滤器的目的就是为了提高网站的安全性。

Web简历信息管理系统_servlet_31


Web简历信息管理系统_java_32


我们只需要实现Filter接口中的doFilter()方法就可以,但是不用过滤登录、注册和联系作者的界面,下面是过滤器的配置从web.xml文件可看出,

Web简历信息管理系统_tomcat_33


过滤的目标是所有admin文件夹和user文件夹的请求。

5.数据库设计。

三个表。用户表、管理员表、用户简历表。

(1)用户表

Web简历信息管理系统_servlet_34


(2)用户简历表

Web简历信息管理系统_web_35


(3)管理员表

Web简历信息管理系统_java_36


构造PIM类模型

Web简历信息管理系统_数据库_37

四、结果展示

主界面

Web简历信息管理系统_servlet_38


用户登录界面

Web简历信息管理系统_数据库_39


用户主界面

Web简历信息管理系统_java_40


查看自己提交的简历

Web简历信息管理系统_tomcat_41


简历更新功能

Web简历信息管理系统_java_42


管理员主界面

Web简历信息管理系统_servlet_43


管理员对用户简历的操作界面

Web简历信息管理系统_servlet_44


管理员更新信息的界面

Web简历信息管理系统_servlet_45

五、成员分工

组员1:页面的后台处理和过滤器的设置,包括系统总体联调。
组员2:用户界面和管理员界面的登陆和注销的界面和后台处理。
组员3:用户界面和管理员界面的个人信息管理模块的设计(包括界面和数据处理)。
组员4:管理员界面的简历信息管理模块设计,包括界面和数据处理。
组员5:用户界面的简历填报和查看功能的设计,包括界面和数据处理。
组员6:用户界面的修改简历模块的设计(包括界面和数据处理)以及各种界面的CSS修饰。

六、体会总结

根据此次我们小组的六个人的努力,项目已经做完,以下是我们每个人的心得体会。
组长:
经过20多天的开发之后,简历信息管理系统这个项目接近了尾声。虽然过程非常艰辛,但是中间的过程是十分值得怀念的。这是我第二次以组长的身份进行软件开发了,在此我总结了以下几点心得:
1.对于所有的软件开发,前期的需求分析是非常重要的,这其实是占了开发的大部分时间的,但是很多人常常会忽略调这个点,我们代码写起来其实很快,但是如果前期的需求分析没做好,后期在开发时可能还要改,那工作量不是一般的大,我们平时导个项目都会碰到各种环境问题,更别提改项目需求了。
2.要注重代码的书写问题。程序代码都有严格的规范性,所以我们应该注重代码和注释的规范性,要知道,大项目都是由团队开发的,并不是一个人开发整个项目,所以为了我们的代码可读性高一点,也为了方便程序员之间的深入交流,我们应该在代码的规范性和精简度方面多做考虑。
3.程序bug在所难免。程序碰到问题很正常,还没有哪个程序员敢保证自己开发的系统完全没问题,那我们应该冷静下来,有bug那我们就debug,不会就搜,不懂就查文档,然后一步一步排除故障。
4.一个清晰的思路和想法非常重要。我们在编写程序时,如果没有一个大致的思路就去写代码,那你写着写着就懵逼了,但你如果有一个明确的思路,即使碰到了bug也丝毫不慌,因为只要你的大体思路是对的,那前面这些小bug都不在话下,拿我来说吧,刚开始做列表翻页和多选删除这两个功能的时候也是很迷茫,但我通过自己冷静的分析,就基本确定了该怎么搞,有了大致的思路后就只剩下用代码去实现了,实现简单,关键是你产生那个想法的过程会很艰难,这也是很多人在软件开发上卡住的一个关键因素。
5.和同伴要深入交流。没有什么人是完美的,所以才有了弥补自己不足的同伴。每个人肯定都有自己的想法,身为组长必须兼顾到每一位组员,耐心是必不可少的,小组成员之间交流想法是经常的事,只有广泛听取组员的意见并积极总结,才能和组员更深入的交流,总不能不理解别人的思路吧。
项目也做完了,软件开发已不仅仅只是写代码了,前期的需求分析非常重要。我也对软件最初的观点有了本质性的改变!程序员不仅仅是一份职业,更是一份细心+一份耐心+一份责任心=人生价值的诠释。
组员1:
本次简历管理系统设计是基于Java语言,主要用到了数据库的连接和操作,JSP技术,HTML技术,CSS相关知识。通过建立以管理员,用户为基础的相关操作实现了简历管理系统的基本功能,如管理员的个人信息管理,简历信息管理,
用户的个人信息管理,简历信息管理等功能,主要是对于个人信息及简历信息的增删改查。
通过这次的简历系统设计,我对web课程有了更深刻的理解,同时也将上课学到的相关知识应用到实际中去。在开始进行系统设计的时候,我们对于整个系统的设计还不是很清楚的,缺乏一定的方向性。还好,我们的组长提出了很好的想法并组织我们进行整个信息系统的设计。在进行整个信息系统设计的过程中,我也遇到一些问题,比如在java中对数据库的操作及数据的提取,网页布局的设计。花了很长的时间去做,但一直没有解决。由于疫情期间,小组之间不方便交流,但组长还是克服困难,通过远程控制的方法,帮助我解决了问题。当然从这次的信息系统设计中,我还是学到了很多的东西,比如网页页面的合理布局,怎样使得表单使用方便且美观,web项目的整体实现及各个网页实现,java对于数据库的操作等等。
对于初次进行web网页设计的我来说,这次的作业还是很有难度的,确实在整个过程中是不断遇到问题和解决问题的,有幸在组员的帮助下,最终我们较好的完成了这个项目。20天左右项目设计既增强了我自身的知识储备,又有效的锻炼了团队合作的能力,感觉获益匪浅。
组员2:
今天是5月18号,开发简历信息管理系统已有一个月了,这个项目算是我在大学期间真正投入精力和时间去做的一个,其实内心的感触挺深的。
一开始老师给这个题目时,我是一头雾水,中期作业提交的是表单式的简历,仅仅就是一份而已。而期末大作业是要做一个能将所有简历收集起来的系统,当时我JSP的视频还没开始看,不懂得怎么将JSP、servlet、html这些联系起来。所以,在开发初期,我边做需求分析,边看视频学习,视频里的东西很散,我没办法整理出写代码的思路,我决定在网上找资源,模仿别人也算是一个学习的过程。跟着别人的就发现不同的人写的区别很大,虽然目的相同,有的甚至在JDBC连接上都不一样,每次看懂别人的,再去写一个符合自己系统使用的。一开始,可能半个小时的代码量,要花费几个小时,甚至一天两天的时间去找bug,但当问题解决了之后,还是非常的愉快的。
这个系统我一共做了三次。第一次:我在JSP页面写代码,提交到相应的servlet里,在转发到JSP页面进行处理,将处理放在了JSP页面,做到一半才发现处理应该放在servlet里面才合理,应为JSP本身就可以跳转到另一个JSP页面,这样写servlet根本没有起到任何作用,而且存在系统安全性的问题,于是放弃了这种写法;第二次:在第一次的基础之上,将处理代码写在servlet里,并使用的JavaBean,前面登录、注册实现都挺好,但是我在服务方法里存进session里的值,跳转到JSP页面多出来为空,这个问题困扰了我两三天,后来发现在doGet方法里存进session,跳转页面可以读出,因为前期做到都用了服务方法,这一版本也放弃了;第三次:这一次是在我们组长的引导下做的,加上之前的基础,也就一口气做完了。
通过这次的实践,我真正的觉得以下几方面是很重要的:
1、学会用百度。现在网上的资源很多,有些博客写的非常好而且详细,很适合初学者,初次开发,一般都是先模仿别人的,等熟练了,在开发自己的;
2、选一个好的组长。一个好的领导者对于整个系统的开发非常重要,在开发过程中,他能让每一个队员都不掉队,给队员改bug,哪怕是很小的错误也会很耐心,不停地督促着大家前进;
3、细心大胆。做系统必须敢于想、敢于做,写代码时要细心,可能你会因为敲掉了一个字母而改几天的bug;
4、坚持不懈,有一颗强大的心。遇到问题的时候可以问问同学或者查资料,再者可以问老师,中途放弃不是解决问题的办法。
做完系统,我才觉得这句话说的很好:认真做事只是把事情做对,用心做事才能把事情做好。把每一件简单的事情做好就是不简单,把第一件平凡的事情做好就是不平凡。
组员3:
《web应用开发技术》作为一门理论和实践高度结合的课程,在理论学习过程中同时开发一个小型的管理系统,可以更好的理解和掌握web开发的思想和流程。在理论学习中,我们从html,CSS,JavaScript入门,通过这三个技术,我们可以编写出一个静态的网页。但静态网页是无法满足我们实际应用的,随后在学习了Servlet,JSP,JavaBean等,我们就能实现动态网页,同时,这也是本次简历信息管理系统的技术核心。
初次接触web应用开发,不知从何入手,所幸在组长的帮助之下,慢慢上手,将理论和实践成功结合。在开发一个系统之前,我们应先做系统的需求分析;再进行总体设计,根据上一步得到的需求结果确定系统的功能,界面等;最后根据界面的设计,开始我们的编程实现。编程实现过程主要如下:先确定当前界面是采用html还是JSP(确定网页是动态还是静态效果),开始进行网页的设计,再根据功能的分析,编程实现对应的servlet类,来处理用户的请求(实现系统的功能),最后通过css进行网页的美化。在简历信息管理系统中,主要有用户,管理员,简历信息三类数据,故编写三个Javabean类实现数据的封装,便于在后期对数据的操作(增删改查)。
在编程实现中,有许多的问题。例如数据在前后端的传输。我们可以通过表单提交的action属性或者在按钮中通过onclick链接对应的servlet类,实现数据的前端到后端,那么,要如何将servlet里处理好的数据,显示到对应的网页呢?
最后采用的解决方法是setAttribute(),getRequestDispatcher()函数的应用和EL表达式的使用。在servlet类中,request对象调用setAttribute(属性,传回的值),将需要传回的数据赋给属性,再调用getRequestDispatcher()函数,转发到目的网页,最后,在目的网页里,可通过EL表达式获取传回的值。(实现数据从后端到前端)
诸如此类的问题有许多,但在组长的远程帮助之下,都得以解决。
虽然疫情使得我们无法正常开学,开展线下教学活动,但是,任课老师们都努力克服线上教学的不便,为我们传道受业解惑也。而我们作为学生,更应该努力克服一切困难,不为疫情所困,只为学习创造环境。
组员4
这次的web大作业是实现简历信息管理系统的设计与实现,构思是基于B/S的简历信息系统。我一开始对myeclipse这个IDE没有很熟悉,导致后面对于项目出现乱码或者打不开,打开出现问题这些卡住了。这些都是因为自己对这个系统认识的不太多。还有地址映射这里刚开始一直出错。
在写这个建立系统刚开始时,什么都不会,不知道应该要干什么,因为中期作业是做一个静态简历,所以这次做动态简历时,没有想法。后来就开始看学习通里面的视频,对于web才有了进一步的认识。刚开始写代码时因为要结合java和web,在网上也搜了许多类似的,大概清楚了。开始写了一些比较基础的,例如用户简历信息和登陆界面,但是思路还是不清楚。后来组长发了一个系统,才有了比较详细的理解。刚开始是对这个系统进行了需求分析,所以一开始是先建立了数据库,建立了三个表,管理员,用户和用户简历详细信息。
然后开始分析设计一些需要的功能,简历信息管理系统大体上分为用户端和管理员端两部分,用户是输入账号自己登陆,管理员端是进行对所有用户的管理,所以在管理员界面这里要实现列表翻页和多选操作。先写的是用户端,用户端是用户自己详细信息,在用户界面这里设计了左右侧导航和顶部,用户端的功能是需要用户自己填报简历和修改简历的,还对用户简历信息内容位置进行了调整。
管理员端因为是对所有用户简历信息的管理,在这里要实现对用户简历信息的分页查询和多选删除,它可以查看到用户的详细简历信息,我这里的难点是分页查询。
接下来设计了对用户登陆时进入主界面要进行拦截的过滤器,因为如果不涉及过滤器,用户会直接用网址进入后台。所以要设计对用户端和管理员端登陆时进入主界面的过滤器。
在代码实现方面也遇到许多问题,我觉得首先要明白el和jstl表达式,特别是要明白它们的语法和注意事项,在使用EL表达式时可以不用额外判断变量的是不是为空。EL语句的作用就是取值和存值,在servlet和JSP中保存数据,在JSP中访问数据EL表达式使得取出request域和其他域中数据变得很方便。jstl在使用时要先导包,EL和JSTL也会一起用于JSP页面。
但是在具体写JSP时还是遇到了许多问题,在使用el表达式时,我把它的用法记错了,有时候会写到<%%>里,这是错的,EL是写在JSP的html中。刚开始在JSP中使用EL表达式会报错,后来才发现自己太粗心了,忘了导包,当时只导入了数据库连接的包。所以当时一直在找为什么会报错,还以为是因为表达式哪里写错了。
还有当时服务器的问题,因为当时组长的系统支持的是tomcat8.0,我当时看他的代码写的系统,因为我当时设置的是myeclipse自带的服务器tomcat7.0,所以运行时一直出错,最后才发现是服务器的问题。在每个页面交互时,不明白是如何请求和响应的,在CSDN里找到了解决办法,每个HTML,JSP,servlet响应程序是需要在浏览器通过url来访问的,在JSP和servlet中的java源代码中通过request和response完成交互。在用户和管理员登录时账号的值是存放在前session里的,session是浏览器和服务器交互的会话。会把值放进session里,当会话不关闭时,就会一直取到这个值。在浏览器关闭时,会消失,当重新访问时,又会重新生成。
在管理员端比较难以理解的是分页查询,在javabean中定义了pagesize,每页的记录,这个是如何分页的关键,使用get和set方法设置和获取当前页码。分页查询中要首先计算出查询的起始位置,通过总页数记录取余操作来判断当前页码,查询中的结果保存到list集合中。
组员5:
刚开始做这个系统的时候,一点思路都没有,在认真做完需求分析以后,明白了基础功能应该有:填报简历、修改简历、查看简历、删除简历。但此时我对这些功能的使用权限并没有很正确的认识。在与组长及队友的交流下,明白了应该分为用户端和管理员端。对于用户端,用户可以进行注册、修改密码、填报简历、修改简历、查看简历。对于管理员端,管理员可以修改自己的信息、查看填报的简历,并可以进行批量删除。
做系统之前,必须学好用到的技术。比如html、CSS、JSP、servlet、封装对象、还有一些常用的方法,这些都是必须要会的。还有可以简化开发的方法:比如EL表达式、session域对象、request和response域对象、HSTL标签库等,掌握这些方法,大大提高了开发效率。在开发系统时,遇到了很多问题,有关于绝对路径和相对路径的写法,搞混过请求转发和请求重定向的方法的路径,导致因为路径不对而找不到页面。请求转发是在服务器内部实现的,所以写转发路径的时候不要携带项目名称;重定向发送了两次请求,写路径时要携带项目名称。对数据库方法的不了解,导致开发速度很慢。后来学习到了预处理语句,大大提升了我的开发速度。还有一些小细节导致的JSP页面运行不出来,在JSP页面导包时,因为粗心给<%@ %>里面添加了分号,导致JSP页面报错无法运行。在使用el表达式的时候,将浏览器输入的值从session域对象显示出来时,又因为我的粗心,写错显示条件,导致页面无法正常显示,后来幸亏及时发现,千里之堤毁于蚁穴,所以小细节也是十分重要的。我认为整个系统开发过程最难的地方是处理图片上传的路径转换与重名问题,和管理员端的分页查询功能。刚开始时,对如何判断是否是文件没有一点思路,看了学习通的视频以后恍然大悟。遍历list集合,获取里面的普通表单项,文件表单项,判断是普通上传还是文件上传。没想通之前,完全不知道怎么解决同名的问题,因为会被覆盖。后来学习了组长的代码,在前面加一个user¬_id就可以完美的解决。因为每个用户只有一个id号,有相同的id是不允许注册的。我分页查询最主要的思想就是设置了PAGE_SIZE,可以利用这个,用总页数取余判断,得出当前的页码。可以判断要查到哪一个用户,用法是非常巧妙的,必须要自己亲手敲,才能完全理解当中的原理。并且可以与html、CSS搭配,构造小导航,制作跳转界面。关于过滤器,它可以防止用户直接拿网址进入简历主界面,提高了系统的安全性。我因为写错过滤器,导致了用户不能进行注册,后来经过改正,实现了注册功能。