记录的想法,来自于3月份参加的面试。我反思了我身上存在的两个问题。首先,我还不知道世界多大,那么就没办法给自己一个系统客观的评价;其次,如果没有时刻反省记录,用的时候就说不清楚。为了解决这两个问题,我开始写博客,把一纸简历一个自己的网站泛泛而谈的东西。具体到我遇到的各种各样的问题,我在团队里面扮演的角色,如果已解决那就写上是如何解决的,没有解决就写上做到哪一步,卡住在哪一步。
趁刚做完JSP+Spring先来说说MVC,第一次听到这个概念是在一个前辈那里,无独有偶今年一个学科项目就指定要用这种做法。
拿去饭堂吃饭来解释一下这个概念:
去饭堂吃饭的时候你先要选择,用筷子吃?用勺子吃?还是用手吃?-> 那么做选择这件事就是控制层。
用筷子吃?用勺子吃?还是用手吃?如果用筷子那么你只能一个一个夹起来,用手就能一次抓很多。-> 这就是function功能
好,现在有了吃的工具,有了选择工具的你,但还没有菜。在这个情景里面,你在饭堂。-> 饭堂就是数据库。
现在饭堂除了有中餐厅还有西餐厅。->不同餐厅就是不同的表table
那么你离吃饭这件事,还差一个给你打饭的人,饭堂阿姨要给你加饭,是一个从数据库拿数据的动作。->这个动作分两步走:一,从饭堂的大盘子里拿 二,放到你的小盘子里。
我对MVC理解的两个阶段:
如果你看过我的代码version1 和version2:是完全不同的两版,第一个版本有jsp代码,后一个版本更干净,仅使用java和servlet。同时后面一版拿数据的时候,多加了两层interface。虽然只剩三天时间,我还是义无反顾的就扔掉了前面一版。到最后导师说其实也可以接着之前的做,我才想到可能要后悔一下。
关于一点点抱怨,和这个项目
这是我首次,在一个项目里担主梁。而且熟悉的队友都不在,唯一一个和我并肩写代码的队友是个超级拖延症。我两周前发了,完成了三分之一的第一版。
从他信誓旦旦说后面交给他们开始。我就心很宽的忘了这个项目。但凡我长点心多问几次,都不会落得只剩三天。仅仅因为时间不够,而没能写好。还是觉得不甘心。要是再多几天,即使让我独立完成,把几个卡在spring设置上面的功能,问问人,也能写完。
说点好话
好不容易遇到和自己旗鼓相当的队友写代码,也是蛮有趣的一件事情。和以前的队友智力差距太大。我的IQ基本只能用来做个装饰,队友解bug的时候,我像在看福尔摩斯破案。
算是因祸得福吧,要不是因为这个情况,估计未来三到五年我都没可能自己写一个系统设计,而是一直做单个的功能实现。在我刚得到还剩三天的消息,好朋友就和我说系统设计最难,只写一个功能和把很多功能合一起是很不同的两件事情。
经历完这件事之后,才对这句话感受颇深。以前我只是在别人写好的东西上面加东西而已,哪能说我也做了一半。更确切的说是照葫芦画葫芦,只做了很小一个部分。
错别字真的不能有
最终答辩版本,队友加上了自己功能,结果他编译的时候sql文件数据没加双引号,少了一个逗号。其实我当时蛮崩溃的,在假装镇定。
然后在html里,我已经看到他把其中日期那一栏,本来是String改成日期Date了,但是那份sql数据库没改数据类型,我想拿数据库那份java很可能也没改数据类型。
我又再一次心很宽的没有重复查错。我应该挨个表删除重建,查一下新的部分。
最后的最后 一些哲学问题
我如果找到答案,或者想到新问题会持续更新这个部分的。如果你有答案请告诉我。谢谢啦么么哒。
Q1:
<c: url ="abc"> 和 <a href="abc">
Q2:
在控制层 controller 里:
String , ModelAndView, View 结果都是去到一个.jsp 页面有什么区别?
Q3:
return new ModelAndView("/doquiz"); 和return new Redirection(有可能拼错我之后都用成前一种) 有什么区别?
Q4: ModelMap 为何就只能用 addAttribute
model1.addAttribute("entries2", entries2);
但是 ModelAndView 就只能用 addObject
(这里没有sample整个都只用了ModelMap)
同样的问题还有:
session.getAttribute |
String aaa = request.getParameter("title2");
System.out.println(aaa);
Other explanation from Wyman
Model: 你點的飯
- 庫房食材
View: 叶青
- 點餐
- 開餐
Controller:
- 接受點餐(Request), 並告訴廚房
- 到庫房(database)拿食材
- 按餐單煮飯(business logic)
- 把飯送到你桌上(Response)
Result:
- 叶青點了中餐
- 收銀接受並告訴廚房煮飯
- 把飯送到叶青桌上
- 叶青開始吃飯