JSP

JSP脚本片段:用于在JSP页面写java代码

<% %>

<%
    int num = 0;
    num++;
    System.out.println(num);
    //向页面打印输出
    out.print(num);
%>

注意事项:

  1. JSP脚本片段中只能出现java代码,不能出现HTml元素。在访问JSP时,JSP引擎翻译JSP页面中的脚本
  2. JSP脚本片段中的java代码必须严格遵守java的规则
  3. 一个JSP页面是可以有多个脚本片段的
  4. 多个脚本片段中的代码可以相互访问

JSP表达式

<%= 变量 %>

<%= num %>

JSP声明片段

<%!
    int x = 10;
    static{}
    public void fun(){}
%>

JSP的配置指令

  • page指令:定义整个JSP页面的相关属性

  • include指令:引入其他的JSP页面。先把两个页面结合,在去编译成Servlet

  • taglib指令:引入页面上其他需要用到的标签

  • autoFlush:自动刷新---[当缓存满了,自动刷新]

  • errorPage:出现错误自动跳转指定页面

  • iserrorPage:指定是不是错误的页面---[可以用exception,不设置为true不能使用]

JSP标签

  • 内置标签
    • jsp:include 引入指定的页面
    • jsp:forward 转发页面
    • jsp:param 传参数
  • JSTL标签,需要导入JSTL标签库
  • 自定义标签

JSP作用域

  1. 当前页(pageContext):一个属性只能在一个页面中获取
  2. 一次请求(request):一个页面中设置的属性,范围是一次请求
  3. 一次会话(session):一个会话中的属性,只要页面不关闭,都能获取到
  4. 整个web应用(application):在这个服务器上,当前项目下的任何一个位置都能获取

EL表达式

EL表达式的内置作用域

  • pageContext
  • requestScope
  • sessionScope
  • applicationScope

EL表达式的缺陷

  • 只能读不能写
  • 不支持流程控制语句

面试题

JSP和Servlet的区别?

  1. JSP本质上就是一个servlet
  2. JSP更侧重于视图的展示,Servlet更侧重于逻辑处理
  3. 先有Servlet,后有JSP

jsp:include标签和include指令的区别?

  1. include标签:先把要引入的页面编译,再合并
  2. include指令:先把要引入的页面合并,再编译

JSP的四大作用域

  1. 当前页(pageContext):一个属性只能在一个页面中获取
  2. 一次请求(request):一个页面中设置的属性,范围是一次请求
  3. 一次会话(session):一个会话中的属性,只要页面不关闭,都能获取到
  4. 整个web应用(application):在这个服务器上,当前项目下的任何一个位置都能获取

JSP的九大内置对象----内置:不需要创建,直接就能用

  1. request 请求
  2. response 响应
  3. session 会话
  4. out 输出
  5. page 当前JSP页面本身
  6. application 应用
  7. exception 异常----只能指定在isErrorPage="true"
  8. pageContext 当前页-----作用域
  9. config 配置