SpringMVC RequestMapping 详解
RequestMapping这个注解在SpringMVC扮演着非常重要的角色,可以说是随处可见。它的知识点很简单。今天我们就一起学习SpringMVC的RequestMapping这个注解。文章主要分为两个部分:RequestMapping 基础用法和RequestMapping 提升用法。
准备工作
pom.xml 这里是需要的jar包和相关的配置。这里设置了maven-compiler-plugin的java版本为1.7,避免打包出错和中文乱码的问题。
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.springmvc
springmvc
0.0.1-SNAPSHOT
war
maven-compiler-plugin
1.7
1.7
UTF-8
4.1.3.RELEASE
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-core
${spring.version}
org.springframework
spring-web
${spring.version}
javax.servlet
javax.servlet-api
4.0.0
provided
web.xml 设置字符拦截器,避免中文乱码
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">
springmvc
dispatcher
org.springframework.web.servlet.DispatcherServlet
1
dispatcher
/
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
encodingFilter
/*
SpringMVC的配置文件(dispatcher-servlet.xml)没有变,这里就不再贴出来了。可以去上一章找
RequestMapping 基础用法
核心类 ApiStudyController,这是重点需要看的java文件。里面主要介绍了@RequestMapping 的基础用法。
你需要重点学习的有: 获取请求参数值的@RequestParam注解;通过占位符获取参数值的@PathVariable注解;指定请求方式的method属性;用于将数据存储到作用域中返回给前端的Map,Model和ModelMap参数;以及如何使用POJO对象作为方法的参数。
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
@RequestMapping("apiStudy")
public class ApiStudyController {
private static final String SUCCESS = "apistudy";
private static final String RESULT_KEY = "result";
/**
* 常用知识点:在类或者方法上使用 @RequestMapping 注解
* 若没有修饰类,则访问路径是: http://ip:port/项目名/方法的@RequestMapping值
* 若类有修饰类,则访问路径是: http://ip:port/项目名/类的@RequestMapping值/方法的@RequestMapping值
*/
/**
* 方法中用map作为参数,可以将数据存储到request作用域中,放回到页面上。
* 同样用法的有 Model 类型 和 ModelMap 类型
*/
@RequestMapping("/testMapResult")
public String testMapResult(Map map, Model model, ModelMap modelMap){
String apiDocs = "Map,Model,ModelMap (常用方法) : 在方法中添加Map的参数,可以将数据放到request 作用域中!";
map.put(RESULT_KEY, apiDocs);
model.addAttribute("model", "Model");
modelMap.addAttribute(