← 返回首页
SpringMVC教程(九)
发表时间:2020-06-01 17:22:45
Controller中获取三大作用域

在前面Servlet课程中,我们知道web开发有三大作用域request,ression,application.在Controller中如何获取这三大作用域对象,并且保存属性呢?

项目结构图如下:

实例:

ModelAttribute中保存的属性本质就是保存在requestScope中,等同于request.setAttribuate的作用。

package com.controller;

import com.entity.Users;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.servlet.http.HttpSession;

@Controller
@RequestMapping("users")
public class UsersController {


    @RequestMapping(value="login",method ={RequestMethod.GET,RequestMethod.POST})
    public String login(@ModelAttribute("loginUser") Users user, HttpSession session){
        System.out.println("执行用户登录...");
        System.out.println(user);
        //保存在session中
        session.setAttribute("city","西安");
        //保存在application
        session.getServletContext().setAttribute("nation","中国");
        return "login_success";
    }

}

login_success.jsp视图代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
<h1>登录成功</h1>
<hr>
<div>
    用户名:${requestScope.loginUser.username}<br>
    密码:${requestScope.loginUser.password}<br>
    城市:${sessionScope.city}<br>
    国家:${applicationScope.nation}<br>
</div>
</body>
</html>

使用PostMan测试 /users/login动作。