JSP

Posted 1877chl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP相关的知识,希望对你有一定的参考价值。

1.首先我们要知道学习JSP只要掌握原理和过程,不需要记代码;
2.JSP是JavaEE中一个规范,学习JSP方便我们书写JSP文件,而JSP文件可以替代响应对象向响应包输入数据,避免了响应对象输入数据过少的问题;
3.在JSP中书写Java命令,不会被识别,我们需要写在执行标记中;<%.....%>
在JSP文件中通过输出标记将Java变量的值写入响应体;<%=num1+num2%>
在JSP文件中所有的执行标记当做一个整体;
4.JSP内置对象一:request  类型:HttpServletRequest  作用:在JSP文件运行时读取请求包信息,与Servlet在请求转发过程中实现数据共享

JSP内置对象二:session  类型:HttpSession  作用:JSP文件在运行时,可以session执行当前用户的私人储物柜,添加或者读取共享数据;

JSP内置对象三:application  类型:HttpServletContext  作用:数据共享

JSP内置对象四:Request  类型:HttpServletRequest

4.JSP与Servlet联合与分工:
    1.Servlet:负责处理业务并得到处理结果-----大厨
      JSP:不负责业务处理,主要任务是将Servlet中处理结果鞋写入到响应体;-----传菜员

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

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

5.Http服务器调用JSP文件步骤:
    1.http服务器将JSP文件内容【编辑】为一个Servlet接口实现类
    2.http服务器将Servlet接口实现类【编译】为class文件
    3.http服务器负责创建这个class的实例对象,也就是Servlet实例对象
    4.http服务器通过Servlet实例队形调用【service】方法,将JSP文件内容写入到响应体;
注意:第一点关于编辑为Servlet接口实现类的原因:
    Tomcat只能调用动态资源文件,也就是Servlet接口实现类;

    在哪里可以证明呢?
在Tomcat文件夹下的work文件夹下的Catalina文件夹下的localhost

            EL工具包
1.介绍:是由Java开发的jar包,它能降低JSP文件开发时Java命令开发强度,Tomcat服务器自带了EL工具包

2.JSP的作用:代替响应对象将doPost/doGet方法的执行结果写入到响应体;它的主要开发步骤是:
    1.从指定作用域对象中得到处理结果
    2.进行类型强转
    3.将数据写入响应体
每个JSP文件大体都是这三步,因此,我们可以将这三步封装;在开发过程中,只要开发步骤超过三步,都认为是影响开发,都要进行封装

3.EL表达式
    1.命令格式:${作用域对象别名.共享数据key}
    2.命令作用:EL表达式是EL工具包提供的一种特殊命令格式,用于JSP文件,负责在JSP文件上从作用域对象中得到共享数据并输出到响应体;
    
2.JSP作用域别名:
    1.ServletContext  application 全局作用域对象
    2.HttpSession  session 会话作用域对象
    3.HttpServletRequest request 请求作用域对象
    4.PageContext  pageContext  当前页作用域对象(JSP文件独有的作用域对象,在当前页作用域对象存放的共享数据只能在当前JSP使用,不能共享给其他的JSP或者Servlet使用,真实开发中,主要用于JSTL标签与JSP文件之间的数据共享)

3.EL表达式中的作用域别名:
    1.ServletContext  applicationScope
    2.HttpSession     sessionScope
    3.HttpServletRequest requestScope
    4.PageContext  pageScope

4.EL表达式将引用对象属性写入响应体
    1.命令格式:${作用域对象别名.共享数据名.属性名}
    2.命令格式:从作用域对象读取指定共享数据关联的引用对象的属性值,自动将属性结果写入响应体
    3.属性名;一定要与引用类型属性名一致;
    4.EL表达式没有提供遍历集合的方法

5.EL表达式简化版
    1.命令格式:${共享数据名}
    2.命令作用;EL表达式允许开发人员开发时省略作用域对象别名
    3.工作原理:EL表达式简化版由于没有指定作用域对象,所以在执行师采用【猜】算法,首先在【PageContext】定位,找着了就输出,没找着,就去【RequestScope】找,没找着,就去【sessionScope】找,没有就去【applicationScope】,还没找着,就返回null;

    4.存在的隐患:
        1.容易降低程序执行的速度
        2.容易导致数据定位错误
    5.应用场景:
        1.设计目的是简化从PageContext读取数据并输出的难度
    6.EL表达式简化版尽管存在很多隐患,在实际开发中,开发人员为了节省时间,喜欢用;

6.EL表达式----支持运算表达式
    1.前提:在JSP文件有时候需要将读取共享数据
    2.在EL表达式中运算:${"22"+requestScope.key4}<br/>
      在EL表达式中运行逻辑运算:${key4>30?"yes":"no"}

7.EL表达式的内置对象(扩展了解)
    1.命令格式:${param.请求参数名}
    2.命令作用:通过请求对象读取当前请求包中的参数信息,并将请求参数内容写入响应体;
    3.代码:发送请求;http://localhost:8080/myWeb/two?userName=xiaozhang&password=123
                用户名:${param.userName}<br>
          密码:${param.password}

    1.${paramValues.请求参数名[下标]}
    2.命令作用:如果浏览器发送的请求参数携带多个值,此时通过paramValues读取请求参数下指定值
    3.发送请求:http://localhost:8080/myWeb/?useid=1&useid=2&useid=3
    读取第二个值:.${paramValues.useid[1]

以上是关于JSP的主要内容,如果未能解决你的问题,请参考以下文章

JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象

jsp frame

19 jsp——jsp的转发标签

Tip:JSP标签也称之为Jsp Action(JSP动作)元素

JSP_动作和隐式对象

JSP系列:JSP进阶-EL表达式和JSP标签