1.jsp概述
  • JSP(全称Java Server Pages),是一种动态网页开发技术。它既可以使用HTML标签来写页面,也可以写Java代码。其本质就是一个Servlet
2.jsp页面的访问过程
  1. 当客户端发送请求访问服务端的index.jsp页面
  2. 服务器内部会把.jsp文件翻译成.java文件
  3. 再编译.java文件生成.class文件,
  4. 由字节码完成请求与响应的操作(其实这个字节码就是Servlet)
    在这里插入图片描述
3.jsp语法

<1>注释

<%--1.这是注释--%>

<2>java代码块

<%
    System.out.println("Hello Jsp");
    out.println("Hello Jsp<br/>");
    String str ="你好";
    out.println(str);
%>

<3>jsp表达式

<%=“Hello”%>相当于 out.println (Hello");

<%="Hello </br>"%>

<4>jsp中的声明(变量或方法)

  • 如果加!代表的是声明的是成员变量
  • 如果不加!代表的是声明的是局部变量
  • 方法体内不能打印输出
<% String s ="123";%>
<%! String s ="abc";%>
<%="局部变量"+s%>
<%="成员变量"+this.s%>
<%!public void method(){
  String m ="def";
} %>

<5>动态获取虚拟路径

<form action="${pageContext.request.contextPath}/LoginServlet" method="post" autocomplete="off">
4.jsp指令

<1>errorPage【界面出现异常则跳转到指定页面】

  • 异常界面代码:
<%--导包--%>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="error.jsp" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%int a =1/0;%>
<%ArrayList<Object> list = new ArrayList<>();%>
</body>
</html>
  • 指定跳转页面【error.jsp】:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isErrorPage="true" %>
<html>
<head>
    <title>页面错误</title>
</head>
<body>
<strong>不好意思,界面出错了<strong/><br/>
    <img src="img/nan.png" width="25%">
</body>
</html>

<2><%@include file=包含的页面%>【在当前页面输入包含页面则可以使用该页面的属性和值】

  • 当前页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--include指令--%>
<%@include file="include.jsp"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%=s%>
</body>
</html>
  • 被包含的页面include.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>被包含的页面</title>
</head>
<body>
<% String s ="Hello";%>
</body>
</html>

<3>taglib指令:可以引入外部标签库【EL表达式(JSTL)】

  • <%@taglib uri=标签库的地址prefix=前缀名称%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
    <title>流程控制</title>
</head>
<style>
    table {
        text-align: center;
    }
</style>
<body>
<%--
<c:if test=""   当条件判断
<c:choose></c:choose>  多条件判断
<c:forEach  遍历

需求1:将学生信息遍历显示到table表格中。
需求2:奇数行数据背景色是pink粉色,偶数行数据背景色是gray灰色。
--%>

<%
    Student student1=new Student("张三",20);
    Student student2=new Student("张益达",22);
    Student student3=new Student("张三",20);

    ArrayList<Student> list=new ArrayList<>();
    list.add(student1);
    list.add(student2);
    list.add(student3);
    request.setAttribute("students",list);
%>
<table align="center" border="1" width="40%" cellspacing="0">
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>年龄</th>
    </tr>
    <c:forEach items="${students}" var="stu" varStatus="statu">
        <c:if test="${statu.count%2==1}">
            <tr align="center" style="background-color: pink">
                <td>${statu.count}</td>
                <td>${stu.name}</td>
                <td>${stu.age}</td>
            </tr>
        </c:if>
        <c:if test="${statu.count%2==0}">
            <tr align="center" style="background-color: gray">
                <td>${statu.count}</td>
                <td>${stu.name}</td>
                <td>${stu.age}</td>
            </tr>
        </c:if>
    </c:forEach>
</table>
</body>
</html>

【多标签可以同时导入,下面为jsp page属性】
在这里插入图片描述

5.jsp四大域对象

在这里插入图片描述

5.MVC模型

<1>JSP的演变

  • 在早期JavaEE开发是没有JSP技术的,只有使用Servlet往浏览器输出HTML标签和内容数据。在Java代码中拼接HTML代码非常痛苦。
  • 后来有了JSP技术,简化了Servlet的开发。可是又延伸出另一个问题,在HTML页面中嵌套了过多的Java代码,不利于阅读和维护。
  • 为了解决Java代码和HTML代码耦合性强的问题,JavaWeb项目开发引入了MVC开发模式,从而把页面展示和业务逻辑分离。采用MVC模式让程序设计更加合理。
    <2>MVC介绍
  • Module(模型层): 模型层用于封装数据(JavaBean对象),和一些业务逻辑处理。
  • Controller(控制层): 它控制着数据的流向
    1.先接受用户的请求数据
    2.将数据交给模型层处理
    3.将处理后的数据交给视图层
  • View(视图层):视图层用于展示数据

在这里插入图片描述

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐