如需转发请标明出处:http://www.cnblogs.com/gudu1/p/7222556.html

1. Spring介绍

  Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。

这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。

2. Spring的运行原理

  

  1.用户发出HTTP请求

  2-3.DispatchServlet通过请求URL到HandlerMapping中去寻找相对应的Handler并返回给DispatchServlet。

  4.找到Handler之后,通过Handler获得Controller类对象并调用。

  5.Controller 去调用业务处理的xxxService并返回ModelAndView。

  6.DispatchServlet把获得的ModelAndView交给ViewResovler进行处理,然后将处理的结果封装成View返回给DispatchServlet。

  7.将View视图解析

  8.发送给浏览器进行显示。

3. SpringMVC配置

  3.1 当然了,在配置之前还是要先把SpringMVC相关jar包给导进来,如下:

  

   核心包是最后一个:spring-webmvc-3.2.0.RELEASE.jar,我们发现其中有jstl的jar包,因为SpringMVC默认使用的标签就是jstl标签。

  

  3.2 在web.xml中进行配置,如下:

<!--
其实配置的就是一个Servlet,SpringMVC的核心就是DispatchServlet类,
请求到了DispatchServlet后,然后由它进行统一分发,最后将结果返回
-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--
这里配置的是SpringMVC的配置文件位置,默认为WEB-INF目录下,
名称为[<servlet-name>]-servlet.xml,如spring-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结尾的请求都会被MVC拦截,由DispatchServlet进行处理 -->
<url-pattern>*.action</url-pattern>
</servlet-mapping>

  

  3.3 在springmvc.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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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.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.smy.controller.ItemsController"></bean>
<!-- 处理器映射器 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!-- 处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<!-- 视图解析器 默认使用jstl标签-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean> </beans>

  所有的映射器都实现HandlerMapping接口,所有的适配器都实现HandlerAdapter接口,

   还有另外一个非注解的适配器:org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,

   另外一个映射器:org.springframework.web.servlet.handler.SimpleUrlHandlerMapping,

   如果这些都不配置的话,仍然能够使用,因为MVC有默认配置在核心中的/org/springframework/web/servlet/DispatcherServlet.properties中,

   有兴趣的同学可以自行查看。

4.  运行测试

  话不多说直接贴代码:

  ItemsController.java

package com.smy.controller;

import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import com.smy.po.Items; public class ItemsController implements Controller { @Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception { List<Items> list = new ArrayList<Items>();
Items items1 = new Items();
items1.setId(1);
items1.setName("图画");
items1.setDescribe("珍贵名画");
items1.setPrice(99.99); Items items2 = new Items();
items2.setId(2);
items2.setName("零食");
items2.setDescribe("非常好吃");
items2.setPrice(19.99); list.add(items1);
list.add(items2); ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("list", list);
modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
return modelAndView;
}
}

  ItemsController类必须实现Controller接口,查看映射文件:

  只有在实现了Controller类之后,MVC框架才能够认识它。

  Items.java

package com.smy.po;

public class Items {

    private int id;
private String name;
private double price;
private String describe;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getDescribe() {
return describe;
}
public void setDescribe(String describe) {
this.describe = describe;
}
}

  jsp页面中:

<table>
<tr>
<td>商品ID</td>
<td>商品名称</td>
<td>商品单价</td>
<td>商品描述</td>
</tr>
<c:forEach items="${requestScope.list }" var="items">
<tr>
<td>${items.id }</td>
<td>${items.name }</td>
<td>${items.price }</td>
<td>${items.describe }</td>
</tr>
</c:forEach>
</table>

运行结果:

  

The end.........

SpringMVC原理及非注解配置详解的更多相关文章

  1. 大数据学习day11------hbase_day01----1. zk的监控机制,2动态感知服务上下线案例 3.HDFS-HA的高可用基本的工作原理 4. HDFS-HA的配置详解 5. HBASE(简介,安装,shell客户端,java客户端)

    1. ZK的监控机制 1.1 监听数据的变化  (1)监听一次 public class ChangeDataWacher { public static void main(String[] arg ...

  2. Spring之旅第四篇-注解配置详解

    一.引言 最近因为找工作,导致很长时间没有更新,找工作的时候你会明白浪费的时间后面都是要还的,现在的每一点努力,将来也会给你回报的,但行好事,莫问前程!努力总不会有错的. 上一篇Spring的配置博客 ...

  3. Spring Boot中使用MyBatis注解配置详解(1)

    之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见 ...

  4. Spring Boot中使用MyBatis注解配置详解

    传参方式 下面通过几种不同传参方式来实现前文中实现的插入操作. 使用@Param 在之前的整合示例中我们已经使用了这种最简单的传参方式,如下: @Insert("INSERT INTO US ...

  5. Spring Boot教程(三十九)使用MyBatis注解配置详解(2)

    增删改查 MyBatis针对不同的数据库操作分别提供了不同的注解来进行配置,在之前的示例中演示了@Insert,下面针对User表做一组最基本的增删改查作为示例: public interface U ...

  6. Spring Boot教程(三十八)使用MyBatis注解配置详解(1)

    之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见 ...

  7. Kafka工作原理解析以及主要配置详解

    Kafka工作原理解析以及主要配置详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 无论是是Kafka集群,还是producer和consumer都依赖于Zookeeper集群保 ...

  8. Spring学习 6- Spring MVC (Spring MVC原理及配置详解)

    百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...

  9. SpringMVC 框架系列之组件概述与配置详解

    在上一篇文章 SpringMVC 框架系列之初识与入门实例 的实例中,我们已经知道,SpringMVC 框架是一个 web 层的框架,本篇文章就详细解释一下 SpringMVC 框架具体文件的配置以及 ...

随机推荐

  1. 一天搞定CSS: 浮动(float)及文档流--10

    浮动(float),一个我们即爱又恨的属性.爱,因为通过浮动,我们能很方便地布局: 恨,浮动之后遗留下来太多的问题需要解决,特别是IE6-7(以下无特殊说明均指 windows 平台的 IE浏览器). ...

  2. Spring Task每次都会调用两次的问题

    最近一个Spring Mvc的项目中需要定时执行一个任务,所以使用了spring 自带的Task功能.本地调试的时候一切都正常,可是部署到服务器上后,每次任务都会被调用两次.在网上搜索了相关的问题,排 ...

  3. Ubuntu ADSL拨号上网

    一直在家用接ADSL的无线wifi上网,最近用了很久的NetGear无线路由器被我毁了,只好暂时用有线了.在Ubuntu Linux下也可直接使用ADSL拨号上网. 1.连接设备 这没什么可多说的,一 ...

  4. CoordinatorLayout+沉浸式状态栏

    没有gif 说个*B 注意看 状态栏的瑶瑟变化 (如果我是你 我不会去计较下边的toast) 之前为了这个效果我查了好多文章 博客什么的   ,,要么就是刚开始图片背景没有填充到状态栏下   要么就是 ...

  5. Navicat连接报错:cannot load OCI DLL,126

    32位系统下报错:cannot load OCI DLL,126 解决方法:navicat 菜单中 -工具->选项->OCI 选择oracle安装目录下bin里面的oci.dll 在win ...

  6. echarts3 清空上一次加载的series数据

    今天做图表的时候发现了一个问题,想和大家分享一下 我有一个下拉选框,每次选中都切换不同的数据,数据是从后台查询获取的,但是如果后台返回了数据每次渲染都没有问题,如果后台没有返回数据,但是我在渲染图表的 ...

  7. [leetcode-537-Complex Number Multiplication]

    Given two strings representing two complex numbers. You need to return a string representing their m ...

  8. 一个"2-SUM"问题

    题目要求: Download the text file here. (Right click and save link as). The goal of this problem is to im ...

  9. 7.modifier插件的自定义和使用

    1.在plugins下面创建一个文件 modifier.changeDate.php 编写: <?php function smarty_modifier_changeDate($utime,$ ...

  10. java基础(8) -集合类-Collecion

    集合类-Collecion Collection接口 常用方法 //添加新元素 boolean add (E element); //返回迭代器 Iterator<E> iterator( ...