SpringMVC之@ModelAttribute

来源:互联网 发布:域名污染如何解决 编辑:程序博客网 时间:2024/06/08 05:42

@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,那么前后台就不会有乱码的问题了。

原创粉丝点击