当前位置: 首页 > news >正文

外贸网站推广收费艺考培训

外贸网站推广收费,艺考培训,广东省住房建设厅网站首页,上海市教育网官网你提出了一个非常好的问题! 确实,使用 request.getSession().getAttribute(Constants.ADMIN_ID) 也能从 Session 中获取属性,那么 SessionAttribute 注解和这种方式到底有什么区别呢? request.getSession().getAttribute(Constan…

你提出了一个非常好的问题! 确实,使用 request.getSession().getAttribute(Constants.ADMIN_ID) 也能从 Session 中获取属性,那么 @SessionAttribute 注解和这种方式到底有什么区别呢?

request.getSession().getAttribute(Constants.ADMIN_ID) 的工作方式

  1. 手动获取 Session:
    • request.getSession(): 首先,你需要通过 HttpServletRequest 对象获取 HttpSession 对象。
    • getAttribute(Constants.ADMIN_ID): 然后,你需要调用 HttpSessiongetAttribute 方法,并传入 Session 属性的名称 (这里是 Constants.ADMIN_ID)。
  2. 类型转换:
    • getAttribute 返回一个 Object 对象, 你需要手动将其强制转换为你需要的类型,例如 Integer
  3. 空值处理:
    • 你需要自己判断 getAttribute 是否返回了 null,并且做相应的处理 (例如设置默认值)。

@SessionAttribute 的工作方式

  1. 声明式 Session 获取:
    • @SessionAttribute(value = Constants.ADMIN_ID, required = false) Integer adminId: 你只需要在方法参数上添加 @SessionAttribute 注解,并指定属性名称,Spring MVC 会自动从 Session 中获取数据。
  2. 自动类型转换:
    • Spring 会自动将 Session 中的属性值转换为方法参数的类型 (Integer 在此例中)。
  3. 可选属性:
    • 你可以通过 required 属性来控制 Session 属性是否是必须的, 如果为 false, 并且 Session 中没有这个属性,则方法参数会被注入 null
  4. 简洁性: @SessionAttribute 提供一种声明式的、更加简洁的方式来获取 Session 属性, 减少了繁琐的获取和类型转换代码。

主要区别

Featurerequest.getSession().getAttribute(Constants.ADMIN_ID)@SessionAttribute(value = Constants.ADMIN_ID, required = false) Integer adminId
获取方式手动通过 HttpServletRequest 获取 HttpSession, 然后再调用 getAttribute声明式地使用注解,Spring MVC 自动处理。
代码量代码较多,需要手动处理获取 session、获取属性值、类型转换和空值判断。代码简洁,只需注解声明,Spring 自动处理。
类型转换需要手动进行类型转换。自动进行类型转换。
空值处理需要手动判断是否返回 null使用 required 属性,可以指定是否需要处理空值。
异常处理需要手动处理 getAttribute 返回 null 或类型转换失败的异常。Spring 会抛出异常如果 Session 中找不到属性或者类型转换失败 (当 required=true时)。
可读性代码较为冗长,可读性较差。代码简洁,更易读懂。
维护性需要自己编写处理 Session 属性的代码。依赖于 Spring 的注解处理,维护性更高。
测试性测试代码需要模拟 HttpServletRequestHttpSession测试代码更简洁,可以使用 MockMvc 测试 Spring MVC 控制器。

总结

  • request.getSession().getAttribute(Constants.ADMIN_ID): 是一种传统的、手动的方式来获取 Session 属性。 你需要编写很多代码来完成获取、类型转换、以及空值处理。
  • @SessionAttribute(value = Constants.ADMIN_ID, required = false) Integer adminId: 是一种声明式的、更简洁的方式来获取 Session 属性。 Spring 会帮助你自动获取,转换类型, 和处理空值问题。

通常情况下,我们 推荐使用 @SessionAttribute,因为它更加简洁、类型安全、可读性更强, 并且更加符合 Spring 的编程风格。 request.getSession().getAttribute 这种方式, 更加适合于没有使用 Spring MVC 框架的场景, 例如原生 Servlet 的场景。

简单来说, @SessionAttribute 是 Spring MVC 提供的一个语法糖,简化了从 Session 获取属性的操作。 它更符合 Spring 的编程风格, 也更简洁易维护。

在这里插入图片描述

http://www.yayakq.cn/news/814880/

相关文章:

  • 韩国情侣网站模板网站怎么做百度优化
  • 关于网站开发市问卷调查科技感的网站
  • 网站如何添加统计代码是什么意思网站建设需要什么硬件
  • 没建网站 备案wordpress英文主题哪个好用
  • 广州网站建设公司招聘wordpress 后台加入链接后_网站显示是标签_不是链接
  • 大厂县网站建设或SEO优化学网站开发容易吗
  • 青海省交通建设工程质量监督站网站诸城做网站建设的
  • 成品软件源码网站华强北 网站建设
  • 乐从容桂网站建设汕头站扩建效果图
  • 佛山网站建设wantsun游戏网站如何做
  • 网站建设的书 豆瓣wordpress模板制作兼职
  • 网站一般用什么软件做的广州网站设计开发招聘
  • 怎么建设自己的卡盟网站杭州 做网站
  • 上海高端网站建设定制设置网站标签
  • 网站被k文章修改自贡市建设局网站
  • 摄影看图网站WordPress mip 评论框
  • 绵阳网站建设wordpress w3 total cache
  • 国外网站网页设计网站建设礼品
  • 物流网站毕业设计工业设计东莞网站建设
  • 建博客网站东莞网站建设 钢结构
  • 仿租号网站源码网站开发规划设计公司年终总结
  • 农业电商网站建设ppt网站建设的基本步骤是哪些
  • 南昌县城乡规划建设局官方网站房地产宣传推广方案
  • 网站追踪如何做WordPress这新手
  • 搜索引擎优化包括哪些山西常见网站建设推荐优化
  • wordpress添加新php页面网站建设优化之优化关键字
  • 闵行交大网站建设个人微博网站设计
  • 网站建设与网站设计哪个好学微信网站搭建教程
  • 上海高端网站建设服务建设论坛网站需要做什么
  • 建设工业网站首页域名查询注册信息查询