概述

JSP是java 服务器页面,它运行在服务器端,本质上就是一个serlvet,产生的java文件和class保留在tomcat的word目录下.



JSP主要作用是将内容的生成与页面相分离。

JSP脚本

JSP脚本就是在JSP编写Java代码。常见的三种脚本

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
/* Java代码 */
System.out.print("JSP脚本");
int i = 10;
%> <!-- 转变成Servlet的代码
/* Java代码 */
System.out.print("JSP脚本");
int i = 10; --> <%=
/* 后面不要添加封号 */
i
%> <!-- 转变成Servlet的代码
out.print(i); --> <%!
/* 声明成员 */
String name = "jake";
%> <!-- 转变成Servlet的代码
public final class Hello_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent { /* 声明成员 */
String name = "jake";
} -->

El表达式达式语言

从jsp2.0开始,jsp的内置表达式语言,用来替代<%=..%>。常见的用法: 获取域中数据、执行运算、获取常见的web对象、调用java的方法。格式:${el表达式}

获取简单数据

格式:${pageScope | requestScope | sessionScope | applicationScope.属性名}

开发经常简写:

${属性名}:依次从pageContext,request,session,application查找指定属性,若查找到返回值,结束该次查找

若查找不到,返回""

获取容器数据

  • 获取数组中的数据

    • ${域中的名称[index]}
  • 获取list中的数据
    • ${域中的名称[index]}
  • 获取map中的数据
    • ${域中的名称.键名}

JavaBean导航

首先javabean规范:

1. 必须是一个公共的具体的类 public class

2. 提供私有的字段 private String id;//id称之为字

3. 提供公共访问字段的方法 get|set|is方法

4. 提供一个无参的构造器

5. 一般实现序列化接口 serializable

获取JavaBean数据的el格式: ${域中javabean名称.bean属性}

El内置对象

JSP共有9大内置对象,对应的数据类型如下:

JSP内置对象 类型
out JspWriter
request HttpServletRequest
response HttpServletResponse
session HttpSession
exception Throwable
page Servlet(this)
config ServletConfig
application ServletContext
pageContext PageContext

其中有application、session、request、pageContext域对象的生命周期为:整个项目、一次会话、一次请求、一个页面。

pageContext作用可以操作其它域对象与获取其它内置对象

<%
// 操作其它内置域对象
/* request.setAttribute("username", "jake"); */
pageContext.setAttribute("rKey", "rValue", pageContext.REQUEST_SCOPE); // 获取其内置对象
pageContext.getRequest();
pageContext.getResponse();
%>

JSP动作标签

请求转发

<!-- 请求转发 age="内部路径" -->
<jsp:forward page="/index.jsp"></jsp:forward>

注意:请求转发输入的路径是内部路径。

动态包含

动态包含:将被包含页面或者servlet的运行结果包含到当前页面中.

<jsp:include page="内部路径"></jsp:include>

JSP指令

JSP指令主要是用来声明jsp页面的一些属性和动作。格式:<%@指令名称 属性="值" 属性="值"%>。JSP指令主要分为三大类

  • page:主要声明jsp页面的一些属性
  • include:静态包含.
  • taglib:导入标签库

    注意:指令可以放在任意位置,一般都放在jsp页面最上面.

page



其中创建的属性:

  • contentType

    • 设置响应流的编码,及通知浏览器用什么编码打开.设置文件的mimetype
  • pageEncoding
    • 设置页面的编码
  • 导入所需要的包
  • contentType和pageEncoding联系:
    • 若两者都出现的时候,各自使用各自的编码
    • 若只出现一者,两个都使用出现的这个编码
    • 若两者都不出现,使用服务器默认的编码 tomcat7使用的iso-8859-1

page属性

language:当前jsp页面里面可以嵌套的语言
buffer:设置jsp页面的流的缓冲区的大小
autoFlush:是否自动刷新
extends:声明当前jsp的页面继承于那个类.必须继承的是httpservlet 及其子类
session:设置jsp页面是否可以使用session内置对象
isELIgnored:是否忽略el表达式
errorPage:当前jsp页面出现异常的时候要跳转到的jsp页面
isErrorPage:当前jsp页面是否是一个错误页面
若值为true,可以使用jsp页面的一个内置对象 exception

include指令

静态包含,就是将其他页面或者servlet的内容包含进来,一起进行编译运行.生成一个java文件.

格式:<%@include file="相对路径或者是内部路径" %>

taglib指令

taglib指令用于导入标签库。

格式:<%@taglib prefix="前缀名" uri="名称空间" %>

jstl

jsp标准的标签库语言,apache的用来替代java脚本。通常我们是使用其中的核心类库core。

在使用需要先导入jar包(jstl.jar和standard.jar)。其次在导入标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

c:if

格式:<c:if test="${el表达式}">满足的时候输出的内容</c:if>

<c:if test="${3>4 }">
3>4;
</c:if> <c:if test="${3<4 }">
3<4;
</c:if>

c:forEach

<c:forEach begin="1" end="10" step="1" var="i">
${i }
</c:forEach> <c:forEach begin="1" end="10" step="1" var="i" varStatus="vs">
<!-- 记录循环的次数 -->
${vs.count }
<!-- 当前遍历的内容 -->
${vs.current }
</c:forEach> <%
// List
ArrayList list = new ArrayList();
list.add("jake");
list.add("rose");
list.add("jerry");
request.setAttribute("list", list);
%>
<c:forEach items="${requestScope.list }" var="i">
${i }
</c:forEach>

最新文章

  1. CSS笔记总结
  2. SharePoint 2013 REST 服务使用简介
  3. Linux系统被入侵后处理经历
  4. 锋利的jQuery-3--用js给多选的checkbox或者select赋值
  5. cookie&amp;session&amp;servletContext
  6. Unity Diffuse Metal Shader Mod
  7. scheme corotuine
  8. sql Servers数据库基础
  9. ubuntu系统下mysql重置密码和修改密码操作
  10. 32. Longest Valid Parentheses最长有效括号
  11. 关于CSS中的float可能出现的小问题
  12. Nginx IP 白名单设置
  13. ABAP-关于COMMIT WORK 和COMMIT WORK AND WAIT
  14. Java的HashMap
  15. python函数:基础函数调用整理
  16. python map对象
  17. Java学习笔记(5)----使用正则表达式解决Google Code Jam Qualification2009赛题 Alien Language
  18. # 2018高考&amp;自主招生 - 游记
  19. Matlab Command Window 进度提示
  20. 解决maven工程无法创建src/main/java包名的方法

热门文章

  1. NX二次开发-UFUN获取当前所在的模块UF_ask_application_module
  2. 李宏毅机器学习课程---4、Gradient Descent (如何优化 )
  3. spring boot+vue.js发送post时一直415,swagger却很正常
  4. Linux下同一目录内文件和目录为什么不能同名?
  5. ActiveMQ任意文件写入漏洞(CVE-2016-3088)
  6. Python匹马行天下之初识python!
  7. palindrome 回文 /// Manacher算法
  8. POJ--Lost Cows (线段树)
  9. Maven IntelliJ IDEA设置
  10. Spring Cloud高级视频