第一章 入门
1.1 概念
- Java Server Page:Java服务器端页面技术。
- 可以将jsp理解为一个特殊的页面,其中既可以定义HTML标签,也可以定义Java代码。
1.2 jsp原理
- jsp本质上就是一个Servlet程序。
第二章 JSP基本语法
2.1 指令
2.1.1 作用
- 用于配置JSP页面,导入资源文件。
2.1.2 格式
<%@ 指令名称 键=“值” 键=“值” %>
2.1.3 分类
- page指令。
- include指令。
- taglib指令。
2.2 注释
2.2.1 HTML注释
- 示例:
<!-- HTML注释:只能注释HTML代码片段 -->
2.2.2 jsp注释
- 示例:
<%-- jsp注释:可以注释所有 --%>
2.3 内置对象
2.3.1 概述
- 在jsp页面中不需要创建,直接使用的对象。
2.3.2 内置对象
- pageContext
- request
- session
- application
- response
- page
- out
- config
- exception
第三章 MVC
3.1 JSP的演变历史
- 早期只有Servlet,只能使用response输出标签数据,非常麻烦。
- 后来有了jsp,简化了Servlet的开发,但是如果过度使用,在jsp中既写大量的Java代码,又写HTML标签,造成难于维护,难于分工协作。
- 再后来,Javaweb开发借鉴MVC开发模式,使得程序的设计更加合理性。
3.2 MVC详解
- M:model,模型。完成具体的业务操作,如:查询数据库、封装对象。
- V:view,视图。展示数据。
- C:Controller,控制器。获取用户的输入、调用模型、将数据交给视图进行展示。
第四章 EL表达式
4.1 EL表达式的概述
- Expression Language,表达式语言。
- 可以用来替换和简化jsp页面中Java代码的编写。
- 语法:${表达式}。
4.2 EL表达式的功能
- 运算。
- 获取值。
4.3 EL表达式获取值
- EL表达式只能从域中获取值。
- 语法:
${域名称.键名称}
从指定的域中获取指定键的指
域名称:
pageScope-->pageContext
requestScope-->request
sessionScope-->session
applicationScope-->application
- 示例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>EL表达式获取值</title> </head> <body> <% request.setAttribute("msg","hello"); session.setAttribute("msg","world"); %> ${requestScope.msg} ${sessionScope.msg} </body> </html>
- 语法:
${键名}
表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
- 示例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>EL表达式获取值</title> </head> <body> <% request.setAttribute("msg","hello"); session.setAttribute("msg","world"); %> ${msg} </body> </html>
- 语法:获取对象中的值
${域名称.键名.属性名}
本质上会去调用对象的getter方法
- 示例:
- User.java
package com.sunxiaping.domain; import java.io.Serializable; import java.util.Date; public class User implements Serializable { private String name; private Integer age; private Date birthday; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
- index.jsp
<%@ page import="com.sunxiaping.domain.User" %> <%@ page import="java.util.Date" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>EL表达式获取值</title> </head> <body> <% User user = new User(); user.setName("zhangsan"); user.setAge(12); user.setBirthday(new Date()); request.setAttribute("user",user); %> ${user.name} <br/> ${user.age} <br/> ${user.birthday} </body> </html>
- 示例:获取List集合中的对象
${域名称.键名[索引]}
- 示例:
<%@ page import="com.sunxiaping.domain.User" %> <%@ page import="java.util.Date" %> <%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>EL表达式获取值</title> </head> <body> <% User user = new User(); user.setName("zhangsan"); user.setAge(12); user.setBirthday(new Date()); List<User> list = new ArrayList<>(); list.add(user); request.setAttribute("list",list); %> ${list[0].name}<br/> ${list[0].age}<br/> ${list[0].birthday}<br/> </body> </html>
- 语法:获取Map集合中的对象
${域名称.键名}
- 示例:
<%@ page import="com.sunxiaping.domain.User" %> <%@ page import="java.util.Date" %> <%@ page import="java.util.HashMap" %> <%@ page import="java.util.Map" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>EL表达式获取值</title> </head> <body> <% User user = new User(); user.setName("zhangsan"); user.setAge(12); user.setBirthday(new Date()); Map<String,User> map = new HashMap<>(); map.put("user",user); request.setAttribute("map",map); %> ${map.user.name}<br/> ${map.user.age}<br/> ${map.user.birthday}<br/> </body> </html>
第五章 JSTL
5.1 maven坐标
<dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency>
5.2 概述
- JavaServer Page Tag Library,JSP标准标签库。
- 是由Apache组织提供的开源的免费的JSP标签。
5.3 作用
- 用于简化和替换JSP页面上的Java代码。
5.4 应用
- 示例:if标签相当于Java中的if语句
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>JSTL标准标签库</title> </head> <body> <% request.setAttribute("flag",false); %> <c:if test="${flag}"> 对啊 </c:if> <c:if test="${!flag}"> 错啦 </c:if> </body> </html>
- 示例:choose标签相当于Java中的switch
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>JSTL标准标签库</title> </head> <body> <% request.setAttribute("gender", 2); %> <c:choose> <c:when test="${gender == 1}"> 男生 </c:when> <c:otherwise> 女生 </c:otherwise> </c:choose> </body> </html>
- 示例:forEach标签相当于Java中的foreach循环
<%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>JSTL标准标签库</title> </head> <body> <% List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); request.setAttribute("list",list); %> <c:forEach items="${list}" var="i"> ${i} </c:forEach> </body> </html>