SpringMVC笔记系列(2)——@RequestMapping请求映射物理视图解析

说明:本文章的内容转载至:https://my.oschina.net/happyBKs/blog/411547
如有侵权的地方,请联系本人,本人将会立即删除!

上一篇的例子介绍了如何构建一个springMVC的请求映射的方法。但是@RequestMapping不仅可以修饰控制器类的方法,还可以可以修饰控制器类本身,它对请求的影响是:请求url的分段。

还是看一个例子吧。

假如现在有一个请求页面index2.jsp。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>RequestMapping Test</title>
</head>
<body>
<a href="c1/m1">c1/m1</a><br/>
<a href="c1/m2">c1/m2</a><br/>
<a href="c1/m3">c1/m3</a><br/>
</body>
</html>

另有3个响应页面robot_baymax1.jsp、robot_baymax2.jsp、robot_baymax3.jsp在webapp的views文件夹下。

这里写图片描述

现在我们要做的就是用springMVC的DispatcherServlet来处理 请求页面的请求 到 响应页面的映射。

关于映射的详细过程请看上一篇。

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"
    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-4.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">

<!-- 配置自动扫描的包 -->
<context:component-scan base-package="com.happyBKs.springmvc.handlers"></context:component-scan>

<!-- 配置视图解析器:如何把handler方法 的返回值 解析为 实际的物理视图-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>


</beans>

重点来了,我重新构造一个控制器类,来处理这种多段的请求。

定义控制器类RobotHandler。

@RequestMapping除了修饰方法,还可以来修饰类

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

方法定义处:进一步提供细分的映射信息。相对于类定义处的URL。若类定义处没有标注@RequestMapping,则方法处的@RequestMapping直接对应于web应用的根目录。

这里做个罗列,可能看得更清楚:

请求:(网站域名+web应用名)web应用根目录+类定义处@RequestMapping+方法定义处@RequestMapping

映射到
物理视图:webapp根目录+springmvc.xml配置的prefix+ 控制器方法的返回值 +springmvc.xml配置的sufix

这里的话是
请求:http://localhost:8080/mymvc/c1/m1
映射到
物理视图webapp/views/robot_baymax1.jsp就通过控制器上的

映射过程是:DispatchServlet在截获请求后,@RequestMapping提供额映射信息确认请求所对应对的处理方法。

package com.happyBKs.springmvc.handlers;

import java.lang.annotation.Retention;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/*
1.@RequestMapping除了修饰方法,还可以来修饰类
类定义处:提供初步的请求映射信息。相对于web应用的根目录
方法定义处:进一步提供细分的映射信息。相对于类定义处的URL。若类定义处没有标注@RequestMapping,则方法处的@RequestMapping直接对应于web应用的根目录

请求:(网站域名+web应用名)web应用根目录+类定义处@RequestMapping+方法定义处@RequestMapping
映射到
物理视图:webapp根目录+springmvc.xml配置的prefix+ 控制器方法的返回值 +springmvc.xml配置的sufix


这里的话是
请求:http://localhost:8080/mymvc/c1/m1
映射到
物理视图webapp/views/robot_baymax1.jsp就通过控制器上的


映射过程是:DispatchServlet在截获请求后,@RequestMapping提供额映射信息确认请求所对应对的处理方法。
*/
@RequestMapping("/c1")
@Controller
public class RobotHandler {

    @RequestMapping("/m1")
    String handle1()
    {
        return "robot_baymax1";
    }

    @RequestMapping("/m2")
    String handle2()
    {
        return "robot_baymax2";
    }


    @RequestMapping("/m3")
    String handle3()
    {
        return "robot_baymax3";
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值