SpringMVC与请求控制器
MVC设计模式
视图(View) -对应组件:JSP或者HTML文件
控制器(controller) -对应组件:Servlet
模型(Model) -对应组件:JavaBean
MVC优点
多视图共享一个模型,大大提高代码的可重用性
MVC三个模块相互独立,松耦合架构
控制器提高了应用程序的灵活性和可配置性
有利于软件工程化管理
MVC缺点
原理复杂
增加了系统结构和实现的复杂性
视图对模型数据的低效访问
Spring MVC框架实现原理
- 发起请求到前端控制器(DispatcherServlet)
- 前端控制器请求HanderrMapping查找Handler(可根据xml配置,注解查找)
- 处理器映射器HandlerMapping向前端控制器返回Handler
- 前端控制器调用处理器适配器执行Handler
- 处理器适配器执行Handler
- Handler执行完成后给适配器返回ModelAndView
- 处理器适配器向前端控制器返回ModelAndView(SpringMVC底层对象,包含model和view)
- 前端控制器请求视图解析器进行解析(根据逻辑视图名解析真正的视图名(.jsp))
- 视图解析器向前端控制器返回View
- 前端控制器实行视图渲染(视图渲染将模型数据填充到request域中)
- 响应给客户端
Spring MVC框架搭建步骤
下载jar文件并导入工程
配置文件->修改web.xml配置文件
<!-- 配置核心控制器 DispatcherServlet --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <!-- Springmvc默认加载Springmvc的配置文件,但是需要满足一下规则 命名规则:servlet-name-servlet.xml==> springmvc-servlet.xml 路径规则:springmvc-servlet.xml必须放在WEB-INFO下面--> <!-- 定义读取的applicationContext-mvc.xml文件 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-mvc.xml </param-value> </init-param> <!-- 启动服务器即读取 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> |
创建Spring MVC的配置文件(注:跟配置读取mvc.xml必须一致)
配置注解处理器映射器(在mvc.xml文件配置) <!-- 配置注解的处理器映射器 寻找执行类 Controller --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" /> 配置注解处理器适配器(在mvc.xml文件配置) <!-- 配置注解的处理器适配器 执行Controller --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" /> 开启指定目录注解扫描(在mvc.xml文件配置) <!-- 开启注解扫描 cn.smbms替换controller所在包路径--> <context:component-scan base-package="cn.smbms"/> 配置视图解析器(在mvc.xml文件配置) <!-- 配置视图解析器 /WEB-INF/jsp/index.jsp--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 配置前缀--> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- 配置后缀 --> <property name="suffix" value=".jsp" /> </bean> |
控制层方法上添加@Controller注解,也可以@Controller("xxx/xxx/")添加路径前缀
方法上添加@RequestMapping注解
RequestMapping(定义访问名)
功能:请求映射
写法:
RequestMapping(“index”) 可以匹配任何的扩展名
RequestMapping(“/index.do”)
RequestMapping(value=“/index.do”)
RequestMapping(value=“/index.do” method=RequestMethod.GET)
RequestMapping(value=“/index.do” method=RequestMethod.POST)
浏览器直接写url或者a标签都是GET请求
一般情况下,如果使用from表单提交都是post请求,还有ajax请求指定post请求
SpringMVC基于注解封装参数
根路径注解RequestMapper(“”) 是为了隔离不同的Controller里面相同的方法
SpringMVC没有成员变量,把需要的参数对象放入方法中,当你请求这个方法时候,这个方法里面对象会自动被创建,需要封装的参数自动被封装方法的对象.
提交表单:
例:<form action="${pageContext.request.contextPath}/login" > 前面的参数是取得当前的绝对路径. 需要导入jsp-api包
基本数据类型
实体类
包装类
数组
接收集合类型参数
方法里面不能直接传递list集合和map集合类型参数,把list集合定义在包装类里面.
List传递
接收Map类型参数
页面参数的回显
Springmvc使用model对象,Model对象相当于application
application对象中数据可以是el表达式进行获取
URL模板映射
主要是为请求restfull设计模式
restfull软件架构设计模式:请求更简洁,更方便,更安全搜索引擎收录.
普通修改数据
<a ref="${pageContext.request.contextPath}/index/update.do?id=${user.id}">编辑</a>
初识Restfull
<a href="${pageContext.request.contextPath}/index/update/${user.id }.do">编辑</a>
绝对实现Restfull风格
如果在上面DispatcherServlet设置拦截权限为全局,则可绝对实现Restfull风格.
例:设置全局拦截
则请求默认实现Restfull风格
RequestParam
该注解可以给参数设置别名,设置默认值.
内置属性:
value=”属性别名” 设置参数属性别名,在页面使用别名进行传参.
defaultValue=”默认值”,设置默认属性值,当无值传入时,传入默认值.
required=”true(默认)” 请求中一定要有相应的参数,否则报400错误.
转发和重定向
forward:转发,不改变地址情况下的页面跳转
return “forward: getList”;//相对路径
return “forward:/index/ getList”;//根路径可随便指定已有的路径
redirect:页面跳转,地址同步改变
return "redirect:getList";//相对路径跳转
return "redirect:/index/getList";//绝对路径重定向
<mvc:annotation-driven /> spring3.0.x后默认使用了
<mvc:annotation-driven />默认创建了处理器映射器和处理器适配器,还提供了json数据格式的支持
SpringMVC与请求控制器的更多相关文章
- Spring MVC体系结构和处理请求控制器
Spring MVC体系结构和处理请求控制器 一:MVC设计模式: (1.)数据访问接口:DAO层 (2.)处理业务逻辑层:Service层 (3.)数据实体:POJO (4.)负责前段请求接受并处理 ...
- SpringBoot对比SpringMVC,SpringMVC 处理请求过程
(问较多:1.SpringBoot对比SpringMVC.2.SpringMVC 处理请求过程.问:springboot的理解 Spring,Spring MVC,Spring Boot 三者比较 S ...
- springMVC(一) --前端控制器(DispatcherServlet)的作用
SpringMVC是Spring中的模块,它实现了mvc设计模式的web框架,首先用户发出请求,请求到达SpringMVC的前端控制器(DispatcherServlet),前端控制器根据用户 ...
- 16 SpringMVC 的请求参数的绑定与常用注解
1.SpringMVC 绑定请求参数 (1)支持的数据类型 基本类型参数: 包括基本类型和 String 类型POJO 类型参数: 包括实体类,以及关联的实体类数组和集合类型参数: 包括 List 结 ...
- Spring系列 SpringMVC的请求与数据响应
Spring系列 SpringMVC的请求与数据响应 SpringMVC的数据响应 数据响应的方式 y以下案例均部署在Tomcat上,使用浏览器来访问一个简单的success.jsp页面来实现 Suc ...
- SpringMVC 获得请求数据
获得请求参数 客户端请求参数的格式是:name=value&name=value- - 服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接收如下类型的参数: 基本类型 ...
- springMvc REST 请求和响应
前言: 突然怎么也想不起来 springMvc REST 请求的返回 类型了! (尴尬+究竟) 然后本着 方便的想法 百度了一下 发现了个问题,大家在写 springMvc RES ...
- SpringMvc Controller请求链接忽略大小写(包含拦截器)及@ResponseBody返回String中文乱码处理
SpringMvc Controller请求链接忽略大小写(包含拦截器)及@ResponseBody返回String中文乱码处理... @RequestMapping(value = "/t ...
- SpringMVC之请求参数的获取方式
转载出处:https://www.toutiao.com/i6510822190219264516/ SpringMVC之请求参数的获取方式 常见的一个web服务,如何获取请求参数? 一般最常见的请求 ...
随机推荐
- 使用Blender批量导出/转换模型
2.4版本号的Blender API和2.5以上版本号的API有非常大的不同,这里仅仅是提供了思路和2.4版本号的导出方案. 先提供一个脚本,这个是由Blender调用的.用于转换Ogre的Mesh文 ...
- 【iOS系列】-UIButton的非常规使用
[iOS系列]-UIButton的非常规使用 主要介绍UIButton在开发中得小技巧,使用好了,可以达到很奇妙的效果. 1:设置按钮内边距属性,可以呈现出相框的效果 btn.contentEdgeI ...
- C# MVC 枚举转 SelectListItem
<span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif; background-color: r ...
- [学习笔记]渗透测试metasploit
1.渗透成功后,在meterpreter命令行,需要使用如下命令切换当前目录.更多信息,可以参考: meterpreter > pwd C:\ meterpreter > cd /&quo ...
- 【CTF】后续深入学习内容
1.i春秋 https://www.ichunqiu.com/course/451 搜索black hat,可以看到黑帽大会的内容.免费. 2.wireshark 基础篇 1)由于Wireshark是 ...
- MFC项目实战(1)文件管理器--准备篇
本程序主要实现如下功能: 程序通过左边的树形控件显示本地计算机中目录的结构,右边的列表控件则负责响应树形控件中选择的目录节点并把此节点中的所有项在列表框中显示出来,列表框支持奇偶行颜色设置,选中颜色设 ...
- C控制台密码输入:输入一个字符显示一个星号
要在c控制台中输入一个字符显示一个星号, 则不能用"stdio.h'提供的库函数,因为它们都是带回显的,比如getchar() getchar()用来接收输入的字符串,输入一个字符就回显一个 ...
- HttpServlet容器响应Web客户流程
HttpServlet容器响应Web客户请求流程如下: 1)Web客户向Servlet容器发出Http请求: 2)Servlet容器解析Web客户的Http请求: 3)Servlet容器创建一个Htt ...
- Windows下手动安装redis服务
1.Redis本身不支持windows,但是有另外的团队在维护着一个windows下的版本 2.下载地址: https://github.com/MSOpenTech/redis 2.8的版本在源 ...
- gerrit调试