JSP(Java Server Pages),Java服务器页面,本质上也是一个servlet。
1、JSP语法
1. 声明标签 <%!变量或者方法声明%>
2. 表达式标签 <%= 表达式%> 在页面上显示的效果
3. 程序代码标签 <%java代码%> 页面上动态展示内容
2、JSP原理
客户端发送请求,服务器根据路径找到对应的.jsp文件,将.jsp文件翻译成.java文件,然后编译成.class文件。jsp文件中的HTML代码通过流的方式写回浏览器,所以在jsp中展示出了HTML代码。
3、JSP内置对象
1. request对象 *
所属类型:javax.servlet.HttpServletRequest
作用域:一次请求
2. response对象 *
所属类型:javax.servlet.HttpServletResponse
作用域:JSP页面内有效
3. session对象 *
所属类型:HttpSession
作用域:一次会话
session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为“Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。
4. application对象 *
所属类型:类似ServletContext
作用域:直到服务器关闭
区别:
request:单次请求
session:浏览器访问期间(会话期间)
application:服务器启动期间,所存的数据可以跨浏览器
5. out对象
out 对象用于在Web浏览器内输出信息
6. pageContext对象
pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用pageContext对象。
7. config对象
config 对象的主要作用是取得服务器的配置信息。
//将image路径转换成服务器端的路径
String url= config.getServletContext().getRealPath("/image");
8. page对象
page 对象代表JSP本身,只有在JSP页面内才是合法的。类似于this。
9. exception对象
exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。 在可能出错的页面设置 errorPage="xxx.jsp",出现错误跳转到指定页面。
4、JSP指令
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4e58a1fa0451e385c0d16ef42c2bf874.png#pic_center)
5、状态码
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/415ec8ca0e894331365f171667a39c6b.png#pic_center)
6、EL表达式
语法:${需要展示信息的名字}
注意:当表达式没有指定变量或者对象的范围时,那么容器会依次从pageContext—>request—>session—>application中查找该变量或对象
作用域:
pageScope对象,用于获取当前页面的属性值
requestScope对象,用于获取请求范围的属性值
sessionScope对象,用于获取会话范围的属性值
applicationScope对象,用于获取程序范围的属性值
语法:${requestScope.key}
操作符:
算术型:+ 、-、 * /(div) 除 、 %(mod) 余数
逻辑型:and、&&、or、||、!、not
关系型:==、eq、!=、ne、、gt、<=、le、>=、ge。可以与其他值进行比较,或与布尔型、字符串型、整型或浮点型文字进行比较。
Empty:Empty操作符是一个前缀操作符用于判断一个值是否为null或者为empty
String str = "";
${empty str} 返回值为true;
条件型:A ?B :C。根据 A 赋值的结果来赋值 B 或 C。
7、JSTL
是一个JSP标签集合,它封装了JSP应用的通用核心功能。
语法:<%@ taglib prefix=”页面使用的名称” uri=”功能范围的路径”%>
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e1caf34d959645a18bc0d07d77a1a17e.png#pic_center)
<c:if>
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9e5ac1838dab2224fb3f7cee8ae3d926.png#pic_center)
<c:forEach>
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/709394fa25299a37b43bc37e107efaef.png#pic_center)