0%

springmvc注解和参数绑定

参考上一篇文章:
springmvc01环境配置

注解:

  • 在配置文件springmvc.xml里面配置要扫描的文件夹

    1
    <context:component-scan base-package="cn.k2502.controller"></context:component-scan>
  • 在该包下面创建一个类,添加注解@Controller

    1
    2
    @Controller
    public class Login2Controller {}
  • 在该类的方法上添加注解@RequestMapping**_(value=“login1”)_**

    1
    2
    3
    4
    5
    @RequestMapping(value="login1")
    public ModelAndView login1(){
    System.out.println("我进入请求了");
    return null;
    }

参数绑定:

上面的示范中,方法为无参有返回值的方法。

1对参数进行使用:

①自定义请求对象

我们可以自己需要什么,就拿取什么,如需要HttpServletRequest request, HttpSession session在方法()里面定义即可。

②表单的参数映射

如果从网页的表单中获取了数据,只要数据类型和名称可以对应上,那么就可以直接使用。

1
2
3
4
5
6
7
8
9
10
11
@RequestMapping(value="login3")
public ModelAndView login3(String username, String password,HttpSession session){
ModelAndView mvc=null;
if("admin".equals(username)&&"123456".equals(password)){
mvc=new ModelAndView("success.jsp");
session.setAttribute("msg",username);
}else{
mvc=new ModelAndView("index.jsp");
}
return mvc;
}

前端页面:

1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首页</title>
</head>
<body>
<form method="post" action="login3" name="form1">
用户名:<input type="text" name="username"/>
<p>密码:<input type="password" name="password"/></p>
<input type="submit" value="提交"/>
</form>
</body>
</html>
③自定义类(参数映射)

当表单的参数过多时,如果在方法()内写大量参数不仅不美观,而容易出错。
所以,他支持自定义类的参数映射。
类名可以随便起,但是建议见名知意。
类里面的属性名必须和表单参数对应,否则会出错。
这个时候,我们参数直接传递类即可。

1
2
3
4
5
6
7
8
9
10
11
@RequestMapping(value="login4")
public ModelAndView login4(User user, HttpSession session){
ModelAndView mvc=null;
if("admin".equals(user.getUsername())&&"123456".equals(user.getPassword())){
mvc=new ModelAndView("success.jsp");
session.setAttribute("msg",user.getUsername());
}else{
mvc=new ModelAndView("index.jsp");
}
return mvc;
}

2对返回结果使用:

①用Model代替HttpSession传递信息
②用String代替ModelAndView返回结果
1
2
3
4
5
6
7
8
9
@RequestMapping(value="login5")
public String login5(User user, Model model){
if("admin".equals(user.getUsername())&&"123456".equals(user.getPassword())){
model.addAttribute("user",user);
return "success.jsp";
}else{
return "index.jsp";
}
}

原理:手动的拆分数据,使得视图和数据分离,能够获得更大的灵活性。