34岁!100天!学会Java编程(Day39-Day44)—MVC架构和基本业务

冬日回忆

今天跟一位美国回来的大学宿舍同学聚会,此兄留学博士毕业,目前在美国一所公立大学任教,拿着不菲的薪水,现在却想着回国发展,这次回来就是来参加中科院的面试。他有一位做大学老师的父亲,从小过着衣食无忧有规划的生活,每一次人生重大选择都有他父亲张罗着亲戚朋友同学给一块出主意,想来人生虽有波澜,却也幸福安稳。我们同宿舍其他几位就没这么好的福气了,都是从外地考到北京,家庭条件如何不说,至少对于人生的规划和选择,基本上都得自己想主意,自己去试错,但也落得潇洒自由。
人生之路怎样去走,本无优劣对错,只要不是浑浑噩噩,就算对得起自己人生在世走一遭。不过自己心中却埋下了一个疑问,将来对我自己的小孩,应当教他怎样去过自己的一生。

开始项目开发复盘,此次复盘主要从三个角度出发,第一是关于MVC模型的理解,第二是网站基本业务逻辑设计,第三是Servlet/JSP开发过程中的一些坑。

(一)MVC模型的一些理解

MVC也被称为Model2 模型,自然也就有Model 1模型。不过MVC作为当下最流行的Web应用架构,我自然是从这里开始学习的。所以一开始我设计的架构模式是这样的:


开始设计的MVC

实际开发过程中,走着走着就变形成这样式儿了:


最终实现的MVC

嗯,实在是因为Tomcat服务器“很友好”地把网站入口默认设置成了index.jsp,我开始还想掰回来从Servlet入口先处理浏览器请求,后来发现完全多余,尤其是网站中大部分的Get请求,先用Servlet处理完全就是脱了裤子放屁。后来就把Servlet定位于专门处理Post请求,分析提交的表单数据,使用JavaBean业务单元进行处理,根据结果调用相应的网页进行响应。

(二)网站基本业务逻辑设计

本阶段网站基本业务逻辑主要包括单个用户的业务逻辑,单个活动的业务逻辑。分别如下:


基本业务逻辑

其中,数据库的连接开始我放在了Controller层,用起来很不方便。后来还是放在Model层比较合适,在Tomcat中设置了一个JNTI数据库服务,直接在Model层构造器中调用服务器提供的服务。
其他基本业务逻辑主要是要考虑业务流程的代码实现(稍复杂的业务流程最好画个简单的示意图),难点在流程设计,如何用变量控制分支,如何给不同的操作结果用变量赋予含义,以及针对不同的结果,如何在View层表达出来等。

(三)Servlet/JSP开发中的一些小窍门

这一部分主要是总结下这几天遇到的一些坑,先从Tomcat服务器的配置说起。与HttpServer内置式API接口不同,Tomcat提供一个独立于Web应用程序的服务器,只需要将应用程序与服务器绑定,然后把服务器启动起来,然后就可以边改应用程序边看修改结果了,非常方便。
(1)Tomcat服务器的配置文件


Tomcat配置文件

我只是粗略研究了web.xml;server.xml;context.xml三个配置文件,其中我在文件路径的研究花了我不少时间,至少影响以下几方面:
(2)无法向JSP中引入静态资源的问题;
开始在JSP中无论把静态资源考到那个文件夹,把路径怎样设置都无法引入。后来找到办法,在server.xml中添加一句

<Context docBase="D:/Java/adt-bundle-windows-x86-20131030/Workspace/CommunityEntertain/WebContent/StaticFile" path="/static" reloadable="true" />

然后在link中,将url写成"/static/xx.css"文件就可以了。代码中,docBase代表本地硬盘路径,path代表虚拟映射路径。
(3)无法在子页面间共享一个session问题;
我在登录后,使用session记录了我的登录状态(登录令牌)。然后在首页点击一个链接进入子页面时,发现我的登录令牌失效了,无论怎样调试都不起作用。折腾半天,网上查的资料也都不管用,后来终于试出来,原来登录令牌并没有丢,而是我将子页面放在了一个虚拟映射路径中了,链接转过去的时候,系统就自动重建了一个Session。将子页面放到根目录下就没问题了。
(4)同一个文件在Servlet,JSP,甚至redirect时的路径名都会不同。
这个也是路径问题,JSP可以用虚拟映射路径,但是Servlet不能用;用控制器redirect页面时,发现转向文件在同一目录下时直接写文件名就可以了。
(5)数据库中记录id编码的自增
数据库增加记录要想做到编号自增,需要首先给ID字段属性增加自增性

alter table 表名 modify 字段名 数据类型 AUTO_INCREMENT;

然后在添加记录时,不要主动给ID赋值就可以了。
最后贴一个图,然后睡啦


示例

下一阶段目标:基本算法、程序设计模式、软件架构模式、复杂业务、Spring/SpringMVC/Mybatis、CEv6.0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,695评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,569评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,130评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,648评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,655评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,268评论 1 309
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,835评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,740评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,286评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,375评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,505评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,185评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,873评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,357评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,466评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,921评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,515评论 2 359