首页 > 其他分享 >SpringMVC 02: SpringMVC响应get和post请求 + 5种获取前端数据的方式

SpringMVC 02: SpringMVC响应get和post请求 + 5种获取前端数据的方式

时间:2022-08-31 21:59:29浏览次数:59  
标签:02 RequestMapping get SpringMVC 获取 String jsp 请求

响应get和post请求

  • 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>
  • mainPost.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>mainPost.jsp</title>
</head>
<body>
<h2>main......page.....post......</h2>
</body>
</html>
  • 新增控制器:ReqAction,在@RequestMapping注解后可以跟两个参数
  • value参数负责对应请求路径,只有正确请求路径下的目标action方法,才可能被调用
  • method参数负责指定该action方法负责响应的请求类型
  • 仅是请求路径对应上并不可以调用action方法,必须请求路径和请求方式都对上,相应的action方法才会被调用
package com.example.controller;

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

@Controller
public 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";
    }
}
  • webapp/index.jsp如下,以form表单的形式,分别发送get和post请求
<%@ 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)如下

image

  • 表单发送post请求时,网站首页(left),请求到的页面(mild),控制台输出(right)如下

image

5种获取前端数据的方式

  • 1.直接注入获取
  • 2.实体类封装获取
  • 3.动态占位符获取
  • 4.@RequestParam注解方式获取
  • 5.手工获取数据
  • 在webapp/admin目录下新建dataSubmit.jsp,作为5种请求方式的响应结果页面
  • dataSubmit.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>dataSubmit.jsp</title>
</head>
<body>
<h2>dataSubmit.........page</h2>
</body>
</html>
  • webapp/index.jsp如下,是网站的首页,包含5种请求方式的前端显示
<%@ 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>
  • 新增SpringMVC控制器:DataSubmit,含有对前端5种请求方式的5种响应处理
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";
    }
}
  • 部署tomcat,并启动测试
  • 前端页面,一次输入数据,提交测试即可

image

  • 测试结果不再赘述

标签:02,RequestMapping,get,SpringMVC,获取,String,jsp,请求
From: https://www.cnblogs.com/nefu-wangxun/p/16644632.html

相关文章

  • ac802 区间和
    注意>>的运算顺序在加减之后#include<bits/stdc++.h>usingnamespacestd;constintN=300010;//intn,m;inta[N];//坐标插入的值in......
  • 2022-08-30 第四组 王佳齐 学习笔记
    JavaWEB路径匹配/hello.do拓展名匹配*.do默认匹配,缺省匹配/使用路径匹配:必须有/,如果使用的是扩展名匹配:必须不能有/,路径匹配和扩展名无法同时设置面试题:/和/的区别......
  • 2022-08-31 第四组 王佳齐 学习笔记
    <c:forEach begin="1" end="10" step="2" var="i" varStatus="stat">        \({i} ----- \){stat.first}     </c:forEach>刘夜壶  21:41:27JS......
  • 2022-08-31 第二组刘禹彤 学习笔记
    打卡42天  ###学习内容JSP简介JSP脚本片段---<%%>-------用于在JSP页面写JAVA代码注意JSP脚本片段中只能出现java代码,不能出现html元素,在访问JSP时,JSP引擎翻......
  • QLUACM2022年上学期训练赛-1
    QLUACM2022年上学期训练赛-1 该比赛就是CodeforcesRound#538(Div.2)题解可以从网上找相关题解  ......
  • 2022-8-31第一组孙乃宇JSP
    JSPJSP概念:JavaServerPages,Java服务端页面 一种动态的网页技术,其中既可以定义HTML、JS、CSS等静态内容,还可以定义Java代码的动态内容·JSP=HTML+Java JSP的......
  • 【2022-08-31】Django框架(二)
    Django框架(二)静态文件及相关配置1.静态文件 html页面上使用的不经常改变的资源1.第三方框架文件,如Bootstrap框架2.css样式文件3.网站js文......
  • 2022-08-30 第五组 赖哲栋 学习笔记
    Servlet除了form表单之外都是get请求HttpServletRequest---req——请求所有请求的操作都用req对象来处理当有请求来的时候,req就被实例化HttpServletResponse---res......
  • ConcurrentHashMap中的get和put源码分析
    get分析publicVget(Objectkey){//tab:指向数组Node<K,V>[]tab;//e:指向key对应的Node节点、p:Node<K,V>e,p;//n:数组长度、eh:key对应节点......
  • SpringMVC
    感谢!!!......