JSP学习笔记-关于JSP和EL表达式

关于Servlet和JSP

JSP文件中,只有在<% %>标记中的内容才会被当做Java命令
将变量的值写入响应体
<%=变量%>

  1. Servlet和JSP的分工:
    Servlet:负责处理业务并得到处理结果
    JSP:不负责处理业务,主要将Servlet中处理结果写到响应体

  2. Servlet与JSP调用关系
    Servlet工作完毕后,一般通过请求转发方式向Tomcat申请调用JSP

  3. Servlet与JSP直接如何实现数据共享
    Servlet将处理结果添加到“请求作用域对象中”
    JSP文件在运行时,从“请求作用域对象”得到处理结果

  4. Http服务器调用JSP文件步骤(常考面试题)
    第一步.Http服务器将JSP文件内容“编辑”为一个Servlet接口实现类
    第二步.Http服务器将Servlet接口实现类“编译”为class文件
    第三步.Http服务器负责创建这个class的实例对象,这个实例对象就是Servlet实例对象
    第四步.Http服务器通过Servlet实例对象调用_jspServive方法,将jsp文件内容写入到响应体中

关于EL表达式

  1. EL工具包
    由于Java技术开发的一个jar包
    作用:降低JSP文件开发时Java命令开发强度
    Tomcat服务器本身自带了EL工具包(Tomcat安装地址/lib/el-api.jar)

  2. EL表达式
    命令格式:
     ${作用域对象别名.共享数据}
    命令作用:
     1.El表达式是EL工具包提供的一种特殊命令格式【表达式命令格式】
      2.EL表达式在JSP文件上使用
     3.负责在JSP文件上从作用域对象中读取指定的共享数据,并输出到响应体内

  3. EL表达式中作用域对象的别名
    JSP文件中可以使用的作用域对象:
      ServletContext application:全局作用域对象
      HttpSession session:会话作用域对象
      HttpServletRequest request:请求作用域对象
      PageContext pageContext:当前页作用域对象(这是JSP文件中独有的作用域对象,在Servlet中不存在。在当前页作用域对象中存放的共享数据仅能在当前JSP文件中使用)JSTL---->JSP
    EL表达式提供的作用域对象别名:
      application ${applicationScope.共享数据名}
      session ${sessionScope.共享数据名}
      request ${requestScope.共享数据名}
      pageContext ${pageScope.共享数据名}
    EL表达式没有提供遍历集合的方法,无法从作用域对象中读取集合内容输出

  4. EL表达式简化版
    命令格式:
      ${共享数据名}
    命令作用:
      EL表达式允许开发人员开发时省略作用域对象别名
    工作原理:
      由于没有指定作用域对象,则会执行【猜】的算法
      先到pageContext中定位共享数据
      再到request中定位共享数据
      再到session中定位共享数据
      再到application中定位共享数据、
      从小到大依次定位,找到就结束;如果都没有则返回null
    存在隐患:
      容易降低程序执行速度
      容易导致数据定位错误
    应用场景:
      设计目的就是简化从pageContext读取共享数据的难度

  5. EL表达式提供内置对象
    命令格式:
      ${param.请求参数名}
    命令作用:
      通过请求对象读取当前请求包中请求参数内容,写入响应体

<body>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!--
http://localhost:8080/myWeb2/index_1.jsp?userName=mike&password=123
-->

来访者姓名:${param.userName}
来访者密码:${param.password}
</body>

命令格式:
  ${paramValues.请求参数名[下标]}
命令作用:
  如果浏览器发送的请求参数是一个参数关联多个值,此时可以通过paramValues读取请求参数下制定位置的值,并写入响应体

<body>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!--
http://localhost:8080/myWeb2/index_2.jsp?detpNo=1&detpNo=2&detpNo=3
-->

第一个部门:${paramValues[0]}<br>
第二个部门:${paramValues[1]}<br>
第三个部门:${paramValues[2]}
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值