前言
JSP本质上是视图层的操作,“元老”级别的JavaWeb开发者不仅仅要编写后台业务,还要懂前端编写。JSP刚出来时还没有什么前后端分离的概念,大家普遍认为后端开发人员就应该把前后端传参交互任务一起做了。现在看来,这是个吃力不讨好的活。JSP类似于现在springboot的Thymeleaf视图层操作语言。在前后端分离技术流行后,JSP已经成为历史,但还是值得让大家探索纠结JavaWeb到底做了哪些工作。
1.JSP内置对象作用域(建议多理解下)
由于在浏览器打开和关闭,页面之间来回跳转要进行不同情况下的处理,所以就有了page、request、session和application四种作用域。他们具有共同的setAttribute和getAttribute方法(设置和获取方法进行前后端交互)
- page 作⽤域:对应的内置对象是 pageContext。
- request 作⽤域:对应的内置对象是 request。
- session作⽤域:对应的内置对象是 session。
- application 作⽤域:对应的内置对象是 application。
所以,作用域大小关系为:page < request < session < application
- 经典网站访问量统计案例(在application作用域内,只要刷新页面或者连接服务器,count计数就会+1)
2.EL表达式(了解)
Expression Language 表达式语⾔,替代 JSP ⻚⾯中数据访问时的复杂编码,可以⾮常便捷地取出域对象(pageContext、request、session、application)中保存的数据,前提是⼀定要先 setAttribute,EL 就相当于在简化 getAttribute操作。
${变量名} 变量名就是 setAttribute 对应的 key 值。
(1)EL对4种域对象的默认查找顺序:
pageContext ->request->session->application
按照上述的顺序进⾏查找,找到⽴即返回,在 application 中也⽆法找到,则返回 null
(2)指定作⽤域进⾏查找
(3)EL执行表达式
3.JSTL(了解)
(1)JSP Standard Tag Library JSP 标准标签库,JSP 为开发者提供的⼀系列的标签,使⽤这些标签可以完成⼀些逻辑处理,⽐如循环遍历集合,让代码更加简洁,不再出现 JSP 脚本穿插的情况。
实际开发中 EL 和 JSTL 结合起来使⽤,JSTL 侧重于逻辑处理,EL 负责展示数据。
(2)JSTL优点
- 提供了统⼀的标签
- 可以⽤于编写各种动态功能
(3)常用核心标签库set、out、remove、catch
(4)逻辑控制if choose和foreach
4.感想
个人感觉JSP主要是字符串处理,后端开发人员还是老老实实写java算了,搞了一堆花里胡哨的语法出来(现在已经有很多种这种页面语法了)。所以Java任务是分工明确,JSP主要负责展示,Servlet中处理业务逻辑。