一、JSP简介

1.概念

        JSP:Java Server Pages,Java服务端页面。JSP是一种动态的网页技术,其中可以定义HTML、JS、CSS等静态内容,还可以定义Java代码等动态内容。

2.作用

        简化开发,避免了在Servlet中直接输出HTML标签。

二、JSP的开发流程

1.导入JSP坐标

<!--JSP-->
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
</dependency>
【注意】依赖范围:provided。原理同servlet,因为Tomcat自带了,避免包冲突。

2.创建JSP文件

        在webapps下创建JSP文件:
        

3.编写HTML标签和Java代码

        

三、JSP的原理

1.JSP的本质

        JSP的本质就是一个Servlet。JSP被访问时,由JSP容器(Tomcat)将其转换成Java文件(Servlet),再由JSP容器(Tomcat)将其编译为字节码文件,最终对外提供服务的就是这个字节码文件。
        

2.hello_jsp.java中的代码        

        

四、JSP的脚本

        JSP脚本:用于在JSP文件中定义Java代码。

1.脚本分类

(1)<% ... %>:内容会直接放到_jspService()方法中
(2)<%= ... %>:内容会放到out.print()中,作为out.print()的参数
(3)<%! ... %>:内容会直接放到_jspService()方法外的成员位置
【tips】JSP中Java代码可以截断。

2.JSP的缺点

(1)书写麻烦,尤其是复杂的页面;
(2)不易于阅读;
(3)复杂度高,运行需要依赖JRE、JSP容器、JavaEE等环境;
(4)占内存和磁盘:JSP会自动生成.java和.class文件占用磁盘,运行.class文件占用内存;
(5)调试困难,出错后需要找到自动生成的.java文件进行调试;
(6)不利于团队协作,前端不精Java,后端不精HTML;
(...)
【tips】由于各种缺点,现在逐渐被HTML+AJAX技术所替代。

五、EL表达式和JSTL标签

        由于在JSP中直接写Java代码不利于阅读和调试等,所以使用EL表达式和JSTL标签来替换Java代码。

1.EL表达式

(1)作用:
        用于简化JSP页面中的Java代码,主要用来获取数据。
(2)语法:${表达式}
${brands} //获取域中存储的key为brands的数据。
【tips】JavaWeb中的四大域对象(范围逐渐扩大):
                ①page:当前页面有效;
                ②request:当前请求有效;
                ③session:当前会话有效;
                ④application:当前应用有效。
            EL表达式获取数据会依次从这四个域中找,直到找到为止。

2.JSTL标签

(1)作用:
        使用标签代替JSP页面上的Java代码。
(2)常用的JSTL标签
        ①<c:if>:相当于if;
        ②<c:forEach>:相当于for循环:
                
(3)JSTL的使用流程
        1)导入坐标:
        
        2)在JSP页面上引入JSTL标签库:
        
        3)使用JSTL标签