【java web】须注意事项及Model 2

一 为什么要介绍此内容

    明明如今有更好的框架可以代替此框架,并且已经被广泛使用了那些框架,为什么在此还介绍一下Model 2 呢?

   原因很多,我认为首先需要提到的是入门级别的认识。首先需要在此说明一下本科生与专科生学习web开发的区别:本科生需要理解其中详细过程,如何实现;而专科生只需要知道如何配置,如何使用框架就好了。实际开发中也的确如此,大多数参与者也只是需要在框架中填写代码就好了(毕竟码农人数相对多很多),只有少数的人是设计与部署框架(架构师)。当然,我并没任何鄙视和否定码农的价值和专科生的价值。

   但是我们学习java web绝对不只是学习web开发工具的使用,我们需要知道如何创造这样的工具,如何选择工具,如何修复工具等等。打个比方说,我们使用struts2的时候,出现了某个异常,我们应该怎么检查,如何修复,等等。(好吧,我承认这个例子不是很恰当,但这个不是重点的说。)

    另外还有一个原因就是这个框架真的很简单,在简单项目的开发中也是一个不错的选择。

二  核心内容

1. java web的编程注意事项

一定要养成分层编写代码的思想。需要注意的地方有以下几点:

  • Servlet层是一些直接响应用户请求的类。不能servlet类中跳过业务层直接写操作数据库的代码。因为其实一个业务逻辑是比较复杂,可变性比较大的,如果全部都写在servlet中,那么肯定会带来一系列问题,比如说调试不方便,可复用性不强,开发效率低(不方便多人合作)等等。
  • 需要写dao层的接口,因为dao曾是跟数据库打交道的,而且数据库本身跟java是没有关系的,所以我们需要用设计接口的方式来规范化二者之间的“交流”。比如说mysql-connector-java-5.1.6-bin.jar的编写,首先是java这门语言设计接口的,比如说 java.sql.Connection是一个接口,而实现类是mysql-connector-java-5.1.6-bin.jar包中提供的方法,这个是数据库提供商编写的,也就是mysql拥有者,oracle公司编写的。(其实以前和java一样都属于sun公司的)总之接口的设计很重要,因为java这门语言不可能只使用mysql数据库。
  • 需要编写service层接口。和dao层一样,dao层需要和数据库打交道,而service层需要跟需求打交道,换句话说是跟人打交道,然而人相对于代码来说复杂太多了,因此需要编写接口来约束、规范这个交流过程。编写接口就是签署契约合同,实现类必须按照这个契约来编写我需要的业务逻辑。
  • 接口设计本身就是为了实现可重用,根据“接口就是契约”的思想,如果你这家公司的实现类不让客户满意的话,客户就可以拿这份合同找其他公司人实现。所以接口设计好了就可以有很多种实现方法,业务需求明确了,接口编写好了,可重用性自然高了。
  • 实体类的重要性(domain层)。一定需要编写实体类,也就是一些只含类的属性和getter、setter方法的类。并且让类的所有属性与数据库中的表的属性一一对应。这样做的好处就是在操作数据库的时候提供一个中间级缓存,比如说插入数据,一般表的属性不只一个,我们不妨先把需要插入的数据写到与之对应的bean类中,然后再把这个类传递给dao层实现类,进行插入操作。当然查询更需要这样的类,因为查询出来的结果是一个ResultSet类型的结果集,很多时候并非我们需要的。应该转换成我们熟悉的java bean来进行操作。
  • 工具类层(util)是用于存储各层都可能需要使用的工具类。为什么需要这一层呢?因为所有层的可复用性都不及这一层高,因为不同业务逻辑,不同需求各层的代码都可能不同。但是使用的工具却是差不多,工具本身就是一个给大家使用的东西,所以把所有工具类集中到这一层来说是非常有必要的。
  • test层是使用JUnit等工具进行测试的一层(图片没有给出)。测试的重要性在此就不多说了,为了方便测试,反复测试我们可能需要编写测试类,测试类的编写应该独立于其他各层。
  • 最后强调一下编写cn.smileyan.*的重要性。说明一下cn.smileyan的意思在于这个文件夹以下的所有内容都归属于smileyan.cn开发者(或公司)编写,并且这样做在import的时候可以明显看出导入的类或者接口属于哪个公司编写的。比如说当我们输入User的时候提示导入哪个包,会发现有其他很多User类,比如说import org.apache.catalina.User等等。所以为了区分开各个团队或者公司编写的代码并且告诉使用者以下代码是smileyan公司开发的,所以有必要这样做。       另外这也是一个高级一点的开发人员与初学者的区别,直接写成servlet,service,dao,显得很是寒酸有没有?

2. model 2工作流程

工作流程如下:

  1. 用户访问网站,发出请求(此处省却网络层http连接的一些内容)。需要注意的是首次发送请求的时候并不是直接访问html或者jsp页面。而是发送给servlet,servlet响应请求。
  2. servlet响应请求需要分析用户的请求,并且如有需要则调用service层的业务逻辑,而service层则访问dao层的实现类来进行数据库操作,并将结果返回给service层,service层将结果返回给servlet。
  3. servlet拿到业务层的结果后返回的用户。

特别注意:所有请求包括访问首页都一定要经过servlet的响应,jsp这时只充当html的作用,并且本身就不需要jsp完成任何事情,html或者jsp只需要拿到后台返回的数据并且显示即可。

猜你喜欢

转载自blog.csdn.net/smileyan9/article/details/80503578
今日推荐