一、首先我们知道web开发中的请求响应的模型
1)web是基于http协议的,由浏览器(如ie浏览器)向服务器请求,比如访问一个网站,或者查询一些数据等。
2)web服务器(如tomcat)接收到请求后,经过一定的处理(查询数据库,修改数据库的数据等等),然后将结果(修改数据后的反馈、查询结果等)返回给客户端。客户端即浏览器对接收的html内容进行渲染,渲染的内核有webkit、Trident、Gecko、Presto。
因此,这就是web开发中的请求/响应模型,而且一般情况下,服务器不会主动给客户端发送数据的。不过现在有一些新的技术,比如html5的websocket可以实现服务器主动发送给客户端。
二、关于mvc的简单介绍
1、Model即模型,数据模型,提供要展示的数据,主要是处理数据逻辑部分,通常负责数据库的存储。
2、View即视图模型,一般是html/js/css文件构成,接受模型的数据,或由控制器控制,给用户显示数据的。
3、Controller即控制器,负责将从视图读取数据,然后根据需要想模型发送数据,也接收模型返回的数据,控制器就是控制整个流程的进行,使视图和模型分离。
三、在web开发中mvc之间的简单关系如下图
三者之间的大概工作流程如下:
视图就是面向用户的窗口,当用户输入,或者鼠标点击事件发生后,比如向模型查询状态,则由路由寻找对应的模型,获取查询结果,模型则通知视图,视图则进行相应的改变,显示新的数据。而控制器则是从用户接受到请求,将视图和模型匹配在一起。从请求中,可以清楚该选择怎样的模型,选择怎样的视图,完成什么的用户请求。控制层不处理任何的业务逻辑和数据处理。Mvc的工作方式也就差不多这样子。
四、java web中的mvc
1)模型:则主要是与数据库的沟通,处理业务逻辑,由(JavaBean、DAO、DB、Action这些类构成)。
2)视图:由jsp负责,jsp可以嵌入到html文档中的脚本,决定数据在视图的哪些地方显示,数据改变时的及时响应等等。
3)控制器:用一个Servlet做控制器。
4)Java 的Jsp+Javabean+Servlet模型之间的主要分工:
Servlet做为控制器,负责处理请求和产生jsp页面要用到的Action或Javabean对象,根据用户的请求决定要定向到哪个页面,Action负责根据请求负责相关的业务逻辑,DAO/DB是Action用于访问数据库而用,Javabean为可重用的组件,可以减少开发人员的工作量,可进行独立开发,比如一个用户,有用户名、密码、性别、邮箱等等这些信息,我们可以把这些存入Javabean中。
五、下面是个简单的java web mvc模型
1)首先我们来看一下文件的结构:
2)model层的实现:
A、Action接口类:
public interface Action { public String execute(HttpServletRequest request,HttpServletResponse response); }
在控制器执行相关action时,我们不必知道是那个具体的类,就可以执行相关的action的方法了。
B、工厂模式的action:
public class ActionFactory { private ActionFactory(){} private static Action action; public static Action instance(String className){ try { action = (Action) Class.forName(className).newInstance(); } catch (Exception e) { e.printStackTrace(); } return action; } }
用于在控制器中使用,用于根据类名动态生成相应的对象给予控制器使用。
C、实际的action类,继承了action接口:
public class InfoAction implements Action { @Override public String execute(HttpServletRequest request, HttpServletResponse response) { //获取action参数 String action = request.getParameter("action"); //根据action处理相应的业务逻辑 return url; } //此处省略了相关代码 }
D、Dao类,负责与数据库相关的操作,一般一个类和一个表关联,负责数据库的增删查改。
public class InfoDao { //省略相关的代码,连接数据库,对数据库的增删查改 }
E、ResultInfo类,也就是javabean,这里的ResultInfo用了存放用户的信息。
public class ResultInfo { private String title; private String content //这里添加相关的方法,set/get方法 }
以上的几个就是一个model层的实现,负责与数据交互,赋值业务逻辑。
3)控制器层的实现:
/* * 控制器Servlet */ public class ControlServlet extends HttpServlet { //是一个servlet类,所以要继承httpservlet private static final long serialVersionUID = 1L; /* * 重写service方法,处理用户的请求。 */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取到请求的路径:pathName String pathName = request.getServletPath(); System.out.println(pathName); // 解析路径,获取请求的action的名字 String actionName = pathName.substring(pathName.lastIndexOf("/") + 1, pathName.lastIndexOf(".")); System.out.println(actionName); // 根据actionName获取Servlet的参数,即相应的Action的类名 String className = this.getInitParameter(actionName); System.out.println(className); // 根据类名,动态加载对象(工厂模式) Action action = ActionFactory.instance(className); /* * 执行获得的action对象的execute方法,处理相应的业务逻辑,并返回url,决定 * 处理之后要跳转的页面 */ String url = action.execute(request, response); /* * forward跳转相应的页面 */ request.getRequestDispatcher(url).forward(request, response); } }
4)view层的实现(一个简单的查询的实现):
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="InfoAction.do?action=Search" method="post"> <table> <tr> <td>关键字:</td> <td><input type="text" name="title"></td> </tr> <tr> <td colspan="2"><input type="submit" value="查询"></td> </tr> </table> </form> </body> </html>
main.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Result页</title> </head> <body> <h3>查询结果如下</h3> <% List list=session.getAttribute("result");%> <table> <% for(int i=0;i<list.size();i++){%> <tr> <td><%=i%></td> <td><% list.get(i).gettitle(); %></td> <td><% list.get(i).getinfo(); %></td> </tr> <% } %> </table> </body> </html>
5)当我们输出一个地址,比如是127.0.0.1/Mybbs时,会直接到webcontent的根目录下的index文件,提交了表单后,往这个链接提交InfoAction.do?action=Search了表单。之后,由于web.xml配置了值为”*.do”的模糊匹配的url相应的servlet,即控制器,所以请求直接送到了唯一的那个控制器上面。然后控制器解析url,解析出了InfoAction,然后动态加载该对象,执行execute,并返回了要跳转的下一url,执行跳转。这个简单的mvc大概的工作流程就是是这样。
相关推荐
Java Web MVC模式是一种广泛应用于构建Web应用程序的设计模式,它将应用程序分为三个主要组件:Model(模型)、View(视图)和Controller(控制器)。这个模式的主要目的是实现业务逻辑、数据处理和用户界面之间的...
Java Web MVC项目是一种基于模型-视图-控制器(Model-View-Controller)架构模式的Web应用程序开发方式。这种模式在Java领域中广泛应用于构建可维护、可扩展且结构清晰的Web应用。在这个项目中,我们将深入探讨MVC...
"基于Java Web MVC框架的电力班组智能化管理系统" 本文介绍了基于Java Web MVC框架的电力班组智能化管理系统的设计和实现。该系统旨在解决当前电力班组管理中存在的人力资源浪费、信息不完善、缺乏智能化管理等问题...
Java Web MVC框架是用于构建动态Web应用程序的一种常见架构模式,其中MVC代表Model-View-Controller。本资源“Java Web MVC开发完整架包,工具类.zip”包含了一个完整的开发环境和一些实用工具类,这对于Java Web...
【Java Web MVC框架详解】 Java Web MVC框架是开发Web应用程序的一种常见模式,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。这种框架设计允许开发者将业务逻辑、数据处理和...
1. Java Web技术应用:文档提到利用Java Web技术开发学生成绩管理系统。Java Web技术主要指基于Java语言的网络编程技术,包括Servlet、JSP(Java Server Pages)、Java Beans以及框架如Spring、Struts、Hibernate等...
《基于JSP SSH MVC的Java Web在线考试系统详解》 在线考试系统是现代教育技术发展的重要成果,它利用互联网技术,实现了考试的无纸化、自动化。本系统以JSP(JavaServer Pages)为核心,结合SSH(Struts、Spring、...
标题中的"spring.jar"、"spring-webmvc-struts.jar"和"spring-webmvc.jar"都是Spring框架相关的Java库文件,通常以.jar结尾的文件是Java的归档文件,包含了类、资源和元数据,用于Java应用程序的运行。这些文件在...
Java Web MVC设计模式详解 在Java Web开发领域,MVC(Model-View-Controller)设计模式是一种广泛应用的架构模式,它将应用程序分为三个主要部分,从而实现职责分离,提高代码的可维护性和可扩展性。本示例通过使用...
使用C3p0+MVC模式搭建的Java Web工程,含相应数据表的建表Sql文件。数据库用MySQL数据库,页面视图使用jsp页面,通过Servlet的设计,仅用一个Web页面实现数据表增删改查功能的展示。数据表对各种数据类型都做了测试...
**基于MVC框架的Java Web开发** 在Java Web开发领域,Model-View-Controller(MVC)模式是一种广泛采用的设计模式,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller),以实现业务...
第8讲__MVC模式的Java_Web应用程序.ppt
标签:spring、springfox、webmvc、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
标签:spring、springfox、webmvc、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...
标签:springframework、spring、webmvc、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
Java Web MVC模式是一种广泛应用于构建Web应用程序的架构模式,它将应用程序分为三个主要部分:Model(模型)、View(视图)和Controller(控制器)。对于初学者来说,理解并掌握这种模式是进阶Web开发的关键步骤。 ...
**Java Web MVC框架详解** Java Web项目中的MVC(Model-View-Controller)框架是一种广泛使用的软件设计模式,尤其在构建动态、数据驱动的Web应用时。MVC将应用程序的逻辑划分为三个主要部分,提高了代码的可维护性...
标签:spring、alibaba、csp、sentinel、adapter、webmvc、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...
标签:spring、webmvc、springframework、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
标签:spring、alibaba、csp、sentinel、adapter、webmvc、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变...