springmvc-组件配置-学习笔记
来源:互联网 发布:凡古加网络 编辑:程序博客网 时间:2024/06/05 17:30
springmvc是spring框架的一个模块,是一个基于MVC的web框架,springmvc和spring无需通过中间层整合。
springmvc原理
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping查找Handler(可以根据xml配置、注解进行查找)
第三步:处理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器调用处理器适配器去执行Handler
第五步:处理器适配器执行Handler
第六步:Handler执行完成给适配器返回ModelAndView,ModelAndView是springmvc框架的一个底层对象,包含Model和View
第七步:处理器适配器向前端控制器返回ModelAndView
第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回View
第十步:前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域
第十一步:前端控制器向用户响应结果
组件
1.前端控制器DispatcherServlet
作用:接收请求、响应结果,相当于转发器
2.处理器映射器HandlerMapping
作用:根据请求的url查找Handler
3.处理器适配器HadlerAdapter
作用:按照特定规则去执行Handler
注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以正确的执行Handler
4.视图解析器ViewResolve
作用:进行视图解析,根据逻辑视图名解析成真正的视图
配置前端控制器
在/WEB-INF/web.xml中配置,前端控制器是一个servlet
!-- springmvc前端控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet.class</servlet-class> <!-- contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器,适配器等) 如果不配做,默认加载/WEB-INF/servlet名称-servlet.xml(springmvc-servlet.xml)--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- 第一种:*。action 访问以.action结尾由DispactherServlet进行解析 第二种:/ 所有访问的地址都DispactherServlet进行解析 ,对于静态文件解析需要配置不让DispatcherServlet解析,可以实现RESTful风格 --> <url-pattern>*。action</url-pattern> </servlet-mapping>
Handler
需要实现Controller接口,
才能由org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter适配器执行。
实现类:
public class ItemsController implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { // TODO Auto-generated method stub List<Items> list = new ArrayList<Items>(); Items item1 = new Items(); item1.setName("abc"); list.add(item1); ModelAndView modelAndView = new ModelAndView(); //相当于request的setAttribute modelAndView.addObject("ItemsList", list); //指定视图 modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp"); return modelAndView; }}
配置处理器映射器,适配器和视图解析器
xml配置:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"> <!-- 配置Handler --> <bean name="/items.action" class="springmvc.ItemsController"></bean> <!-- 处理器映射器 1.将bean的name作为url进行查找 配置Handler时指定beanname(url)--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- 2.简单url配置映射器 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props > <prop key="/items1.action">items</prop> <prop key="/items2.action">items</prop> </props> </property> </bean> <!-- 处理器适配器 所有适配器都实现HandlerAdapter接口--> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> <!-- 视图解析器 解析jsp默认使用jstl标签,classpath下要有jstl包--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean></beans>//注:多种处理器映射器可以并存
HttpRequestHandlerAdapter
http请求处理器适配器,所有实现了HttpRequestHandler接口的Bean通过此适配器进行适配
配置:
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
Controller实现类:
public class ItemsController2 implements HttpRequestHandler { @Override public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<Items> list = new ArrayList<Items>(); Items item1 = new Items(); item1.setName("abc"); list.add(item1); request.setAttribute("itemsList2", list); request.getRequestDispatcher("/WEB-INF/jsp/items/itemsList.jsp").forward(request, response); }//此方法可以通过response来设置响应的数据格式,比如响应Json数据}
如果不在自已创建的springmvc.xml中配置处理器映射器、适配器和视图解析器,
前端控制器默认从 /org/springframework/web/servlet/DispatcherServlet.properties
文件中加载处理。
注解的处理器映射器、适配器
在spring3.1之前使用 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
注解映射器
在spring3.1之后使用 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
注解映射器
在spring3.1之前使用 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
注解适配器
在spring3.1之后使用 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
注解适配器
配置:
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean> <!-- 注解驱动代替上面的注解映射器和适配器的配置 mvc:annotation-driven默认加载很多参数绑定方法,实际开发使用这个标签 --> <mvc:annotation-driven></mvc:annotation-driven> <context:component-scan base-package="springmvc"></context:component-scan>
注解实现类:
@Controllerpublic class ItemsController3 { //url映射 @RequestMapping("/query.action") public ModelAndView query() throws Exception{ List<Items> list = new ArrayList<Items>(); Items item1 = new Items(); item1.setName("abc"); list.add(item1); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("itemsList3", list); modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp"); return modelAndView; }}
视图解析器前缀和后缀
配置:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 前缀 --> <property name="prefix" value="/WEB-INF/jsp/"></property> <!-- 后缀 --> <property name="suffix" value=".jsp"></property> <!-- JstlView表示JSP的模板页面需要使用JSTL标签库 --> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> </bean>
RequestMapping注解
定义Controller方法对应url,进行处理器映射使用
1.窄化请求路径:
@Controller//为了对url进行分类管理,定义根路径@RequestMapping("/items")public class ItemsController3 {
2.限制http请求方法:
//只能执行post请求方式@RequestMapping(value="/items" ,method={RequestMethod.POST})public class ItemsController3 {
Controller方法返回值
1.返回ModelAndView
2.返回String,表示返回逻辑视图名
真正的视图(jsp路径)=前缀+逻辑视图名+后缀
redirect重定向:return “redirect:query.action”
forward转发:return “forward:query.action”
3.返回void
使用request转发,response重定向和指定响应结果
- springmvc-组件配置-学习笔记
- springMVC学习笔记-环境配置
- springMVC学习笔记之配置
- springmvc 学习笔记和配置
- springMVC学习笔记---注解启用基本配置
- springMVC学习笔记(三) ---- controller配置总结
- SpringMvc学习笔记(一)配置
- SpringMVC组件及配置详解
- springMVC学习笔记--初识springMVC
- SpringMvc 学习笔记-------springmvc框架
- SpringMVC学习笔记(2) 框架配置+HelloWorld(注解版)
- SpringMVC学习笔记(3) 框架配置+HelloWorld(非注解版)
- springmvc学习笔记(二)路径配置与数据传递
- springmvc学习笔记(1)-框架原理和入门配置
- springmvc学习笔记(1)-框架原理和入门配置
- springMvc配置学习
- 学习SSM框架笔记五:利用五大组件采取配置文件和SpringMVC模式写HelloWorld
- SpringMVC的学习笔记
- imageview清空缓存状态
- ios developer tiny share-20160823
- spring data redis 操作redis 单机版和集群
- iOS开发支付集成之微信支付
- 贪吃蛇self1
- springmvc-组件配置-学习笔记
- 在centos6上安装docker1.12
- Android架构(一)MVP全解析
- CE、PE、P
- svn检出maven项目后,工程名字不显示M标识
- 关于通道
- ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
- 如何用yum安装本地rpm包
- CentOS7安装mysql之使用yum命令