目录
七、RequestMapping_PathVariable注解
八、RequestMapping_HiddenHttpMethodFilter过滤器
二十二、ModelAttribute注解修饰POJO类型的入参
一、概述
1、
2、
二、HelloWorld
步骤1:web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 配置 DispatcherServlet -->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置 DispatcherServlet 的一个初始化参数: 配置 SpringMVC 配置文件的位置和名称 -->
<!--
实际上也可以不通过 contextConfigLocation 来配置 SpringMVC 的配置文件, 而使用默认的.
默认的配置文件为: /WEB-INF/<servlet-name>-servlet.xml
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--servlet是在当前web应用被加载的时候就被创建,而不是等第一次请求的时候被创建-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern><!--servlet可以应答所以请求-->
</servlet-mapping>
</web-app>
步骤2: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.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--配置自动扫描的包-->
<context:component-scan base-package="com.nanjing.springmvc"></context:component-scan>
<!--配置视图解析器:如何把handler 方法返回值解析为实际的物理视图-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
步骤3:index.jsp文件
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<a href="helloworld">Hello World</a>
</body>
</html>
步骤4:HelloWorld.java文件
@Controller//控制器
public class HelloWorld {
/**
* 1、使用@RequestMapping 注解来映射请求的URL
* 2、返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewResolver视图解析器,会做如下的解析:
* 通过 prefix + returnVal + 后缀 这样的方式得到实际的物理视图,然后做转发操作
*
* /WEB-INF/views/success.jsp
* @return
*/
@RequestMapping("/helloworld")
public String hello(){
System.out.println("hello world");
return "success";
}
}
步骤5:success.jsp文件
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<p>转发成功</p>
</body>
</html>
三、RequestMapping_修饰类
步骤1:index.jsp文件
<a href="springmvc/testRequestMapping">Test RequestMapping</a>
步骤2:SpringMVCTest.java文件
@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest {
private static final String SUCCESS = "success";
/**
* 1、@RequestMapping 除了修饰方法,还可以修饰类
* @return
*/
@RequestMapping("/testRequestMapping")
public String testRequestMapping(){
System.out.println("testRequestMapping");
return SUCCESS;
}
}
四、RequestMapping_请求方式
步骤1:
<form action="springmvc/testMethod" method="post">
<input type="submit" value="submit"/>
</form>
<a href="springmvc/testMethod">Test Method</a>
步骤2:
/**
* 常用:使用method 属性来指定请求方式
* @return
*/
@RequestMapping(value = "/testMethod",method = RequestMethod.POST)
public String testMethod(){
System.out.println("testMethod");
return SUCCESS;
}
五、RequestMapping_请求参数&请求头
步骤1:
<a href="springmvc/testParamsAndHeaders?username=nanjing&age=10">Test ParamsAndHeaders</a>
步骤2:
/**
* 了解:可以使用params 和 headers 来更加精确的映射请求。params 和 headers 支持简单的表达式
* @return
*/
@RequestMapping(value = "testParamsAndHeaders",params = {"username","age!=10"},headers = {"Accept-Language=zh-CN,zh;q=0.9"})
public String testParamsAndHeaders(){
System.out.println("testParamsAndHeaders");
return SUCCESS;
}
六、RequestMapping_Ant路径
步骤1:
<a href="springmvc/testAntPath/nanjing/abc">Test AntPath</a>
步骤2:
@RequestMapping("/testAntPath/*/abc")
public String testAntPath(){
System.out.println("testAntPath");
return SUCCESS;
}
七、RequestMapping_PathVariable注解
步骤1:
<a href="springmvc/testPathVariable/2021">Test PathVariable</a>
步骤2:
/**
* @PathVariable 可以来映射 URL 中的占位符到目标方法的参数中
* @param id
* @return
*/
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id") Integer id){
System.out.println("testPathVariable: "+ id);
return SUCCESS;
}
八、RequestMapping_HiddenHttpMethodFilter过滤器
1、
2、
步骤1:web.xml文件
<!--配置 org.springframework.web.filter.HiddenHttpMethodFilter可以把post请求转为delete或put请求-->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern> <!--过滤所有请求-->
</filter-mapping>
步骤2:
<form action="springmvc/testRest/1" method="post">
<inp