java web 模型_JAVA Web中的MVC模型

在学习完servlet之后,老师讲解了一个MVC模型,将我们练习的项目进行升级,之前我们的代码全是在jsp里面写的,也就是说网页里的有大量的java代码。在写页面的逻辑的时候很方便,在网页里直接写,写完下面就能用,但是里面的逻辑处理太多,这就是一个大问题,任何人都可更改源码使结果发生改变,这样设计出来的网页没有任何安全性而言。

升级后的项目采用的是最普通的MVC模型,即一个请求一个servlet,但是这样重复代码太多,开发效率大大降低,在这个基础之上,老师讲了一个MVC模型,将servlet当作控制器,根据请求传过来的参数来判断实行哪个方法,采用的方法是在servlet的init()方法中将各个请求和对应的java类放入map集合中,每过来一个请求,从map集合中获取对应的 java类,然后执行相应的execute方法,传递的参数都为httprequest和httpresponse,如下图所示:

e3a71e5b6befb34c5747fdfd9aa05223.png

这种模式有一个问题就是硬编码,每次增加一个方法就要对java文件进行重新编译,这种开发模式不建议使用,后期维护比较麻烦。

在这个模式的基础上,老师又讲解了另外一个更新的MVC模式,就是将请求的字段和对应的java类、方法名、返回值等等信息放在一个xml文件中,将这个xml文件的一级element作为一个java类,element的属性作为这个java类的field,同时这个java类需要一个map集合,添加二级element的信息。二级element则添加两个这个类对应方法的返回值、跳转页面以及是否是转发,根据返回值来判断跳转到哪个页面,二级element也需要抽象成一个java类(属性大于两个的时候,也可以不抽取),方便后期获取对应的信息。采用这个方法,要使用digester这个工具类,自动读取xml文件的内容,并且将element的属性添加到对应的类里,根目录需要一个map集合,可以根据不同的请求来获取不同的java类。当一个请求过来的时候,通过map集合的get()方法,得到对应的java类,然后根据这个类的属性(可以在xml文件中添加方法的名称等等属性)获取相应的方法名,根据反射的原理来调用这个类对应的方法。方法的返回值类型为字符串,这个方法的返回值就是二级element的一个属性,根据这个类的map集合的get()方法,获取二级element类,包含了目标页面,同时也包含了是转发还是重定向;在servlet控制器里根据二级类的属性来判断是转发还是重定向。这样一个servlet就解决了所有的访问的问题,而且以后如果需要更改目标页面,只需要在xml文件中更改配置信息就行,这个方法实现了软件的软编码,利于扩展和维护。

Xml文件如下:

eb3b020d3a9a55072c6dd0396e041566.png

Servlet的init()方法如下:

014d90c758154cde6a3bd7c0a70f6988.png

Servlet的service方法如下:

25c461c66b25f3edb375972a0d168137.png

具体设计思路如下图所示:

12faca676237dad19ab3a39f476c34f9.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值