JAVA Web中的MVC模型

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

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

这种模式有一个问题就是硬编码,每次增加一个方法就要对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文件如下:

Servlet的init()方法如下:

?

Servlet的service方法如下:

?

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

时间: 2024-08-25 00:33:28

JAVA Web中的MVC模型的相关文章

CKEditor4 在java web中的应用说明(详细可行)

按照官方的说明书就可,这里主要注意一点!! 就是<script src="../ckeditor.js"></script>中js文件的路径问题,我的ckeditor文件夹是在WebContent文件夹下,jsp文件是同一层目录的,所以最后的代码应该是 <script type="text/javascript"src="./ckeditor/ckeditor.js"></script> 注意斜杆号

java web中servlet、jsp、html 互相访问的路径问题。

在java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对. java web中的路径使用按我的分法可以分两种情况,当然啦两者使用相对路径是一致,本文只说绝对路径. 情况一.指向外部的web组件和本身关系不大的,这一类的有:html中使用路径的标签,比如<a>标签中的href;servlet和jsp中的重定向sendRedirect(path); 情况二.指向内部的web组件和本身有关系的,这一类我暂时看到的有:servlet或者jsp的转发 假设在myapp项目下有

java web 中的转发和重定向

假设应用程序的 contextPath 为 /ctx,在 http://localhost:8080/ctx/a/b 资源中,我们转发和重定向到 http://localhost:8080/ctx/x/y 资源,分别应该怎么写? 转发,是在同一个应用程序中,请求从由资源 A 处理,到由资源 B 处理.资源 A 和资源 B 属于同一个应用程序的资源,它们总是相对于该应用程序的 contextPath 而言的.转发的资源可以使用相对路径(不以 "/" 开头)和绝对路径(以 "/&

jQuery框架+DWR框架实现的Java Web中的Ajax效果(异步请求,局部刷新)

一 简介和实现效果 这里用一个小例子来简单举例说明,做一个搜索引擎搜索提示效果,通过不断输入字符,然后在下方给出搜索提示.效果图如下: 通过上图可以看到,当输入一个"a"时,提示了很多内容,然后继续输入一个"e"后,提示的范围明显就变小了. 注:在文末我会给出完整源代码的下载链接,以供大家参考 二 具体实现 1 在eclipse for java ee中创建一个Java Web工程,然后导入相应的jar包,特别说明的是:这里要导入一个额外的dwr.jar.也就是说,

Java web中常见编码乱码问题(二)

根据上篇记录Java web中常见编码乱码问题(一), 接着记录乱码案例: 案例分析:   2.输出流写入内容或者输入流读取内容时乱码(内容中有中文) 原因分析: a. 如果是按字节写入或读取时乱码,应该先检测系统编码是什么样的,看看是否支持中文编码的字符集. System.out.println(System.getProperty("file.encoding")); a1.如果是不支持中文的就要设置jvm编码了,设置方法: Windows环境就在catalina.bat配置: s

java web中路径问题。

转自:http://blog.csdn.net/liang5630/article/details/38474543 如有侵权,请及时联系本人及时删除 在java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对. java web中的路径使用按我的分法可以分两种情况,当然啦两者使用相对路径是一致,本文只说绝对路径. 情况一.指向外部的web组件和本身关系不大的,这一类的有:html中使用路径的标签,比如<a>标签中的href;servlet和jsp中的重定向sendR

Java Web中涉及的编解码

用户从浏览器发起一个HTTP请求,存在编码的地方是URL.Cookie.Paramiter.服务器端接收到HTTP请求后要解析HTTP协议,其中URL.Cookie和POST表单参数要解码,服务器端可能还需要读取硬盘数据(数据库.文件),这些数据都可能存在编码问题.当Servlet处理完所有请求的数据后,需要将这些数据再编码通过Socket发送到用户请求的浏览器里,再经过浏览器解码成为文本.这些过程用图表示如下: 1.URL的编解码 为了验证浏览器是怎么编码URL的,我们选择FireFox浏览器

Java Web 学习(3) —— MVC

MVC 一. MVC 模式 MVC 代表 Model-View-Controller (模型-视图-控制器) 模式. Model:模型代表 DAO (Data Access Object 数据访问对象) 或 POJO(Plain Ordinary Java Object 普通 JavaBeans).是应用程序中用于处理应用程序数据逻辑的部分. View:视图将数据可视化. Controller:应用程序中处理用户交互的部分.控制器作用于模型和视图上.它控制数据流向模型对象,并在数据变化时更新视图

java web中请求和响应中包含中文出现乱码解析

说明:在计算机中保存的一切文本信息是以一定的编码表(0,1,0,1)来保存我们所认识的字符(汉字或英文字符),由字符到计算机存储的二进制过程是编码,由读取二进制到文本的过程称为解码.而字符编码有多种不同的编码表,所以,如果编码格式和解码格式不是同一个码表就会出现乱码.想要避免出现乱码,需要使保存和读取时使用相同的码表. 在java web编程中经常会出现乱码,现在详细讲解一下如何进行设置,避免乱码 1 网页编码 在编写网页的时候,需要指定网页的编码格式,使用<meta http-equiv=&quo