概述
JSP全称:Java Server Pages,是一个Java服务端页面
JSP在java项目中取代html静态页面,让页面中的代码实现动态变动。一种动态的网页技术,其中既可以定义 HTML、JS、CSS等静态内容,还可以定义 Java代码的动态内容
JSP=HTML+CSS+JAVA
JSP的作用:实现前后端代码分离,简化开发,避免了在Servlet中直接输出HTML标签,也要避免在JSP中直接书写JAVA代码。
JSP和HTML区别
从页面的内容来看,JSP比HTML多了一条语句
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
JSP可以写JSTL标签,让页面实现动态变化。
两者都可以使用css,js等静态内容。
JSP写JAVA
<%...%>:内容会直接放到_jspService()方法之中
<%=…%>:内容会放到out.print()中,作为out.print()的参数
<%!…%>:内容会放到_jspService()方法之外,被类直接包含
![](https://i-blog.csdnimg.cn/blog_migrate/73291eb5f458c586cd4d0bcd1de0b6f5.png)
EL表达式
Expression Language 表达式语言,用于简化 JSP页面内的Java代码,它的主要功能是获取数据
语法:${expression},列如:${model.id},获取域中存储的key为brands的数据(这里的key指的是浏览器中属性部分)
JavaWeb中的四大域对象:
page:当前页面有效
request:当前请求有效
session:当前会话有效
application:当前应用有效
el表达式获取数据,会依次从这4个域中寻找,直到找到为止
JSTL标签库
JSP标准标签库(Jsp Standarded Tag Library) ,使用标签取代JSP页面上的Java代码
![](https://i-blog.csdnimg.cn/blog_migrate/c768f3b100d5b6935472df97d6bb9265.png)
<c:forEach items="${expression}" var="model"></c:forEach>
expression:EL表达式 var中随意赋值,这里的循环相当于java中的增强for循环,EL表达式相当于增强for循环:后---------- var相当于:前
<c:if test="${flag ==1}">男</c:if>
<c:if test="${flag ==2}">女</c:if> test相当于条件判断。
使用JSTL标签 要在JSP页面头部加入
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
JSP缺点
由于 JSP页面内,既可以定义 HTML 标签,又可以定义 Java代码,造成了以下问题:
书写麻烦:特别是复杂的页面
阅读麻烦
复杂度高:运行需要依赖于各种环境,JRE,JSP容器,JavaEE…
占内存和磁盘:JSP会自动生成.java和.class文件占磁盘,运行的是.class文件占内存
调试困难:出错后,需要找到自动生成的.java文件进行调试
不利于团队协作:前端人员不会 Java,后端人员不精 HTML