SpringMVC注解

SpringMVC注解

  • 简单注解
@RequestMapping("/hello")
    public String sayHello(){
        System.out.printf("hello StringMVC");
        return "success";
    }

所对应的.jsp文件

<a href="hello">入门级别</a>
  • RequestMapping 注解的,method:指定该方法的请求方式
	@RequestMapping(value = "/testRequestMapping",method = {RequestMethod.POST})
    public String testRequestMapping(){
        System.out.printf("测试RequestMapping注解");
        return "success"    ;
    }

请求出现错误,该请求是get方法,而控制器里的该URL所对应的方法是post

<a href="user/testRequestMapping">ReuestMapping method</a>
  • ***RequestMapping***注解 , params:指定限制请求参数的条件
@RequestMapping(value = "/testRequestMappingParams",params = {"username"})
    public String testRequestMappingParams(){
        System.out.printf("测试RequestMappingParams注解");
        return "success";
    }  
   

前端请求,因为该URL对应的方法中的params中还有username参数则前端请求就要含有

<a href="user/testRequestMappingParams?username=haha">RequestMapping params</a>

URL方法中对应的params里的参数有对应的值,则前端参数对应的值也要一致

	@RequestMapping(value = "/testRequestMappingParams",params = {"username=haha"})
    public String testRequestMappingParams(){
        System.out.printf("测试RequestMappingParams注解");
        return "success";
    }
<a href="user/testRequestMappingParams?username=haha">RequestMapping params</a>
  • 请求参数的绑定一
@RequestMapping("/testParams")
    public String testParams(String username,String password){
        System.out.println("用户名"+username);
        System.out.println("密码"+password);
        return "success";
    }
<a href="testParams?username=zhangsna&password=123">请求参数绑定</a>
  • 请求参数绑定到把数据封装到JavaBean的类中

创建类

package com.dapt.domain;

import java.io.Serializable;

public class Account implements Serializable {

    private String username;
    private String password;
    private Double money;

    public String getUsername() {
        return username;
    }

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

    public String getPassword() {
        return password;
    }

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

    public Double getMoney() {
        return money;
    }

    public void setMoney(Double money) {
        this.money = money;
    }

    @Override
    public String toString() {
        return "Account{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", money=" + money +
                '}';
    }
}

控制器

 	@RequestMapping(value = "/saveAccount",method = {RequestMethod.POST})
    public String saveAccount(Account account){
        System.out.println(account);
        return "success";
<form action="user/saveAccount" method="post">
        姓名:<input type="text" name="username">
        密码:<input type="password" name="password">
        金额;<input type="text" name="money" >
        <input type="submit" value="提交">
    </form>
  • 请求参数绑定到把数据封装到JavaBean的类中,一个类封装另一个类
    User.java
package com.dapt.domain;

import java.io.Serializable;

public class User implements Serializable {

    private String uname;
    private String age;

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "uname='" + uname + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}

Account.java

package com.dapt.domain;

import java.io.Serializable;

public class Account implements Serializable {

    private String username;
    private String password;
    private Double money;

    private User user;

    public String getUsername() {
        return username;
    }

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

    public String getPassword() {
        return password;
    }

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

    public Double getMoney() {
        return money;
    }

    public void setMoney(Double money) {
        this.money = money;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String toString() {
        return "Account{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", money=" + money +
                ", user=" + user +
                '}';
    }
}

.jsp

<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="saveAccount" method="post">
        姓名:<input type="text" name="username">
        密码:<input type="password" name="password">
        金额:<input type="text" name="money" >
        用户姓名:<input type="text" name="user.uname">
        用户年龄:<input type="text" name="user.age">
        <input type="submit" value="提交">
    </form>
</body>
</html>

控制器

	@RequestMapping(value = "/saveAccount",method = {RequestMethod.POST})
    public String saveAccount(Account account) {
        System.out.println(account);
        return "success";
  • 请求参数绑定 集合数据类型(List map集合)
    Account.java
package com.dapt.domain;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

public class Account implements Serializable {

    private String username;
    private String password;
    private Double money;

    private List<User> list;
    private Map<String,User> map;

    public String getUsername() {
        return username;
    }

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

    public String getPassword() {
        return password;
    }

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

    public Double getMoney() {
        return money;
    }

    public void setMoney(Double money) {
        this.money = money;
    }

    public List<User> getList() {
        return list;
    }

    public void setList(List<User> list) {
        this.list = list;
    }

    public Map<String, User> getMap() {
        return map;
    }

    public void setMap(Map<String, User> map) {
        this.map = map;
    }

    @Override
    public String toString() {
        return "Account{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", money=" + money +
                ", list=" + list +
                ", map=" + map +
                '}';
    }
}

.jsp

<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="saveAccount" method="post">
        姓名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        金额:<input type="text" name="money" ><br>

        用户姓名:<input type="text" name="list[0].uname"><br>
        用户年龄:<input type="text" name="list[0].age"><br>
        
        用户姓名:<input type="text" name="map['one'].uname"><br>
        用户年龄:<input type="text" name="map['one'].age"><br>
        
        <input type="submit" value="提交">
    </form>
</body>
</html>

控制器

 	@RequestMapping(value = "/saveAccount",method = {RequestMethod.POST})
    public String saveAccount(Account account) {
        System.out.println(account);
        return "success";

最后的输出结果

Account{username='闸爱国', password='25', money=45.0, list=[User{uname='鞍山', age='22'}], map={one=User{uname='供热费', age='43'}}}

常用注解

  • ***RequestParam***注解 :把请求中的指定名称的参数传递给控制器中的形参赋值
    属性:
    value:请求参数中的名称
    required:请求参数中是否必须提供此参数,默认值是true,必须提供
@Controller
@RequestMapping("/anno")
public class AnnoController {

    @RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam(value="name") String username){
        System.out.println(username);
        return "success";
    }
}
 <a href="anno/testRequestParam?name=haha">RequestParam</a>
  • RequestBody :用于获取请求体的内容
    属性:required:是否必须有请求体,默认值是true
	@RequestMapping("/testRequestBody")
    public String testRequestBody(@RequestBody String body){
        System.out.println(body);
        return "success";
<form action="anno/testRequestBody" method="post">
        姓名:<input type="text" name="uname"><br>
        年龄:<input type="text" name="age"><br>
        日期:<input type="text" name="date">
        <input type="submit" value="提交">
    </form>
  • PathVariable :拥有绑定URL中的占位符的,例如:url中有/delete/{id},{id}就是占位符
    属性:value:指定URL中的占位符名称
    Restful风格的URL
    1. 请求路径一样,可以根据不同的请求方式去执行后台不同方法
    2. Restful风格的URL优点
      1. 结构清晰
      2. 符合标准
      3. 易于理解
      4. 扩展方便
@RequestMapping("/testPathVariable/{id}")
    public String testPathVariable(@PathVariable(value="id") String id){
        System.out.println(id);
        return "success";
    }
<a href="anno/testPathVariable/10">PathVariable</a>
  • CookieValue : 用于获取指定cookie的名称的值 (只能取浏览器里有的)
    属性:value:cookie的名称
@RequestMapping("/testCookieValue")
    public String testCookieValue(@CookieValue(value ="JSESSIONID") String cookie){
        System.out.println(cookie);
        return "success";
    }
<a href="anno/testCookieValue">CooKieValue</a>
  • ***ModelAttribute***注解
    作用:
    1. 出现在方法上:表示当前方法会在控制器方法执行前先执行
    2. 出现再参数上:获取指定的数据给参数赋值

应用场景:当提交表单数据不是完整的实体数据时,保证没有提交的字段使用数据库原来的数据
方式一:

@RequestMapping("/testModelAttribute")
    public String testModelAttribute(User user){
        System.out.println(user);
        return "success";
    }

	//修饰的方法有返回值
    @ModelAttribute
    public User showUser(String uname){
        User user = new User();
        user.setUname(uname);
        user.setAge("20");
        user.setDate(new Date());
        return user;
    }
<form action="anno/testModelAttribute" method="post">
        用户姓名:<input type="text" name="uname"><br>
        用户年龄:<input type="text" name="ager"><br>
        <input type="submit" value="提交">
    </form>

方式二:

 @RequestMapping("/testModelAttribute")
    public String testModelAttribute(User user){
        System.out.println(user);
        return "success";
    }
    
	// 修饰的方法没有返回值,放在一个Map里面
    @ModelAttribute
    public void showUser(String uname, Map<String,User> map){
        User user= new User();
        user.setUname(uname);
        user.setAge("23");
        user.setDate(new Date());
        map.put("abc",user);
    }
  • SessionAttribute :用于多次执行控制器方法间的参数共享
    属性: value:指定存入属性的名称
//设置session的值
@SessionAttributes(value = {"msg"})
public class AnnoController {

	@RequestMapping("/testSessionAttributes")
    public String testSessionAttributes(Model model){
        model.addAttribute("msg","张三");
        return "success";
    }
}

index.jsp

	<a href="anno/testSessionAttributes">testSession</a>
    <a href="anno/getSessionAttributes">getSession</a>
    <a href="anno/delSessionAttribute">delSession</a>

success.jsp里 显示内容是 “ {msg=张三} 张三 张三 ”

<%@ page contentType="text/html;charset=UTF-8" language="java"  isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h2>success</h2>
    ${sessionScope}
	${msg}
	${sessionScope.msg}
</body>
</html>

获取Session的值

@RequestMapping("/getSessionAttributes")
    public String getSessionAttributes(ModelMap modelMap){
        String msg = (String) modelMap.get("msg");
        System.out.println(msg);
        return "success";
    }

删除Session的值

	@RequestMapping("/delSessionAttribute")
    public String delSessionAttribute(SessionStatus status){
        status.setComplete();
        return "success";
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值