首先在配置文件中配置一个视图解析器,视图解析器规定了视图解析的规则,即controller处理请求之后,返回给DispatcheServlet一个字符串(也可能是ModelAndView之类的),而DispatcheServlet又将字符串传递给视图解析器,不同的视图解析器会作出不同的处理,从而映射到不同的视图上,并进行渲染:

<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--配置自动扫描的包-->
<context:component-scan base-package="com.seven.demos"></context:component-scan> <!--配置视图解析器,将视图逻辑名解析为/WEB-INF/pages/<viewName>.jsp-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>

处理器类如下:

package com.seven.demos;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; /**
* Created by hu on 2016/4/2.
*/
/*
* 创建处理器类
* */
@Controller
public class Hello {
@RequestMapping("/login")
public String hello(){
System.out.println("enter the hello method...");
return "hu";
}
}

运行项目,那么在浏览器中输入"http://localhost:8082/webapp/login",就会访问/WEB-INF/pages/hu.jsp这个文件。

由上面控制器的代码可以看出,SpringMvc使用@RequestMapping注解为控制器指定可以处理哪些URL请求,这个注解在类定义处和方法定义处都可标注,

-在类处定义:提供初步的请求映射信息,相对于WEB应用的根目录。

-在方法处定义:提供进一步的细分信息。相对于类定义处的URL,若类定义处未标注@RequestMapping,则方法处标记的URL相对于WEB应用的根目录。

DispatcheServlet截获请求之后,就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。

@RequestMapping除了可以使用请求URL映射请求外,还可以使用请求方法,请求参数及请求头映射请求。@RequestMapping的value,method,params及heads分别表示请求URL,请求方法,请求参数以及请求头的映射条件,它们之间是与的关系,联合使用多个条件可以让请求映射更加精确,具体用法如下:

package com.seven.demos;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; /**
* Created by hu on 2016/4/2.
*/
@RequestMapping("/SpringMvc")
@Controller
public class SpringMvcTest {
private final String SUCCESS="success"; // @RequestMapping还支持Ant风格的URL
// /user/*/createUser 匹配如: /user/aa/createUser、 /user/bb/createUser
// /user/**/createUser 匹配如: /user/aa/bb/createUser、/user/createUser
// /user/createUser?? 匹配如:/user/createUseraa、/user/createUserbb //test1()处理的是来自http://localhost:8082/webapp/SpringMvc/delete的POST请求,并且带有一个名为userId的参数
//如果带有多个参数,可以使用{"param1","param2"},当然也支持简单的表达式,{"param1=value1","param2"},即请求中
//必须包含两个参数,param1,param2,并且param1的值必须为value1
@RequestMapping(value="/delete",method = RequestMethod.POST,params = "userId")
public String test1(){
return "test1";
}
/*
* @PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中.
* */
@RequestMapping("/delete/{id}")
public String delete(@PathVariable("id")Integer id){
return SUCCESS;
} }

  

SpringMvc项目分析的更多相关文章

  1. SpringMVC+MyBatis项目分析与开发实例

    一.用到的Jar包 <!-- ************ Spring测试包 ************* --><artifactId>spring-test</artif ...

  2. Spring+MyBatis+SpringMvc整合Demo

    客户关系管理系统demo 项目分析 该demo使用技术及环境:ssm+maven+bootstrap+jsp+mysql+idea+jdk1.8 需求:客户管理,实现客户列表分页显示如下图 项目开始 ...

  3. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

  4. Springmvc数据校验

    步骤一:导入四个jar包 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...

  5. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  6. 【SSM框架】Spring + Springmvc + Mybatis 基本框架搭建集成教程

    本文将讲解SSM框架的基本搭建集成,并有一个简单demo案例 说明:1.本文暂未使用maven集成,jar包需要手动导入. 2.本文为基础教程,大神切勿见笑. 3.如果对您学习有帮助,欢迎各种转载,注 ...

  7. 快速搭建springmvc+spring data jpa工程

    一.前言 这里简单讲述一下如何快速使用springmvc和spring data jpa搭建后台开发工程,并提供了一个简单的demo作为参考. 二.创建maven工程 http://www.cnblo ...

  8. redis集成到Springmvc中及使用实例

    redis是现在主流的缓存工具了,因为使用简单.高效且对服务器要求较小,用于大数据量下的缓存 spring也提供了对redis的支持: org.springframework.data.redis.c ...

  9. 流程开发Activiti 与SpringMVC整合实例

    流程(Activiti) 流程是完成一系列有序动作的概述.每一个节点动作的结果将对后面的具体操作步骤产生影响.信息化系统中流程的功能完全等同于纸上办公的层级审批,尤其在oa系统中各类电子流提现较为明显 ...

随机推荐

  1. MVC HTML辅助类常用方法记录

    (1)@Html.DisplayNameFor(model => model.Title)是显示列名, (2)@Html.DisplayFor(modelItem => item.Titl ...

  2. github中国版本coding.net 的部署和使用

    1.在coding.net注册帐号. 2.安装github,自己百度github软件然后安装. 3.打开coding.net 输入帐号后新建项目 创建项目 创建后,创建ssh公钥,如果不创建的话,在每 ...

  3. Bundle文件的创建和使用(一)

    经常会出现某个需求:将自己的模块或者开放类,封装成静态库给其他人提供方便的调用. 但是当你的模块中需要大量使用xib,图片,音频或者其他资源文件时,无法添加至静态库.这个时候就需要将一些资源文件封装至 ...

  4. Wordpress引入多说插件

    多说为Wordpress制作了插件,按照以下步骤,快速让你的网站迅速使用多说! 1.下载插件:https://wordpress.org/plugins/duoshuo/ 或在WordPress后台“ ...

  5. Android Lint简介(转)

    转载自原文:http://blog.csdn.net/hudashi/article/details/8333349,感谢原作者. 英文原文:http://tools.android.com/tips ...

  6. Subset---poj3977(折半枚举+二分查找)

    题目链接:http://poj.org/problem?id=3977 给你n个数,找到一个子集,使得这个子集的和的绝对值是最小的,如果有多种情况,输出子集个数最少的: n<=35,|a[i]| ...

  7. Java学习-031-JSON 之五 -- 特定数据获取(JSONObject满足特定键值)

    前面几篇博文分别讲述了 JSON 的 概要知识.简单数据获取.封装cssSelector数据获取方法.JSONObject 是否包含 key_value,请自行阅读相关博文. 在日常的接口测试脚本编写 ...

  8. sell- 获取邮箱的后缀

    1. public static void main(String[] args) { System.out.println(getEmailSuffix("jim_chen28270@16 ...

  9. iOS:FFmpeg视频播放和直播框架

    视频直播和播放转码器框架 介绍: FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证. 它提供了录制.转换以及流化音视频的完整解决方案.它 ...

  10. 图像分割之(五)活动轮廓模型之Snake模型简介

    在"图像分割之(一)概述"中咱们简单了解了目前主流的图像分割方法.下面咱们主要学习下基于能量泛函的分割方法.这里学习下Snake模型简单的知识,Level Set(水平集)模型会在 ...