在SpringMVC的控制器中如何使用HttpServletRequest对象呢?

复制代码
SpringMVC中使用HttpServletRequest对象的两种解决方法:
 1.完全解耦方式,完全不依赖HttpServletRequest
     - 该方式只能用于存取数据,不能做其他操作(获得session,获得其他请求数据)
     - 使用方法,向方法中注入Model对象,该对象时一个Map集合,底层是request中的属性对象
     - 如果要将Model对象中的某些属性添加到session作用域,则需要在类上使用@SessionAttributes({"属性名",...})
 2.非解耦方式,通过依赖注入的方式实现,由容器向控制器中注入HttpServletRequest等对象
     - 该方法需要在控制器方法中声明要注入的对象
     - 使用此方式就可以在控制器中直接使用HttpServlet对象

下面为demo演示

java 复制代码
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Controller
@SessionAttributes({"name","upwd"})
public class userController {

    @RequestMapping("/demo")
    public String demo(){
        return "index.jsp";
    }

    @RequestMapping("/demo1")
    public String demo1(){
        return "redirect:index.jsp";      //重定向前面加redirect:
    }
    /**
     * 在SpringMVC的控制器中如何使用HttpServletRequest对象呢?
     * SpringMVC中使用HttpServletRequest对象的两种解决方法:
     *  1.完全解耦方式,完全不依赖HttpServletRequest
     *      - 该方式只能用于存取数据,不能做其他操作(获得session,获得其他请求数据)
     *      - 使用方法,向方法中注入Model对象,该对象时一个Map集合,底层是request中的属性对象
     *      - 如果要将Model对象中的某些属性添加到session作用域,则需要在类上使用@SessionAttributes({"属性名",...})
     *  2.非解耦方式,通过依赖注入的方式实现,由容器向控制器中注入HttpServletRequest等对象
     *      - 该方法需要在控制器方法中声明要注入的对象
     *      - 使用此方式就可以在控制器中直接使用HttpServlet对象
     * @return
     */
    @RequestMapping("/demo2")
    public String demo2(Model model){
        model.addAttribute("name","root");
        model.addAttribute("upwd","123456");
        return "index.jsp";
    }

    @RequestMapping("/demo3")
    public ModelAndView demo2(ModelAndView modelAndView){
        modelAndView.getModelMap().addAttribute("name","admin1");
        modelAndView.getModelMap().addAttribute("upwd","1234561");
        modelAndView.setViewName("index.jsp");
        return modelAndView;
    }

    @RequestMapping("/reqDemo2")
    public String reqDemo(HttpServletRequest request){
        request.setAttribute("name","hello");
        request.setAttribute("upwd","000000");
        return "index.jsp";
    }

}
相关推荐
二川bro14 分钟前
模型部署实战:Python结合ONNX与TensorRT
开发语言·python
联系QQ:2769988520 分钟前
电化学与冷启动仿真的赝电容计算及GITT扩散系数研究——阻抗分析拟合与全电池电容器性能评估
开发语言
Croa-vo37 分钟前
Tesla Spring 2026 Co-op 面经:CodeSignal真题解析与通关攻略
java·后端·spring
言言的底层世界44 分钟前
c++中STL容器及算法等
开发语言·c++·经验分享·笔记
C***u1761 小时前
【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目
java·spring boot·spring
CodeAmaz1 小时前
Spring 事务失效的 8 种常见场景总结
java·spring·事务失效
liu****1 小时前
八.函数递归
c语言·开发语言·数据结构·c++·算法
隔山打牛牛1 小时前
Spring 整合 MyBatis 深度详解(原理 + 实操 + 源码级解析)
java·spring·mybatis
华仔啊1 小时前
SpringBoot 动态菜单权限系统设计的企业级解决方案
java·后端
S***q3771 小时前
Java进阶-在Ubuntu上部署SpringBoot应用
java·spring boot·ubuntu