SpringMVC中使用@RequestMapping注解完成对get请求和post请求的响应
项目结构和配置文件与SpringMVC博客集中的"SpringMVC 01"保持一致
在webapp/admin目录下新建2个jsp文件,这两个jsp文件分别作为相应请求的响应页面
mainGet.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>mainGet.jsp</title></head><body><h2>main......page.....get......</h2></body></html><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>mainPost.jsp</title></head><body><h2>main......page.....post......</h2></body></html>package com.example.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;@Controllerpublic class ReqAction { @RequestMapping(value = "/req", method = RequestMethod.GET) public String reqGet(){ System.out.println("获取到get请求,服务器被访问......"); return "mainGet"; } @RequestMapping(value = "/req", method = RequestMethod.POST) public String reqPost(){ System.out.println("获取到post请求,服务器被访问......"); return "mainPost"; }}<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>index.jsp</title></head><body><h2>分别用get和post方式访问服务器</h2><form action="${pageContext.request.contextPath}/req.action" method="get/post"> <input type="submit" value="get/post方式提交"></form></body></html>部署并启动tomcat测试,第一次用表单发送get请求,第二次用表单发送post请求
表单发送get请求时,网站首页(left),请求到的页面(mild),控制台输出(right)如下


<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>dataSubmit.jsp</title></head><body><h2>dataSubmit.........page</h2></body></html><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>index.jsp</title></head><body> <h2>SpringMVC中获取前端提交数据的5种方式</h2><hr> <h2>方式1:单个数据的获取方式</h2><form action="${pageContext.request.contextPath}/dataSubmit/submit01.action" method="get"> 姓名:<input type="text" name="name"><br> 年龄:<input type="text" name="age"><br> <input type="submit" value="提交"></form> <h2>方式2:封装成实体类进行获取</h2><form action="${pageContext.request.contextPath}/dataSubmit/submit02.action" method="get"> 姓名:<input type="text" name="name"><br> 年龄:<input type="text" name="age"><br> <input type="submit" value="提交"></form> <h2>方式3:动态占位符获取提交的数据(只可以用在超链接或地址栏)</h2><!-- 携带的数据放在.action之前,用斜杠分隔开--><a href="${pageContext.request.contextPath}/dataSubmit/submit03/xun/22.action">动态占位符获取提交数据</a> <h2>方式4:参数名称不一致时接收数据</h2><form action="${pageContext.request.contextPath}/dataSubmit/submit04.action" method="get"> 姓名:<input type="text" name="name"><br> 年龄:<input type="text" name="age"><br> <input type="submit" value="提交"></form> <h2>方式5:手工获取前端提交的数据</h2><form action="${pageContext.request.contextPath}/dataSubmit/submit05.action" method="get"> 姓名:<input type="text" name="name"><br> 年龄:<input type="text" name="age"><br> <input type="submit" value="提交"></form></body></html>package com.example.controller;import com.example.pojo.User;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.RequestParam;import javax.servlet.http.HttpServletRequest;@Controller@RequestMapping("/dataSubmit")public class DataSubmit { //直接注入获取 @RequestMapping("/submit01") public String dataSubmit01(String name, int age){//前端提交的数据,通过SpringMVC框架依次分别注入到目标方法的参数中,且自动完成了类型转换 System.out.println("姓名: " + name + " 年龄: " + age); return "dataSubmit"; } //封装成实体类来获取 @RequestMapping("/submit02") public String dataSubmit02(User user){//SpringMVC自动创建实体类对象,并将前端提交的数据,注入到User实体类中的对应属性中 System.out.println(user); return "dataSubmit"; } //动态占位符获取数据 @RequestMapping("/submit03/{name}/{age}")//目标路径后用大括号接住前端随着地址携带来的数据,括号用斜杠分割开,括号内名称和@PathVariable后面的注解名一致,将携带的数据注入给目标方法中的对应变量 public String dataSubmit03( @PathVariable("name") String name, @PathVariable("age") int age){ System.out.println("姓名: " + name + " 年龄: " + age); return "dataSubmit"; } //参数名称不一致时获取数据 @RequestMapping("/submit04") public String dataSubmit04( @RequestParam("name")//若前端数据名和后端变量名不一致,则可以将@RequestParam注解名和前端传来的数据名称保持一致,这样将前端数据传给注解标识的变量 String uname, @RequestParam("age") int uage){ System.out.println("姓名: " + uname + " 年龄: " + uage); return "dataSubmit"; } //手工获取前端提交的数据 @RequestMapping("/submit05") public String dataSubmit05(HttpServletRequest request){//就是传统servlet开发时获取前端数据的方式,只不过这里HttpServletRequest实例对象由SpringMVC框架自动创建 String name = request.getParameter("name"); int age = Integer.parseInt(request.getParameter("age")); System.out.println("姓名: " + name + " 年龄: " + age); return "dataSubmit"; }}