JSP技术能做什么?

一、JSP

编写第一个JSP

目标:掌握JSP文件的编写

1、创建Web项目

创建Java Enterprise,添加Web Application请添加图片描述
设置项目名称与保存位置请添加图片描述
单击【Finish】按钮请添加图片描述

2、修改Artifact名称,重新部署项目

在项目结构窗口里修改Artifact名称请添加图片描述
在服务期配置窗口里,重新部署项目请添加图片描述
切换到【Server】选项卡,设置默认浏览器请添加图片描述

3、创建欢迎JSP页面

在web目录里创建welcome.jsp
请添加图片描述
请添加图片描述
请添加图片描述
注意:由welcome.jsp页面可知,新创建的JSP文件与传统的HTML文件几乎没有什么区别,唯一的区别是默认创建时,页面代码最上方多了一条page指令,并且该文件的后缀名是jsp,而不是html。
修改welcome.jsp请添加图片描述

4、启动服务器,查看结果

启动服务器,访问http://localhost:8080/JSPDemo/welcome.jsp请添加图片描述
注意:welcome.jsp的标签中添加的内容已被显示出来,这说明HTML元素可以被JSP容器解析。实际上,JSP只是在原有的HTML文件中加入了一些具有Java特点的代码,这些称为JSP的语法元素。
课堂练习:修改首页,显示如下图所示请添加图片描述

二、JSP基本语法

JSP页面的基本构成

目标:熟悉JSP的页面的基本构成

1、JSP页面构成

虽然已经创建过JSP文件,但是并未对JSP文件的页面构成进行详细介绍。一个JSP页面可以包括指令标识、HTML代码、JavaScript代码、嵌入的Java代码、注释和JSP动作标识等内容。

2、案例演示 - 显示系统当前时间

创建time_info.jsp页面
请添加图片描述

<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>JSP页面 - 显示系统当前时间</title>
    </head>
    <body>
        <!--JSP脚本元素-->
        <%
            Date date = new Date();
            // year, month, day, hour, minute, second
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");  
            String currentTime = sdf.format(date);
        %>
        <!--JSP表达式元素-->
        <h3 style="text-align: center">系统当前时间:<%= currentTime%></h3>
    </body>
</html>

页面构成说明图
请添加图片描述
启动服务器,访问http://localhost:8080/JSPDemo/time_info.jsp请添加图片描述

JSP脚本元素

1、JSP Scriptlet

案例演示

创建demo01.jsp页面
请添加图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>JSP Scriptlets</title>
    </head>
    <body>
        <%
            int a = 100, b = 150; // 定义两个整型变量
            int sum = a + b; // 计算两个整数之后
            // 利用JSP隐式对象`out`输出结果
            out.print(a + " + " + b + " = " + sum);
        %>
    </body>
</html>

启动服务器,访问http://localhost:8080/JSPDemo/demo01.jsp请添加图片描述

请添加图片描述

案例演示
创建demo02.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>JSP声明标识</title>
    </head>
    <body>
        <%!
            // 定义阶乘函数
            public long factorial(int n) {
                long jc = 1;
                for (int i = 1; i <= n; i++) {
                    jc = jc * i;
                }
                return jc;
            }
        %>
        <%
            // 输出10的阶乘值
            out.println("10! = " + factorial(10));
        %>
    </body>
</html>

启动服务器,访问http://localhost:8080/JSPDemo/demo02.jsp请添加图片描述

案例演示

创建demo03.jsp页面请添加图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>JSP表达式</title>
    </head>
    <body>
        <%!
            int a = 100, b = 150; // 声明两个整型变量
        %>
        sum = <%= a + b%> <!--JSP表达式-->
    </body>
</html>

启动服务器,访问http://localhost:8080/JSPDemo/demo03.jsp请添加图片描述

案例演示

创建demo04.jsp页面
请添加图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>带有JSP表达式的注释</title>
    </head>
    <body>
        <%!
            /**
             * @param a
             * @param b
             * @return a + b
             */
            public int sum(int a, int b) {
                /*
                 * a, b都是形式参数
                 */
                return a + b; // 返回两个整数之和
            }
        %>
        <%
            int a = 100, b = 150; // 定义两个整型变量
            int sum = sum(a, b); // 调用求和函数计算两个整数之和,此处a,b是实际参数
            out.print("sum = " + sum); // 输出求和结果
        %>
    </body>
</html>

启动服务器,访问http://localhost:8080/JSPDemo/demo04.jsp请添加图片描述

)案例演示

创建demo05.jsp页面
请添加图片描述

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>JSP注释</title>
    </head>
    <body>
        <h1>学习JSP元素</h1> <!--HTML注释:一级标题显示-->
        <%= new Date()%> <%--JSP注释:用JSP表达式元素显示当前日期--%>
    </body>
</html>

启动服务器,访问http://localhost:8080/JSPDemo/demo05.jsp请添加图片描述
在打开的页面中点击鼠标右键,在弹出菜单中选择“查看网页源代码“选项请添加图片描述

案例演示

创建demo06.jsp页面

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>动态注释</title>
    </head>
    <body>
        随机数:<%= Math.random() %> <!-- 求随机数,当前日期:<%=new Date()%> -->
    </body>
</html>

启动服务器,访问http://localhost:8080/JSPDemo/demo06.jsp请添加图片描述
在打开的页面中点击鼠标右键,在弹出菜单中选择“查看网页源代码“选项请添加图片描述

案例演示

page指令的常见属性中除了import属性外,其他的属性都只能出现一次,否则会编译失败。
创建错误之后跳转的页面error.jsp请添加图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
    <head>
        <title>错误页面</title>
    </head>
    <body>
        <h3 style="text-align: center">错误信息:<%= exception.getMessage() %></h3>
    </body>
</html>

创建demo07.jsp页面请添加图片描述

<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>JSP页面 - 显示系统时间</title>
    </head>
    <body>
        <!--JSP脚本元素-->
        <%
            Date date = new Date();
            // year, month, day, hour, minute, second
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            String currentTime = sdf.format(date);
        %>
        <!--JSP表达式元素-->
        <h3 style="text-align: center">系统当前时间:<%= currentTime%></h3>
    </body>
</html>

查看页面指令请添加图片描述
上面红框中的代码使用了page指令的language、contentType、pageEncoding和import属性。需要注意的是,page指令对整个页面都有效,而与其书写的位置无关,但是习惯上把page指令写在JSP页面的最前面。

启动服务期,访问http://localhost:8080/JSPDemo/demo07.jsp
请添加图片描述
修改demo07.jsp页面,故意让Java代码犯错请添加图片描述
启动服务期,访问http://localhost:8080/JSPDemo/demo07.jsp,显示系统默认错误页面请添加图片描述
如果demo07.jsp指定错误页面error.jsp请添加图片描述
如果demo07.jsp指定错误页面error.jsp请添加图片描述
如果demo07.jsp指定错误页面error.jsp请添加图片描述

案例演示

创建demo08.jsp页面请添加图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>欢迎页面</title>
    </head>
    <body>
        <h1 style="color: blue; text-align: center">欢迎访问JSP世界~</h1>
        <%@ include file="time_info.jsp"%>
    </body>
</html>

启动服务器,访问http://localhost:8080/JSPDemo/demo08.jsp请添加图片描述
请添加图片描述
启动服务器,访问http://localhost:8080/JSPDemo/demo08.jsp,一样可以显示出被包含页面的内容请添加图片描述

案例演示

在WEB-INF里创建lib目录,添加两个jar包请添加图片描述
将库添加到项目请添加图片描述
单击【Add as Library…】请添加图片描述
单击【OK】按钮请添加图片描述
创建demo09.jsp页面请添加图片描述

<%@ 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>
        <c:set var="message" value="欢迎访问JSP世界~"/>
        <h1 style="text-align: center"><c:out value="${message}"/></h1>
    </body>
</html>

启动服务器,访问http://localhost:8080/JSPDemo/demo09.jsp请添加图片描述
如果不使用JSTL核心标签库,采用JSP代码实现相同功能请添加图片描述
启动服务器,访问http://localhost:8080/JSPDemo/demo09.jsp请添加图片描述

、案例演示

创建demo10.jsp页面请添加图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>被包含的页面</title>
    </head>
    <body style="text-align: center">
        <%
            Thread.sleep(5000); // 线程休眠5秒
        %>
        红豆生南国<br>
        春来发几枝<br>
        愿君多采撷<br>
        此物最相思<br>
    </body>
</html>

创建demo11.jsp页面,引入demo10.jsp页面。demo10.jsp作为被引入的文件,让它暂停5秒钟后再输出内容,这样,可以方便测试jsp:include元素的flush属性。请添加图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>引入被包含的页面</title>
    </head>
    <body>
        <h3 style="text-align: center">相思</h3>
        <jsp:include page="demo10.jsp" flush="true"/>
    </body>
</html>

启动服务器,访问http://localhost:8080/JSPDemo/demo11.jsp,发现浏览器首先会显示demo11.jsp页面中的输出内容,等待5秒后,才会显示demo10.jsp页面的输出内容,说明被引用的资源demo10.jsp在当前JSP页面输出内容后才被调用。
请添加图片描述
demo11.jsp页面最终显示效果请添加图片描述

、案例演示

创建demo12.jsp页面
请添加图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>演示请求转发元素</title>
    </head>
    <body>
        <h1 style="text-align: center">演示请求转发元素</h1>
        <%
            Thread.sleep(5000); // 线程休眠5秒
        %>
        <jsp:forward page="welcome.jsp"/> <!--转发到欢迎页面-->
    </body>
</html>

启动服务器,访问http://localhost:8080/JSPDemo/demo12.jsp,发现浏览器不会显示demo12.jsp页面中的输出内容,等待5秒后才会显示welcome.jsp页面的内容。请添加图片描述
demo12.jsp页面最终显示效果,虽然请求转发到了welcome.jsp页面,但是地址栏依然是demo12.jsp请添加图片描述

案例演示

创建demo13.jsp页面请添加图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>演示out对象的用法</title>
    </head>
    <body>
        <%
            out.println("第1行:Web开发很有意思~<br />");
            response.getWriter().println("第2行:我们来学Web开发~<br />");
        %>
    </body>
</html>

启动服务器,访问http://localhost:8080/JSPDemo/demo13.jsp请添加图片描述
请添加图片描述
启动服务器,访问http://localhost:8080/JSPDemo/demo13.jsp请添加图片描述

案例演示

创建demo14.jsp页面请添加图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>演示pageContext对象</title>
    </head>
    <body>
        <%
            // 获取out对象
            JspWriter myOut = pageContext.getOut();
            // 设置page范围内属性
            pageContext.setAttribute("message", "学习Java基础编程", pageContext.PAGE_SCOPE);
            // 设置request范围内属性
            request.setAttribute("message", "学习Java Web开发");
            // 设置session范围内属性
            session.setAttribute("message", "学习Spring Boot框架");
            // 设置application范围内属性
            application.setAttribute("message", "学习大数据实时处理");
            // 获取page范围属性
            String pageMessage = (String)pageContext.getAttribute("message", pageContext.PAGE_SCOPE);
            // 获取request范围属性
            String requestMessage = (String)pageContext.getAttribute("message", pageContext.REQUEST_SCOPE);
            // 获取session范围属性
            String sessionMessage = (String)pageContext.getAttribute("message", pageContext.SESSION_SCOPE);
            // 获取application范围属性
            String applicationMessage = (String)pageContext.getAttribute("message", pageContext.APPLICATION_SCOPE);
        %>
        <%
            myOut.println("page范围消息:" + pageMessage + "<br />");
            myOut.println("request范围消息:" + requestMessage + "<br />");
            myOut.println("session范围消息:" + sessionMessage + "<br />");
            myOut.println("application范围消息:" + applicationMessage + "<br />");
        %>
    </body>
</html>

启动服务器,访问http://localhost:8080/JSPDemo/demo14.jsp请添加图片描述

案例演示

查看前面创建的error.jsp页面
请添加图片描述
创建demo15.jsp页面请添加图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java"
    pageEncoding="UTF-8" errorPage="error.jsp" %>
<html>
    <head>
        <title>演示页面异常</title>÷
    </head>
    <body>
        <%
            int a = 10;
            int b = 0;
        %>
        <%
            out.print(a + " ÷ " + b + " = " + (a / b));  // 产生异常
        %>
    </body>
</html>

启动服务器,访问http://localhost:8080/JSPDemo/demo15.jsp请添加图片描述

猜你喜欢

转载自blog.csdn.net/qq_64505257/article/details/130982859