JSP

第一章 入门

1.1 概念

  • Java Server Page:Java服务器端页面技术。
  • 可以将jsp理解为一个特殊的页面,其中既可以定义HTML标签,也可以定义Java代码。

1.2 jsp原理

JSP_第1张图片

 

 

  • jsp本质上就是一个Servlet程序。

 

第二章 JSP基本语法

2.1 指令

2.1.1 作用

  • 用于配置JSP页面,导入资源文件。

2.1.2 格式

<%@ 指令名称 键=“值”  键=“值” %>

2.1.3 分类

  • page指令。
  • include指令。
  • taglib指令。

2.2 注释

2.2.1 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,控制器。获取用户的输入、调用模型、将数据交给视图进行展示。

JSP_第2张图片

 

第四章 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;
    }
}
View Code
  • 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>jstlgroupId>
            <artifactId>jstlartifactId>
            <version>1.2version>
        dependency>
        <dependency>
            <groupId>taglibsgroupId>
            <artifactId>standardartifactId>
            <version>1.1.2version>
        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>

 

你可能感兴趣的:(JSP)