spring mvc的位置:
springMVC只是spring的一个模块;
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:DispatcherServlet请求HandlerMapping查找Handler(可以根据xml配置或注解进行查找)
第三步:HandlerMapping向DispatcherServlet返回Handler
第四步:DispatcherServlet调用HandlerAdapter去执行Handler
第五步:HandlerAdapter去执行Handler
第六步:Handler执行完成给HandlerAdapter返回ModalAndView
第七步:HandlerAdapter向DispatcherServlet前端控制器返回ModalAndView
第八步:DispatcherServlet请求视图解析器进行解析,根据逻辑视图名解析成真正的视图(jsp等);
第九步:视图解析器向DispatcherServlet返回View
第十步:DispatcherServlet进行视图渲染,将数据填充到request域;response响应结果
组件:
1.前端控制器DispatcherServlet,相当于转发器
2.处理器映射器HandlerMapping,根据url查找Handler
3.处理器适配器HandlerAdapter,执行Handler
4.处理器Handler
5.视图解析器View resolver,进行视图解析,根据逻辑视图名解析真正的视图
6.视图View,是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...);
一、环境搭建:
springmvc独立运行的jar包:
二、入门程序
1、前端控制器DispatcherServlet配置:
<!-- springmvc前端控制器 --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等等)如果不配置contextConfigLocation,默认加载的是/WEB-INF/servlet名称-serlvet.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结尾 由DispatcherServlet进行解析第二种:/,所以访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析使用此种方式可以实现 RESTful风格的url第三种:/*,这样配置不对,使用这种配置,最终要转发到一个jsp页面时,仍然会由DispatcherServlet解析jsp地址,不能根据jsp页面找到handler,会报错。--><url-pattern>*.action</url-pattern></servlet-mapping>

springmvc.xml下配置:

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "><!-- 配置Handler --><bean name="/queryItems.action" class="com.cy.controller.ItemsController1"/><!-- 处理器映射器 将bean的name作为url进行查找 ,需要在配置Handler时指定beanname(就是url)所有的映射器都实现 HandlerMapping接口。--><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /><!-- 处理器适配器  所有处理器适配器都实现 HandlerAdapter接口 --><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /><!-- 视图解析器解析jsp视图,默认使用jstl标签,classpath下的得有jstl的包--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
</beans>

编写handler:

开发handler,要实现controller接口,才能由org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter执行
public class ItemsController1 implements Controller{@Overridepublic ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception {//调用service查找 数据库,查询商品列表,这里使用静态数据模拟List<Items> itemsList = new ArrayList<Items>();Items items_1 = new Items();items_1.setName("联想笔记本");items_1.setPrice(6000f);items_1.setDetail("ThinkPad T430 联想笔记本电脑!");Items items_2 = new Items();items_2.setName("苹果手机");items_2.setPrice(5000f);items_2.setDetail("iphone6苹果手机!");itemsList.add(items_1);itemsList.add(items_2);//返回ModelAndViewModelAndView modelAndView =  new ModelAndView();//相当 于request的setAttribut,在jsp页面中通过itemsList取数据modelAndView.addObject("itemsList", itemsList);//指定视图modelAndView.setViewName("/WEB-INF/jsp/itemsList.jsp");return modelAndView;}
}

视图jsp编写:

<table width="100%" border=1>
<tr>
<td><input type="submit" value="查询"/></td>
</tr>
</table>
商品列表:
<table width="100%" border=1><tr><td>商品名称</td><td>商品价格</td><td>生产日期</td><td>商品描述</td><td>操作</td></tr><c:forEach items="${itemsList }" var="item"><tr><td>${item.name }</td><td>${item.price }</td><td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td><td>${item.detail }</td><td><a href="${pageContext.request.contextPath }/item/editItem.action?id=${item.id}">修改</a></td></tr></c:forEach>
</table>

url访问http://localhost:8080/springMVC/queryItems.action,图:

 三、对入门程序的补充:

1)另一个非注解的处理器映射器:在上述springmvc.xml中添加简单url映射器:

可以看到:多个处理器映射器可以并存,前端控制器判断url能让那些映射器映射,就让正确的映射器处理.

<!-- 配置Handler --><bean id="itemsController1" name="/queryItems.action" class="com.cy.controller.ItemsController1"/><!-- 处理器映射器 将bean的name作为url进行查找 ,需要在配置Handler时指定beanname(就是url)所有的映射器都实现 HandlerMapping接口。--><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /><!--简单url映射  --><bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><!-- 对itemsController1进行url映射,url是/queryItems1.action --><prop key="/queryItems1.action">itemsController1</prop><prop key="/queryItems2.action">itemsController1</prop></props></property></bean>

现在url中访问:

http://localhost:8080/springMVC/queryItems1.action

http://localhost:8080/springMVC/queryItems2.action

http://localhost:8080/springMVC/queryItems.action都可以正确访问;

2)另一个非注解的适配器:

这个HttpRequestHandlerAdapter适配器要求Handler实现HttpRequestHandler接口:

<!-- 配置另外一个Handler --><bean id="itemsController2" name="/queryItems3.action" class="com.cy.controller.ItemsController2" /><!-- 处理器映射器 将bean的name作为url进行查找 ,需要在配置Handler时指定beanname(就是url)所有的映射器都实现 HandlerMapping接口。--><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /><!-- 另一个非注解的适配器 --><bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/><!-- 视图解析器解析jsp视图,默认使用jstl标签,classpath下的得有jstl的包--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>

Handler:

public class ItemsController2 implements HttpRequestHandler{@Overridepublic void handleRequest(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {//调用service查找 数据库,查询商品列表,这里使用静态数据模拟List<Items> itemsList = new ArrayList<Items>();Items items_1 = new Items();items_1.setName("联想笔记本");items_1.setPrice(6000f);items_1.setDetail("ThinkPad T430 联想笔记本电脑!");Items items_2 = new Items();items_2.setName("苹果手机");items_2.setPrice(5000f);items_2.setDetail("iphone777苹果手机!");itemsList.add(items_1);itemsList.add(items_2);//设置模型数据request.setAttribute("itemsList", itemsList);//设置转发的视图request.getRequestDispatcher("/WEB-INF/jsp/itemsList.jsp").forward(request, response);//使用此方法可以通过修改response,设置响应的数据格式,比如响应json数据/*response.setCharacterEncoding("utf-8");response.setContentType("application/json;charset=utf-8");response.getWriter().write("json串");*/}
}

现在浏览器中访问http://localhost:8080/springMVC/queryItems3.action就能访问了;

转载于:https://www.cnblogs.com/tenWood/p/6267342.html

springMVC学习(1)相关推荐

  1. SpringMVC:学习笔记(11)——依赖注入与@Autowired

    SpringMVC:学习笔记(11)--依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...

  2. SpringMVC 学习-异常处理 SimpleMappingExceptionResolver 类

    SpringMVC 学习-异常处理 SimpleMappingExceptionResolver 类 参考文章: (1)SpringMVC 学习-异常处理 SimpleMappingException ...

  3. SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传

    SpringMVC:学习笔记(10)--整合Ckeditor且实现图片上传 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可 ...

  4. (转)SpringMVC学习(三)——SpringMVC的配置文件

    http://blog.csdn.net/yerenyuan_pku/article/details/72231527 读者阅读过SpringMVC学习(一)--SpringMVC介绍与入门这篇文章后 ...

  5. springmvc学习笔记(10)-springmvc注解开发之商品改动功能

    springmvc学习笔记(10)-springmvc注解开发之商品改动功能 springmvc学习笔记(10)-springmvc注解开发之商品改动功能 标签: springmvc springmv ...

  6. SpringMVC学习(五)——零配置实现SpringMVC

    文章目录 1.引言 2.搭建过程 2.1 开发环境搭建 2.2 项目搭建 2.2.1 首先看`web.xml`配置 2.2.2 增加`WebApplicationInitializer`的实现类 2. ...

  7. SpringMVC学习(二)——快速搭建SpringMVC开发环境(注解方式)

    文章目录 说明 1.工程搭建 2.注解配置 2.1.context:annotation-config说明 2.2.context:component-scan配置说明 2.3.mvc:annotat ...

  8. springmvc学习笔记(19)-RESTful支持

    springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...

  9. SpringMVC:学习笔记(5)——数据绑定及表单标签

    SpringMVC--数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...

  10. (转)SpringMVC学习(一)——SpringMVC介绍与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/72231272 SpringMVC介绍 SpringMVC是什么? SpringMVC和Stru ...

最新文章

  1. Java方向如何准备BAT技术面试答案
  2. OpenGL_Qt学习笔记之_05(纹理映射)
  3. day002--python编程的相关软件,变量
  4. NVDKC6416平台H.264算法优化
  5. 2019 d serv 激活_化疗过程中肌肉减少症的发生机制及维生素D、ω-3脂肪酸的作用...
  6. html htc控件详解,*.HTC 文件的简单介绍-网页设计,HTML/CSS
  7. 工作后辞职原因是什么?
  8. Ubuntu 14.04 + nginx + php + mysql + phpmyadmin环境搭建,详细操作
  9. linux中 qt安装教程视频,Linux 下QT安装教程
  10. SadpTool 海康设备网络搜索工具
  11. 项目管理前话001——商业模式画布
  12. gtx1060 能用catia软件吗_性能炸天!资深IT大叔详测Precision 7730工作站
  13. FPGA 之 SOPC 系列(三)Nios II 体系结构
  14. 微信小程序实现类似微信提现、支付宝提现充值等 “自定义键盘“可实现自定义右下角搜索内容,手写input功能view组件,实现焦点获取事件
  15. 总结Python设置Excel单元格样式的一切,比官方文档还详细。
  16. visio付款流程图_职场人士常用的3款超好用流程图软件!
  17. AndroidStudio Task不显示
  18. 计算机面试、笔试常考题
  19. 蚂蚁金服新一代数据可视化引擎 G2
  20. python下载链接下载文件_python从下载链接下载文件到本地

热门文章

  1. 台式计算机诞生,生物电脑 ①1946年,世界上第一台计算机诞生,这个庞然大物开创了一个电脑时代。从那时候起,人们不断革新、创造,把庞然大物的体积一减再减,现在我们所见的台式电脑、掌上电脑...
  2. mysql查看索引文件_MySql如何查看索引并实现优化
  3. c语言调用python变量_在c中读取python的全局变量
  4. 简述html文档的基本,网页制作简答题答案
  5. linux启动python项目_java项目部署Linux服务器几种启动方式总结经验
  6. java 运行 依赖_java – 运行时中的依赖项确定
  7. layui多文件上传讲解_layui文件上传的实际应用实例
  8. 学习Linux的决心书
  9. JavaScript 动画 3---缓冲动画
  10. linux crontab 定时任务解析