`

java web的mvc

 
阅读更多

一、首先我们知道web开发中的请求响应的模型

  1)web是基于http协议的,由浏览器(如ie浏览器)向服务器请求,比如访问一个网站,或者查询一些数据等。

  2)web服务器(如tomcat)接收到请求后,经过一定的处理(查询数据库,修改数据库的数据等等),然后将结果(修改数据后的反馈、查询结果等)返回给客户端。客户端即浏览器对接收的html内容进行渲染,渲染的内核有webkit、TridentGeckoPresto

因此,这就是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大概的工作流程就是是这样。

  • 大小: 8.8 KB
  • 大小: 16.6 KB
分享到:
评论

相关推荐

    java web MVC的实现

    Java Web MVC模式是一种广泛应用于构建Web应用程序的设计模式,它将应用程序分为三个主要组件:Model(模型)、View(视图)和Controller(控制器)。这个模式的主要目的是实现业务逻辑、数据处理和用户界面之间的...

    java web MVC项目

    Java Web MVC项目是一种基于模型-视图-控制器(Model-View-Controller)架构模式的Web应用程序开发方式。这种模式在Java领域中广泛应用于构建可维护、可扩展且结构清晰的Web应用。在这个项目中,我们将深入探讨MVC...

    基于Java Web MVC框架的电力班组智能化管理系统.pdf

    "基于Java Web MVC框架的电力班组智能化管理系统" 本文介绍了基于Java Web MVC框架的电力班组智能化管理系统的设计和实现。该系统旨在解决当前电力班组管理中存在的人力资源浪费、信息不完善、缺乏智能化管理等问题...

    Java Web MVC开发完整架包,工具类.zip

    Java Web MVC框架是用于构建动态Web应用程序的一种常见架构模式,其中MVC代表Model-View-Controller。本资源“Java Web MVC开发完整架包,工具类.zip”包含了一个完整的开发环境和一些实用工具类,这对于Java Web...

    基于Java Web MVC框架的学生成绩管理系统设计.zip

    【Java Web MVC框架详解】 Java Web MVC框架是开发Web应用程序的一种常见模式,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。这种框架设计允许开发者将业务逻辑、数据处理和...

    基于Java Web MVC框架的学生成绩管理系统设计.pdf

    1. Java Web技术应用:文档提到利用Java Web技术开发学生成绩管理系统。Java Web技术主要指基于Java语言的网络编程技术,包括Servlet、JSP(Java Server Pages)、Java Beans以及框架如Spring、Struts、Hibernate等...

    jsp ssh mvc java web j2ee bs 在线考试系统+论文+源码 网页设计

    《基于JSP SSH MVC的Java Web在线考试系统详解》 在线考试系统是现代教育技术发展的重要成果,它利用互联网技术,实现了考试的无纸化、自动化。本系统以JSP(JavaServer Pages)为核心,结合SSH(Struts、Spring、...

    spring.jar spring-webmvc-struts.jar spring-webmvc.jar

    标题中的"spring.jar"、"spring-webmvc-struts.jar"和"spring-webmvc.jar"都是Spring框架相关的Java库文件,通常以.jar结尾的文件是Java的归档文件,包含了类、资源和元数据,用于Java应用程序的运行。这些文件在...

    Java -Web -MVC

    Java Web MVC设计模式详解 在Java Web开发领域,MVC(Model-View-Controller)设计模式是一种广泛应用的架构模式,它将应用程序分为三个主要部分,从而实现职责分离,提高代码的可维护性和可扩展性。本示例通过使用...

    使用MVC模式的Java Web Demo实例

    使用C3p0+MVC模式搭建的Java Web工程,含相应数据表的建表Sql文件。数据库用MySQL数据库,页面视图使用jsp页面,通过Servlet的设计,仅用一个Web页面实现数据表增删改查功能的展示。数据表对各种数据类型都做了测试...

    基于MVC框架的java web开发

    **基于MVC框架的Java Web开发** 在Java Web开发领域,Model-View-Controller(MVC)模式是一种广泛采用的设计模式,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller),以实现业务...

    第8讲__MVC模式的Java_Web应用程序.ppt

    第8讲__MVC模式的Java_Web应用程序.ppt

    springfox-spring-webmvc-3.0.0-API文档-中英对照版.zip

    标签:spring、springfox、webmvc、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    springfox-spring-webmvc-3.0.0-API文档-中文版.zip

    标签:spring、springfox、webmvc、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    spring-webmvc-5.2.15.RELEASE-API文档-中文版.zip

    标签:springframework、spring、webmvc、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    java web采用mvc模式,适合初学者的留言板

    Java Web MVC模式是一种广泛应用于构建Web应用程序的架构模式,它将应用程序分为三个主要部分:Model(模型)、View(视图)和Controller(控制器)。对于初学者来说,理解并掌握这种模式是进阶Web开发的关键步骤。 ...

    java_web项目mvc框架demo

    **Java Web MVC框架详解** Java Web项目中的MVC(Model-View-Controller)框架是一种广泛使用的软件设计模式,尤其在构建动态、数据驱动的Web应用时。MVC将应用程序的逻辑划分为三个主要部分,提高了代码的可维护性...

    sentinel-spring-webmvc-adapter-1.8.0-API文档-中英对照版.zip

    标签:spring、alibaba、csp、sentinel、adapter、webmvc、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...

    spring-webmvc-5.3.15-API文档-中文版.zip

    标签:spring、webmvc、springframework、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    sentinel-spring-webmvc-adapter-1.8.0-API文档-中文版.zip

    标签:spring、alibaba、csp、sentinel、adapter、webmvc、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变...

Global site tag (gtag.js) - Google Analytics