菜鸟SpringMVC学习笔记2——@SessionAttributes注解与@RequestMapping

Session与Request区别在于,springMVC处理时,将数据放在哪个进程里。
在浏览器调用时,会出现区别,一旦弄错,就会获取不到数据。

先模拟一个取数据的一个实现。
假装USER模型是数据库中的数据,我模拟user属性如下:

package com.hentities;

public class User {
    private String username;
    private String password;
    private int age;


    private Adress adress;
    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 int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public Adress getAdress() {
        return adress;
    }
    public void setAdress(Adress adress) {
        this.adress = adress;
    }
    @Override
    public String toString() {
        return "User [username=" + username + ", password=" + password + ", age=" + age + ", adress=" + adress + "]";
    }

    public User(){}

    public User(String userName,String password,int age) {
        this.username=userName;
        this.password=password;
        this.age=age;
    }

}

这里使用了USER的三个属性,地址为空
this.username=userName;
this.password=password;
this.age=age;

@RequestMapping("/request")
@Controller
public class SpringMVCtest {

    private static final String SUCCESS="success";

    @RequestMapping("/Session")
    public String testSession(Map map) {
        map.put("user1", new User("A", "123", 12));
        map.put("user2", new User("B", "123", 35));
        map.put("user3", new User("C", "123", 24));
        return SUCCESS; 
    }
}

即目标页面映射字符串“request/Session”时,页面自动转向配置路径下的success.jsp页面。
我在目标页面success.jsp嵌入这样的代码:

//div:背景灰色,字体颜色黄色
    <div style="background:#CCC;color:yellow">
        name: ${requestScope.names}
    <br><br>
    request User1: ${requestScope.user1}
    <br>
    session User1: ${sessionScope.user1}
    <br><br>
    request User2: ${requestScope.user2}
    <br>
    session User2: ${sessionScope.user2}
    <br><br>
    request User3: ${requestScope.user3}
    <br>
    session User3: ${sessionScope.user3}
    <br>
    div>
request为处理request映射中的模型数据,session 为处理session 进程数据,同时获取user1、user2、user3.

运行之后获取如下:
菜鸟SpringMVC学习笔记2——@SessionAttributes注解与@RequestMapping_第1张图片

可以看到request请求域里,数据都获取成功了。session请求中数据,都没有请求到数据。

如何用session也请求到数据?
session有两个属性,一个是type,一个value。
value中可以放入字符串数组,type可以放类类型。

其中value为默认

在类上加入注解
例如:

  • 注解一:
@SessionAttributes(value= {"user1","user3"})
  • 注解二:
@SessionAttributes(value={"user2"},types= {String.class})

再或者简化为:

@SessionAttributes("user2")
//value为默认属性

这样,第一个注解是将”user1”,”user3”加入到session中,在浏览器中可以session调用这两个模型数据。
同理,第二个注解是将user2加入到session中,在浏览器中可以session调用这user2模型数据。

运行注解一结果:
菜鸟SpringMVC学习笔记2——@SessionAttributes注解与@RequestMapping_第2张图片

运行注解二:
菜鸟SpringMVC学习笔记2——@SessionAttributes注解与@RequestMapping_第3张图片

可以看出,session请求域中成功加入我们指定的模型。

你可能感兴趣的:(Spring,MVC,学习)