七、JSP规范与El表达式

JSP规范

1、javaEE规范中,制定了如何开发JSP文件从而代替响应对象将处理结果写入到响应体的开发流程。也制定了Http服务器应该如何调用管理Jsp文件

2、响应对象需要程序员手动控制输出流写入响应体时只适用于少量的数据,如果结果较多程序员是应付不来的。而JSP文件可以比较轻松地向响应体中写入内容。

3、JSP只能在web文件夹下,属于静态资源文件。其中的配置cotentType用来通知浏览器如何解析解释数据编码.JSP中可以写html,css,js,java”

java是不能在浏览器编译执行的,只能在服务端上编译执行。

那怎么写java呢?需要用执行标记!<%%>

怎么将java结果写到响应体,需要输出标记!<%=%>

4、JSP中内置了一些java对象,进而使JSP文件中的java代码可以获取到作用域对象及它们中的共享数据
Servlet和JSP都可以操作请求包,也都可以将数据写到响应体中JSP和Servlet是如何分工的呢?

Servlet:大厨师

JSP文件:服务员

这是由于JSP处理业务比较麻烦,而Servlet写处理结果比较麻烦。

在Servlet工作完毕之后通过请求转发再调用JSP就形成了一套完整的服务数据共享通常是利用请求作用域对象。

5、Http服务器是如何调用管理JSP文件的呢?即JSP文件运行的原理(面试问题)

  • Http服务器首先会将JSP文件的内容编辑为Servlet接口实现类的_jsp.java文件
  • Http服务器将Servlet接口实现类编译生成_jsp.class文件 ,
  • Http服务器负责创建这个Class的实例对象,这个实例对象就是jspServlet实例对象
  • Http服务器在虚拟机中执行通过jspServlet实例对象调用_jspservice方法,在方法中将jsp文件内容写入响应体

证据:

这两个文件都在C盘的work工作空间文件下,而且这个jsp.class还继承了HttpJspBase (extends HttpServlet),因此是Servlet接口实现类.请求转发时传的两个对象也传给了这个类里的_jspservice。JspServlet中自动根据JSP文件中的内容生成JSPservice的方法体做出我们想做的事儿。

JSP文件开发规范归根结底就是要能让Http服务器将其自动地、对应地转换为一个JspServlet。
简化了开发难度。这也解释了为什么JSP有内置对象。

添加用户信息的步骤

1、在数据库中新建一个表,在java环境中新建一个对应的表项对象
2、网页提交表单后,在Servlet中获取参数信息,然后new出对应的表项对象。
3、将表项对象传递给Dao层,并在Dao层写出sql,与数据库进行交互
4、Dao层返回一个结果,也许是个Integer,也许是一个集合,
5、Servlet要把这个结果放到请求作用域对象中,并使用请求转发机制请求对应的jsp文件
6、对应的jsp把从请求作用域对象中拿出的信息和一定的标签语句写到响应体返还给浏览器

EL表达式

1、EL表达式
EL表达式是EL工具包提供JSP文件上使用的一种表达式格式
命令格式: ${作用域对象别名.共享数据名.属性名}
命令作用:从作用域对象读取指定共享数据关联的引用对象的属性值。 并自动将属性的结果写入到响应体

2、作用域对象别名
1)ServletContext application: 全局作用域对象
2) HttpSession session: 会话作用域对象
3) HttpServletRequest request: 请求作用域对象
4) PageContext pageContext: 当前页作用域对象,这是JSP文件独有的作用域对象。Servlet中不存在。

在当前页作用域对象存放的共享数据仅能在当前JSP文件中使用,不能 共享给其他Servlet或则其他JSP文件

3、简化版
格式:${共享数据名.属性名};
没有指定作用域对象,由小打到大“猜”。
pageContext—>request—>session—>application
容易降低程序执行速度【南辕北辙】,但仍大大简化从pageContext读取共享数据并输出的难度!

4、EL内置对象
${param.请求参数名}、 ${paramValues.请求参数名[下标]}
从请求对象中根据参数名获取指定参数的内容,并输入到响应体中。

同一个参数名name下可能有多个参数值,在响应对象中以数组的方式存在。按下标读取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值