spring mvc框架、mvc框架模式
框架与框架模式
框架模式:解决某一类问题的思维模式方法论
框架:在框架模式方法论之上实现的一套成熟的一组组件,供选用完成自己的系统
MVC:全称Model-View-Controller是模型-视图-控制器,MVC是一种框架模式,GOF把MVC看做三种设计模式:观察者模式、策略模式与组合模式
框架模式.jpg
比较常见的框架
- C++:MFC、gtk
- java: SSH、SSM、SpringMvc
- python:django
MVC优点-缺点
- 对于开发和维护来说成本低,易于维护与修改
- 耦合性不高,层层之间相互分离各司其职,对开发来说便于扩展
MVC缺点
- 层层严格分离对调试带来一定的困难
- 对于特别小的项目,mvc反而会带来更大的工作量以及复杂性
SpringMVC框架
简介
springMVC框架是基于Java的实现了MVC框架模式的请求驱动类型的轻量级框架。
SpringMvc 请求大致流程图
image.png
spring mvc九大组件
- HandlerMappings URL和controller对应关系的保存
- HandlerAdapters 适配器参数转换
- HandlerExceptionResolvers 用来处理异常产生之后的转化器
- ViewResolvers 视图解析器
- RequestToViewNameTranslator 从request中获取viewName
- LocaleResolver 从request中解析出来的locale
- ThemeResolver 解析主题
- MultipartResolver 多组件文件上传
- FlashMapManager 闪存
Spring MVC执行时序图
Spring Mvc常用注解
@Controller
控制器,负责处理由DispatcherServlet分发用户请求由HandlerMapping处理url与Controller中Method一一对应找到对应暴露出去的处理器方法,处理用户请求数据再经过业务处理层处理后封装返回一个Model,然后该Model返回相应的View进行显示
@RequestMapping
@RequestMapping是一个用来处理请求地址映射的注解,可以作用于类或者方法。该注解包含6个属性
value:指定请求的实际地址,指定的地址可以是URL Template模式;
method:指定请求的方法类型;
consumes:指定请求提交的内容类型(Content-Type),例如application/json,text/html;
produces:指定返回的内容类型,仅当请求头部中Accept包含指定类型时方法才进行处理;
params:请求中必须包含某些参数时,方法才进行处理;
headers:请求header中必须包含某些指定的header值,方法才进行处理;
@Resource和@Autowired
@Resource和@Autowired都是bean注入时使用,但是其实@Resource并不是spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入;
@Resource和@Autowired的共同点:两者都可以使用在字段或者setter方法上,如果使用在了字段上,那么就不再需要setter方法。
@Resource和@Autowired的不同点:
@Autowired注解是由spring提供的,需要导入
org.springframework.beans.factory.annotation.Autowired,只按照byType进行注入。在默认情况下,它要求依赖的对象必须存在,如果允许null,可以通过属性required设置为false进行设置。如果我们需要辅助通过byName进行装配bean,我们可以结合@Qualifier注解一起使用。
@Resource注解默认是按照byName进行装配bean,由J2EE提供,需要导入javax.annotion.Resource。@Resource注解包含两个重要的属性: name和type,Spring将@Resource注解中的name属性解析为bean的名字,将type属性解析为bean的类型。
当@Resource注解的name属性时,Spring将按照byName方式进行bean注入,找不到将会抛出异常;
当使用type属性时,将按照byType方式进行bean注入,找不到或者找到多个将会抛出异常;
如果同时使用了这两个属性,那么将会从Spring上下文中查找指定类型指定名字bean进行装配,找不到将会抛出异常;
如果两个属性都没有使用,那么将会按照默认方式byName进行bean注入。
@ModelAttribute
@ModelAttribute注解有两种用法:一种是用在拥有返回值的方法上,方法的返回值将会作为Model中指定属性的值;另一种是用在请求处理方法参数上,方法参数将会从Model的属性列表中获取指定属性的值。通过@ModelAttribute(“xxxx”)可以指定属性的名称。在Controller的请求处理方法调用之前,@ModelAttribute注解的方法都会被首先执行。
@SessionAttributes
@SessionAttibutes注解只能用在类上,不能使用在方法上。该注解将Model属性列表中指定的一些属性保存到Session对象中
@PathVariable
该注解用于将请求URL的模板变量提取出来,应用到请求处理方法参数中
@RequestParam
@RequestParam主要用于SpringMVC后台请求处理方法中获取参数,类似与request.getParameter(“name”), 该注解包含三个属性:required, defaultValue, value,其中required表示请求中是否必须包含该参数,defaultValue表示请求中没有包含该参数时的默认值,value表示传入的参数的名称
@ResponseBody
该注解用于将Controller请求处理方法返回的对象,通过适当的HttpMessageConverter转换为指定的格式,保存到Response对象的body区
@Component
相当于通用的注解
@Repository
用于注解DAO层
一个简单的SpringMVC项目
项目结构图
image.png
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"><display-name>springMVC1</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><servlet><servlet-name>springMVC</servlet-name><!-- 请求触发器 --><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springMVC-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup><!-- 提前启动 --></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/</url-pattern><!-- 或*.action --></servlet-mapping><!-- 解决springMVC的post乱码 --><filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping></web-app>
springMVC-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- 配置controller层路径扫描 com.qfedu.springmvc.controller --><context:component-scan base-package="com.springmvc.controller"></context:component-scan><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/WEB-INF/jsp/" /><!-- 后缀 --><property name="suffix" value=".jsp" /></bean>
</beans>
Controller
@Controller
public class HelloWorld {@Resourceprivate ISysMonitorService sysMonitorService;@RequestMapping("/hello")public String helloworld() {return sysMonitorService.query();}
}
Service
public abstract interface ISysMonitorService {String query();
}
@Service
public abstract class SysMonitorServiceImpl implements ISysMonitorService {@Autowiredprivate ISysMonitorDao iSysMonitorDao;public String query() {return iSysMonitorDao.query();}
}
Dao
public interface interface ISysMonitorDao{String query();
}
@Repository
public interface SysMonitorDaoImpl implements ISysMonitorDao{public String query() {// 数据库查询调用return "Hello World";}
}
学习更多JAVA知识与技巧,关注与私信博主(学习)
spring mvc框架、mvc框架模式相关推荐
- data spring 指定时区_Spring 框架基础(05):Mvc架构模式,执行流程详解
本文源码:GitHub || GitEE 一.SpringMvc框架简介 1.Mvc设计理念 MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个组件里面, ...
- 深入浅出的理解框架(Struts2、Hibernate、Spring)与 MVC 设计模式
现在许许多多的初学者和程序员,都在趋之若鹜地学习Web开发的宝典级框架:Struts2,Spring,Hibernate.似乎这些框架成为了一个人是否精通Java,是否会写J2EE程序的唯一事实标准和 ...
- spring框架mvc框架_Spring的MVC测试框架入门–第1部分
spring框架mvc框架 最新推出的主要Spring框架是Spring MVC测试框架,Spring Guys声称它是"一流的JUnit支持,可通过流畅的API测试客户端和服务器端Spri ...
- spring框架mvc框架_Spring MVC测试框架入门–第2部分
spring框架mvc框架 这个迷你系列的第一个博客介绍了Spring MVC测试框架,并演示了其在单元测试Spring MVC Controller类中作为控制器而不是POJO进行单元测试的用途. ...
- spring框架mvc框架_5篇Spring框架书籍,通过MVC学习Spring
spring框架mvc框架 Spring Framework is one of the most widely used Java EE Frameworks. It's an open sourc ...
- SSM框架实现用户查询、注册、登录——IDEA整合Spring、Spring MVC、Mybatis 框架
目录 零.前言 一.说明 1.整合说明 2.最终目标 3.数据库准备 二.搭建整合环境 1.创建 maven 工程 2.导入依赖坐标 3.创建java和resources文件夹 4.创建类和接口文件 ...
- php cli python,PHP MVC框架 CodeIgniter CLI模式简介
PHP MVC框架 CodeIgniter CLI模式简介 分类:PHP_Python| 发布:佚名| 查看: | 发表时间:2014/7/25 让我们以Hello World为例,首先创建一个简单的 ...
- JSPssh物流便利店管理系统SSH 框架 MVC 模式 mysql数据库
一.源码特点 JSPssh物流便利店管理系统 是一套完善的WEB设计系统,对理解JSP java 编程开发语言有帮助,系统采用ssh框架 MVC模式进行开发,系统具有完整的源代码和数据库,系统 ...
- ssh名片管理系统ssh框架 MVC模式myeclipse开发
一.源码特点 JSPssh名片管理系统 是一套完善的WEB设计系统,对理解JSP java 编程开发语言有帮助,系统采用ssh框架 MVC模式进行开发,系统具有完整的源代码和数据库,系统主要采 ...
- JSP 房产租赁销售管理系统ssh框架 MVC模式mysql数据库
一.源码特点 JSP 房产租赁销售管理系统 是一套完善的WEB设计系统,对理解JSP java 编程开发语言有帮助,系统采用ssh框架 MVC模式进行开发,系统具有完整的源代码和数据库,系统 ...
最新文章
- Word文档使用密码加密
- redhat 禁止selinux步骤
- win32按钮按下不弹起_荣耀亲选智能恒温电热水壶,宝爸冲奶粉再也不做难了
- .Net Core功能开关实战
- CSS3那些不为人知的高级属性
- mysql内部实现原理面试_理解完这些基本上能解决面试中MySql的事务问题
- 从留存的本质出发,制定留存策略
- jQuery函数 - 左右抖动效果,用于提示
- mysql 开发进阶篇系列 34 工具篇 mysqlcheck(MyISAM表维护工具)
- codeforces 385C Bear and Prime Numbers
- 【PHP面向对象(OOP)编程入门教程】10.__set(),__get(),__isset(),__unset()四个方法的应用...
- exec调用oracle,exec 和 call 用法详解
- 批量提取html文件数据库,风越批量文本提取器
- 常用的3dsmax插件(批处理模型的插件)
- 薄织物和隔热材料的热阻及热导率测试中存在的问题
- Python中用正则表达式搜索本地英汉词典,找到具有某种pattern的单词
- OA系统审批流程思路梳理
- 反距离加权插值IDW计算详细步骤
- git 将暂存区文件提交_git 暂存区
- python文本匹配_python 匹配@