1、基于XML Schema、Controller接口的spring mvc简单例子

1》创建一个动态Web项目,选择同时创建web.xml文件

2》在WEB-INF/lib中粘贴spring框架jar包,同时粘贴commons-logging-1.2.jar、servlet-api.jar(Tomcat的安装libs中可以找到)

3》编写核心控制器HelloController.java

package com.lfy.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; /**
* HelloController是一个实现Controller接口的控制器
* 可以处理一个单一的请求动作
* @author lfy
* HttpServletRequest、HttpServletResponse的引入需要Tomcat的servlet-api.jar
* 在构建路径中将其添加为外部jar即可。
*/
public class HelloController implements Controller { private static final Log log=LogFactory.getLog(HelloController.class); /**
* 该方法的参数对应请求的HttpServletRequest和HttpServletResponse。
* 该方法必须返回一个包含视图名或模型的ModelAndView对象。
*/
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
log.info("handleRequest()被调用");
ModelAndView mv=new ModelAndView();
//添加模型数据,可以是任意的pojo对象
mv.addObject("message","Hello World!");
//设置逻辑视图名,视图解析器会根据名字解析到具体的视图页面
mv.setViewName("/WEB-INF/content/welcome.jsp");
//返回ModeAndView对象
return mv;
}
}

4》编写web.xml、springmvc-config.xml

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>springMVCTest-1.0.0</display-name>
<!-- 定义springMVC的前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 让springMVC的前端控制器拦截所有请求 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

也可以将springmvc-config.xml文件放置在类路径下,此时配置的方式为:

<param-value>classpath*:config/springMVC/springmvc-config.xml</param-value>

springmvc-config.xml

<?xml version="1.0" encoding="utf-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"> <!-- 配置Handle,映射"/hello"请求 -->
<bean name="/hello" class="com.lfy.controller.HelloController"/> <!-- 处理映射器将bean的name作为url进行查找,需要在配置Handler时指定name(即url) -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- SimpleControllerHandlerAdapter是一个处理器适配器,所有处理器适配器都要实现HandlerAdapter接口 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>

5》添加welcome.jsp简单返回页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>welcome</title>
</head>
<body>
${requestScope.message}
</body>
</html>

6》运行

2、基于注解的的spring mvc简单例子。在上面的例子上,进行修改。

1》HelloController.java

package com.lfy.controller;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; /**
* 最简单的基于注解的springMVC
* @author lfy
*
*/
@Controller
public class HelloController { private static final Log log=LogFactory.getLog(HelloController.class); @RequestMapping(value="/HelloController/hello")
public ModelAndView hello() { log.info("hello()被调用");
ModelAndView mv=new ModelAndView();
//添加模型数据,可以是任意的pojo对象
mv.addObject("message","Hello World!");
//设置逻辑视图名,视图解析器会根据名字解析到具体的视图页面
mv.setViewName("/WEB-INF/content/welcome.jsp");
//返回ModeAndView对象
return mv;
}
}

2》springmvc-config.xml

<?xml version="1.0" encoding="utf-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <!-- spring可以自动扫描base-package下面的包或者子包下的java文件,如果扫描
到有spring的相关注解的类,则把这些类注册为spring的bean -->
<context:component-scan base-package="com.lfy.controller"/> <!-- 配置annotation类型的处理映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <!-- 配置annotation类型的处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> <!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>

3》运行

 3、springMVC核心4类配置

配置文件总体上有4类配置:springmvc前端控制器、处理器映射器、处理器适配器、视图解析器。

前端控制器配置:
      第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析

第二种:/,所有访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析,如使用<mvc:default-servlet-handler/>。
  使用此种方式可以实现 RESTful风格的url。

处理器映射器:
     非注解处理器映射器(了解)
     注解的处理器映射器(掌握)
     对标记@Controller类中标识有@RequestMapping的方法进行映射。在@RequestMapping里边定义映射的url。使用注解的映射器不用在xml中配置url和Handler的映射关系。

处理器适配器:
     非注解处理器适配器(了解)
     注解的处理器适配器(掌握)
     注解的处理器映射器和注解的处理器适配器是配对使用。不能非注解的映射器和注解的适配器使用。

<!--使用<mvc:annotation-driven>,默认还加载了很多参数绑定的方法-->
<mvc:annotation-driven></mvc:annotation-driven>
<!--可替代以下的映射器、适配器的注解配置声明-->
<!-- 配置annotation注解类型的处理映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!-- 配置annotation注解类型的处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

视图解析器:

主要是了解前缀、后缀的作用。

4、springMVC的一般运行步骤

第一步:发起请求到前端控制器(DispatcherServlet)
    第二步:前端控制器请求处理器映射器HandlerMapping查找Handler
            可以根据xml配置、注解进行查找
    第三步:处理器映射器HandlerMapping向前端控制器返回Handler
    第四步:前端控制器调用处理器适配器去执行Handler
    第五步:处理器适配器去执行Handler
    第六步:Handler执行完成给处理器适配器返回ModelAndView
    第七步:处理器适配器向前端控制器返回ModelAndView
    第八步:前端控制器请求视图解析器去解析视图
           根据逻辑视图名解析成真正的视图(jsp)
    第九步:视图解析器向前端控制器返回view
    第十步:前端控制器进行视图渲染
           数据填充到request域
    第十一步:前端控制器向用户响应结果。

Spring MVC-学习笔记(1)认识spring mvc的更多相关文章

  1. Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目

    Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...

  2. .NET MVC 学习笔记(三)— MVC 数据显示

    . NET MVC 学习笔记(三)—— MVC 数据显示 在目前做的项目中,用的最多的数据展示控件就是table展示(说不是的请走开,不是一路人),以下详细阐述下table的使用方法. 先看效果: 上 ...

  3. ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现

    ASP.NET MVC 学习笔记-2.Razor语法   1.         表达式 表达式必须跟在“@”符号之后, 2.         代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...

  4. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  5. Spring Framework 学习笔记——核心技术之Spring IOC

    Spring Framework 官网文档学习笔记--核心技术之Spring IOC 官方文档 spring-framework-5.3.9 1. Spring Framework 核心技术 1.1 ...

  6. ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础

    ASP.NET MVC在原来ASP.NET的基础上抛弃了基于页面的架构风格,使用了全新的MVC(模型-视图-控制器)架构的一种技术. 目前,它和ASP.NET都共存在.NET Framework之上. ...

  7. 前端MVC学习笔记(一)——MVC概要与angular概要、模板与数据绑定

    一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.AngularJS是框架而jQuery则是库. 1.2. ...

  8. 【ASP.NET MVC 学习笔记】- 06 在MVC中使用Ninject

    本文参考:http://www.cnblogs.com/willick/p/3299077.html 1.在ASP.NET MVC中一个客户端请求是在特定的Controller的Action中处理的. ...

  9. 【ASP.NET MVC 学习笔记】- 01 理解MVC模式

    本文参考:http://www.cnblogs.com/willick/p/3195560.html 1.MVC模式是软件系统的一种架构模式,它将软件分为三大模块: 模型(Model):封装业务逻辑以 ...

  10. ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用

    Ajax的全名为:Asynchronous Javascript And XML(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术.Ajax技术首先向Web服务器发送 ...

随机推荐

  1. Stylus-富有表现力的、动态的、健壮的CSS

    今天总结一下Stylus记一些常用的也是最基本的用法 一.  选择器 Stylus是基于缩进的这让我们可以更快捷的编写css比如 body { margin:; paddind:; font-size ...

  2. Comet OJ - 模拟赛 #2 Day1 比赛总结

    比赛情况 40 + 60 + 0 = 100pts 哎,T1做错了,没有对拍.如果发现错误 \(=>\) 改正 \(=>\) 40->100pts,160pts \(=>\) ...

  3. php内置函数分析之array_chunk()

    PHP_FUNCTION(array_chunk) { int argc = ZEND_NUM_ARGS(), num_in; zend_long size, current = ; zend_str ...

  4. Python内置函数之filter map reduce

    Python内置函数之filter map reduce 2013-06-04 Posted by yeho Python内置了一些非常有趣.有用的函数,如:filter.map.reduce,都是对 ...

  5. LTM_本地流量管理(二)

    会话保持 首先要熟悉两个概念:连接connect和会话session 连接:在四层负载均衡中,连接是最小元素. l  源端口:客户端随机产生的端口. l  源地址:发起请求的源IP地址. l  目的端 ...

  6. webstorm 点击右上角运行run 启动vue项目

    点击右上角框 -> 编辑结构 点击加号 新增一个npm项目 前提:node环境已经安装完成,npm包管理器 1.进行定位到项目的路径2.安装依赖包,npm install3.启动服务,npm r ...

  7. 举个例子去理解vuex(状态管理),通俗理解vuex原理,通过vue例子类比

    通俗理解vuex原理---通过vue例子类比   本文主要通过简单的理解来解释下vuex的基本流程,而这也是vuex难点之一. 首先我们先了解下vuex的作用vuex其实是集中的数据管理仓库,相当于数 ...

  8. D. Shortest Cycle

    D. Shortest Cycle A[i]&A[j]!=0连边, 求图中最小环 N>128 时必有3环 其他暴力跑 folyd最小环 #include<bits/stdc++.h ...

  9. testlink用例转换工具2018.12版

    首先说明一点,网上有很多资料,但真正可用的很少:在本人经过百度后,发现其实很多案例会因为各种原因而无法最终实现. Testlink用例转换工具,可以大致分为3种工具: 1)EX-Converter由第 ...

  10. .NET COM+级别的事务Transaction实现

    参考: https://docs.microsoft.com/zh-cn/dotnet/api/system.enterpriseservices.contextutil?view=netframew ...