mvc模式

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。设计模式提供了一个标准的术语系统,且具体到特定的情景。例如,单例设计模式意味着使用单个对象,这样所有熟悉单例设计模式的开发人员都能使用单个对象,并且可以通过这种方式告诉对方,程序使用的是单例模式。

MVC(模型Model-视图View-控制器Controller)是一种设计模式

M(Model)在Java Web里说的是JavaBean,在JavaBean中除了其属性和字段,还可以有行为及其事件,JavaBean可以理解为普通Java对象。Java普通对象,就是符合Java规范的所有对象,这和实体类完全是两回事。业务逻辑和数据访问应该放在Model层,也就是V负责展示数据,Controler除了转发不做业务逻辑。真正的逻辑事务,数据访问,甚至算法都放到Model去。
Controller是控制器的意思,所谓控制器,就是将用户请求转发给模型层,经过处理后把结果返回到界面层展现的一个中间层,那么Controller到底管什么工作呢?先不说.先来看下在Java Web中这三个层一般的定义,一般在Java Web里,JSP充当V,Servlet充当C,JavaBean充当M,这里的Servlet管什么工作呢?接受输入,转到Model层去处理,处理结果保存后转发到JSP,然后展现数据。所以它的功能就是控制器的基本功能,它就管转发,在V和M之间转来转去。

  MVC没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是已实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。


SpringMVC运行原理

1. 客户端请求提交到DispatcherServlet

2. DispatcherServlet控制器查询HandlerMapping,找到并分发到指定的Controller中。

3. Controller调用业务逻辑处理后,返回ModelAndView

4. DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图

5. 视图负责将结果显示到客户端


mvc示例:

1.创建model

     package entity;
       import java.io 
      .Serializable;
      import java.util.Arrays;
      public class Student implements Serializable{
	private Integer no;
	private String name;
	private String sex;
	private String[] interest;
	//shift + alt + s 快速构建set get 方法
	public Integer getNo() {
		return no;
	}
	public void setNo(Integer no) {
		this.no 
        = no;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String[] getInterest() {
		return interest;
	}
        public void setInterest(String[] interest) {
		this.interest = interest;
	}
	@Override
	public String toString() {
		return "Student [no=" + no + ", name=" + name + ", sex=" + sex + ", interest=" + Arrays.toString(interest)
				+ "]";
	}		

        }

2.视图层:

  <%@ 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>Spring 4 MVC - HelloWorld Index Page</title>
       </head>
       <body>
  
        <center>
        <h2>Hello World</h2>
        <h3>
            <a href="hello?name=zhangsan">点击跳转</a>
        </h3>
       </center>
       </body>

       </html>

3.控制层:

 package com.test;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;


 
@Controller
public class HelloSpringController {
    String message = "Welcome to Spring MVC!";
 
    @RequestMapping("/hello")
    public ModelAndView showMessage(@RequestParam(value = "name", required = false, defaultValue = "Spring")           String name) {
 
        ModelAndView mv = new ModelAndView("hellospring");//指定视
        //向视图中添加所要展示或使用的内容,将在页面中使用
        mv.addObject("message", message);
        mv.addObject("name", name);
        return mv;
      }
     }

阅读更多
文章标签: mvc
个人分类: java-spring
上一篇数据库查询
下一篇JAVA反射机制
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭