SpringMVC之@ModelAttribute

@RequestMapping 设置请求路径
@RequestParam 来接收前台中同名的键值对参数
@PathVariable 映射URL中绑定的占位符

@ModelAttribute可以类似于pojo接收多个参数,用Javabean对象存储,再和Model相配合,输出到前台。

@Controller
@RequestMapping("/test")
public class TestController {
    private static final Log logger = LogFactory.getLog(TestController.class);

    //url:http://localhost:8080/HelloWorld/test/modelAttForm
    @RequestMapping(value="/{formName}")
    public String loginForm(@PathVariable String formName){
        //动态跳转页面
        return formName;
    }
    /**
     * 测试modelAttForm.jsp 中的表单提交,直接用@ModelAttribute User user接收了数据(类似于pojo)
     * @param user
     * @param model
     * @return
     */
    @RequestMapping(value="/login",method=RequestMethod.POST)
    public String login(@ModelAttribute User user,Model model) {
       logger.info(user);
       user.setUsername("ModelAttribute测试");
       System.out.println(user);
       model.addAttribute("user", user);
       return "result";
    }
    //@RequestParam 来接收前台中loginname、password参数
    @RequestMapping(value="/login2",method=RequestMethod.POST)
    public String login2(@RequestParam("loginname") String loginname,
            @RequestParam("password") String password,Model model) {
       logger.info("login2 POST方法被调用...");
       User user = new User();
       user.setLoginname(loginname);
       user.setPassword(password);
       model.addAttribute("user", user);
       return "result";
    }
    //pojo接收参数
    @RequestMapping(value="/login3",method=RequestMethod.POST)
    public String login3(User user,Model model) {
       logger.info(user);
       user.setUsername("pojp测试");
       System.out.println(user);
       model.addAttribute("user", user);
       return "result";
    }

}
public class User {

  private String loginname; 
  private String password;
  private String username;

    public String getLoginname() {
        return loginname;
    }

    public void setLoginname(String loginname) {
        this.loginname = loginname;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public String toString() {
        return "User [loginname=" + loginname + ", password=" + password + ", username=" + username + "]";
    }


}

modelAttForm.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页面</title>
</head>
<body>
<h4>ModelAttribute测试</h4>
<form action="login" method="post">
    loginname: <input type="text" name="loginname"><br>
    password: <input type="password" name="password"><br>
    <input type="submit" value="submit">
</form>
<hr>

<h4>RequestParam测试</h4>
<form action="login2" method="post">
    loginname: <input type="text" name="loginname"><br>
    password: <input type="password" name="password"><br>
    <input type="submit" value="submit">
</form>
<hr>

<h4>pojo测试</h4>
<form action="login3" method="post">
    loginname: <input type="text" name="loginname"><br>
    password: <input type="password" name="password"><br>
    <input type="submit" value="submit">
</form>
</body>
</html>

result.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>welcome</title>

</head>
<body>
<h3>${requestScope.user}</h3>

<br><br>
登录名:${requestScope.user.loginname }<br>
密码:${requestScope.user.password }<br>
用户姓名:${requestScope.user.username }<br>
</body>
</html>

启动服务器后,输入地址http://localhost:8080/HelloWorld/test/modelAttForm
这里写图片描述

测试结果依次为:(跳转页面和控制台输出)
这里写图片描述

这里写图片描述

这里写图片描述

web.xml配置springmvc 的DispatcherServlet
springmvc中配置自动扫描包和视图解析器,这里就不一一列出了。在web.xml中配置了编码的filter,那么前后台就不会有乱码的问题了。

猜你喜欢

转载自blog.csdn.net/qq_38023253/article/details/77967324
今日推荐