一、MVC介绍
这里先简单的介绍一下我对MVC的理解。
M——model(模型)
V——view(视图)
C——controller(控制器)
视图很好理解,它就是我们JSP页面,用来显示页面内容的,因此称为视图;模型指的就是一些bean和dao,主要是用来存储数据和对数据的一些业务处理;controller则指的就是我们的servlet,它的作用是在模型和视图中间起到一个调度的作用,也就是它决定我们需要将哪些数据显示在哪个页面上。
这里借用一下这张图,表达一下它们之间的关系。
二、运行案例
这里通过一个how2j上的案例,简单理解一下这个过程。
解压之后我无法将整个项目直接导入到eclipse中,因此我是直接新建的目录结构,然后将文件复制粘贴过来的。如果有会导入的,也不必向我这样。
在src中新建包的时候,我发现在右键src,点击new->package时,新建的包总是不能之间在src的包的下面,跑到其他的位置(我确保我的路径是正确的),就像下图所示。
可以看到,hero就不是直接在src下面的。
这里,我提供一个解决办法:
不要在src处右键新建包了,将目录结构全部都合上,直接在java resources上右键新建package,这样建出来的包就是正确的显示在src下面,如下所示。
这样就是正确的了。
导入jar包,我们只需要导入其中提供给我们的三个jar包就可以了。
jstl.jar和standard.jar包的作用是因为我们后续需要用到EL表达式和JSTL表达式,因此需要导入。而mysql-connector-java-5.1.6.jar都不陌生了,这是我们连接数据库时需要用到的。而servlet-api-3.0.jar是因为我们在当初下载tomcat,其lib中就已经提供了这个jar包,不信可以自己去看一下。
项目导入完成之后的目录结构来看一下
我们现在可以运行一下项目了
跳转的时候遭遇了404错误,让我来排查一下。
回到代码仔细观察一下,发现在我们的目录中并不存在这样一个updateHero的servlet,因此会报404的路径错误,不仅如此,你会发现它给的另外一个页面listHero.jsp在跳转的时候也没有那样一个可以接收处理的servlet,因此同样会报错。
代码成功运行:
注意:此处运行是直接运行的HeroListServlet。
一开始,因为我的hero表是在test数据库中,而我在看代码的时候只注意到了用户名和密码是正确的,而没有检查数据库的名称,因此在运行的时候虽然能成功跳转到listHero这个页面,但是不会显示相应的数据。
且在控制台中会提示相应的错误
Unkown database 'how2java'是因为我的数据库中没有这个数据库,我的数据库的命名是'how2jjava',之间相差一个字母但是我的hero表是存储在test数据库中的。
三、模仿实现
我在上面的代码上进行了修改,实现的是在控制台中输出打印。
第一处修改:将HeroDAO中的list()方法修改了
第二处修改:
遍历返回的hero列表数据,用for循环取出其中的值,起始在控制台中的输出打印。当然也可以不在控制台中输出打印,用转发或者是重定向定位到jsp页面实现在页面的输出打印也可。
运行结果: