SpringMvc之值(View到Controller)的传递-yellowcong
  Hlmk1dDVrQDy 2023年11月02日 58 0


View到Controller值的传递方法大概有四种,一种是通过
1、@RequestParam绑定单个请求参数值
2、@PathVariable绑定URI模板变量值
3、@ModelAttribute注入对象
4、获取 到HttpServletRequest对象,然后获取数据类容

基于@RequestParam的方式

1、不带@RequestParam注解的方式

这种直接注入参数的方式中,没有任何的注解,只是默认走的还是RequestParam,都是RequestParam的默认值

/**
 * 这个方式是通过原始get请求 方式
 * http://127.0.0.1/day11_13/demo/login2?username=yellowcong&password=test
 * @param username
 * @param password
 * @return
 */
@RequestMapping(value= "/login",method=RequestMethod.GET)
public ModelAndView login(String username,String password){
    ModelAndView view = new ModelAndView("demo/login");
    view.addObject("username", username);
    view.addObject("password", password);
    return view; 
}

SpringMvc之值(View到Controller)的传递-yellowcong_其他

2、直接注入User对象

直接注入User对象,这种方式也是走的是RequestParam

/**
 * 注入对象的方式
 * http://127.0.0.1/day11_13/demo/login2?username=yellowcong&password=test
 * @param user
 * @return
 */
@RequestMapping(value= "/login2",method=RequestMethod.GET)
public ModelAndView login2(User user){
    ModelAndView view = new ModelAndView("demo/login");
    view.addObject("username", user.getUsername());
    view.addObject("password", user.getPassword());
    return view; 
}

SpringMvc之值(View到Controller)的传递-yellowcong_其他_02

3、使用注解的方式

使用注解的方式中,需要了解@RequestParam注解中,各个参数的特点

/**
     * @RequestParam 可以用来解决参数传递
     * name 传递过来的字段名称(前台字段和后天字段 不一样,可以用这个解决)
     * required 是否是必须的
     * defaultValue 设置默认值
     * @param username
     * @param password
     * @return
     */
    @RequestMapping(value= "/login4",method=RequestMethod.GET)
    public ModelAndView login4(
            @RequestParam(name="name",required=false,defaultValue="dou")String username,
            @RequestParam(name="pass",required=false,defaultValue="bi")String password){

        ModelAndView view = new ModelAndView("demo/login");
        view.addObject("username", username);
        view.addObject("password", password);
        return view; 
    }

走默认值

SpringMvc之值(View到Controller)的传递-yellowcong_html_03

传递参数,这个参数的字段名,和后天的字段名称不一样,这事通过RequestMapping 来解决的

SpringMvc之值(View到Controller)的传递-yellowcong_User_04

基于@PathVariable的方式

这种方式是REST的风格的,现在用得是比较的多

/**
     * url的请求方式变成了(这种请求的方式现在用得比较的多)
     * http://127.0.0.1/day11_13/demo/login3/yellowcong/doubi
     * @param username
     * @param pathword
     * @return
     */
    @RequestMapping(value= "/login3/{username}/{password}",method=RequestMethod.GET)
    public ModelAndView login3(@PathVariable String username,@PathVariable String password){
        ModelAndView view = new ModelAndView("demo/login");
        view.addObject("username", username);
        view.addObject("password", password);
        return view; 
    }

SpringMvc之值(View到Controller)的传递-yellowcong_html_05

基于@ModelAttribute 的方式

1、直接基于GET请求

/**
     * 注入对象的方式
     * http://127.0.0.1/day11_13/demo/login5?user.username=yellowcong&user.password=test
     * @param user
     * @return
     */
    @RequestMapping(value= "/login5",method=RequestMethod.GET)
    public ModelAndView login5(@ModelAttribute("user") User user){
        ModelAndView view = new ModelAndView("demo/login");
        view.addObject("username", user.getUsername());
        view.addObject("password", user.getPassword());
        return view; 
    }

这个访问,感觉和RequestParam的方式有些类似,感觉都是相同的方式

SpringMvc之值(View到Controller)的传递-yellowcong_User_06

2、POST提交方式(表单提交)

这中方式需要解决Springmvc的标签

/**
     * 注入对象的方式
     * @param user
     * @return
     */
    @RequestMapping(value= "/login6",method=RequestMethod.GET)
    public ModelAndView login6(@ModelAttribute("user") User user){
        ModelAndView view = new ModelAndView("demo/login");
        view.addObject("username", user.getUsername());
        view.addObject("password", user.getPassword());
        return view; 
    }

前台代码
我们可以通过EL表达式来获取到 request中的数据${user.username}

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf"%>
<html>
<head>
<title>xx文章</title>
</head>
<body>
<!-- ${user.username} 这个访问了  用户model里面的属性 -->
<h2>${user.username} --${username} -${password}</h2>

<sf:form method="get" modelAttribute="user" action="${pageContext.servletContext.contextPath}/demo/login6">
    用户名:<sf:input path="username"/><sf:errors path="username"></sf:errors><br/>
    别名:<sf:input path="password"/><sf:errors path="password"/><br/>
    <input type="submit" value="提交用户"/> 
</sf:form>

</body>
</html>

SpringMvc之值(View到Controller)的传递-yellowcong_html_07

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
Hlmk1dDVrQDy
最新推荐 更多

2024-05-31