解读Spring MVC开发框架
3005字,阅读需时11分钟

在Java EE开发中,Spring和Spring MVC已经是标配的基础系统架构。前面已经介绍了Spring框架,在这里主要说说Spring MVC。

实际上Spring MVC是Spring框架的一部分,Spring框架成为Java EE开发主流框架后,Spring开发小组又在Spring框架的基础上推出了MVC架构,主要用于支持WEB应用程序的开发。

MVC是Model(模型,也称为数据模型)、View(视图)、Controll(控制器)三个英文单词首字母的缩写。从MVC组合的三个单词也可以看出,MVC是一种设计模型,它使用控制器将数据模型和视图进行分离,也就是将视图和数据解耦。这样的好处是后端处理的数据模型和前端视图显示的数据格式无关,实现一个数据模型可以对应多个视图以不同的方式来展现数据,当数据模型或视图发生变化时,相互之间的影响也会降低到最低。

MVC中最重要的核心就是控制器,控制器与视图和模型相对独立,它起到一个负责分发请求和返回处理结果的作用,对请求和数据模型的处理一般由JavaBean负责。

MVC虽然需要程序员多写一些额外的代码,但它强制性地将视图和数据分开所带给我们的好处是毋庸置疑的。可以设想一下,在早期的JSP网页中,处理数据的代码和HTML展现的代码是混合在一起的,它们被完全耦合到一个文件中,程序逻辑也非常混乱,对后期程序的维护和扩展都是很大的问题。

前面我们谈了MVC的设计结构和在WEB开发中的优势,下面我们谈谈在实际开发中MVC的运用和架构。下图是在实际开发中的MVC架构图。

image.png 

图 1 MVC实际开发架构图

上图是在实际开发中MVC的架构图,架构图分为两部分:虚线框外的是WEB程序的浏览器部分,用户通过浏览器与系统进行交互,同时浏览器也负责解析JSP页面;虚线框内的是WEB程序的后台部分,这部分包括控制器(Controller类)、业务逻辑(Service类)、数据模型(实体类)、数据持久层(Mybatis框架)和MySQL数据库管理系统。

在MVC架构中,JSP页面就是视图,用户通过JSP页面发出请求后,Spring MVC会根据请求路径,将请求发给与请求路径对应的Controller类,Controller类调用Service类对请求进行处理,Service类会调用数据持久层MyBatis完成对实体类的存取和查询工作,并将处理结果返回到Controller类,Controller类将处理结果转换为ModelAndView对象,JSP接收ModelAndView对象并进行渲染。

Controller类是在普通Java类的头部加入@Controller注解,使其变为Controller类,在Controller类中使用@RequestMapping注解标记在Controller类方法的头部,使该方法可以响应一个WEB请求地址,当JSP页面向这个地址发送请求时,该方法会被调用。下面的代码是Controller类的样例。

@Controller
@RequestMapping(value = "Admin")
public class UserController {
@RequestMapping(value="/login.do",method={RequestMethod.GET})
    @ResponseBody
Public ModelAndView loginUser(HttpServletRequest request)
ModelAndView view = new ModelAndView();
return view;
}
}

Service类为业务逻辑处理类,在类的头部使用注解@Service标注,被注解@Service标注的类会被Spring框架自动注入到Controller类。下面的代码是Service类的样例。

@Service
public class UserServiceImpl implements UserService {
    @Override
    public InnerResult loginUser(String name, String psw) {
    }
}

实体类也是POJO类,也就是MVC的数据模型,实体类仅有属性以及获取和设置属性的get和set方法,没有事务处理方法。下面的代码是实体类的样例。

public class TSUser {
    private String id;
    private String userName;
    private String loginName;
private String password;
  public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getLoginName() {
        return loginName;
    }
    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

现在我们已经对MVC的架构有了大致了解,后面在设计人脉系统的过程中,我们会用到这些知识。

我要评论
全部评论
郎宏林
授课老师
授课老师简介
项目经理,系统分析和架构师,从事多年中文信息处理技术。熟悉项目管理、擅长项目需求分析和设计、精通Java、C#、Python等编程语言。
下载APP

手机、电脑同步学

用微信或手机浏览器扫描二维码,即可下载APP。

  • 备案号:鲁ICP备15001146号
  • @1997-2018 潍坊米粒花网络技术有限公司版权所有