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中添加一句

&ltContext docBase=”D:/Java/adt-bundle-windows-x86-20131030/Workspace/CommunityEntertain/WebContent/StaticFile” path=”/static” reloadable=”true” /&gt”

然后在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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值