jsp介绍

概念JSP(Java Server Pages),它是基于Servlet的扩展技术。其作用是简化JavaWeb应用中动态页
面的开发。
使用JSP技术替换原有的Servlet版View,可以更方便的编辑出更好看的网页。
Servlet实现的View在进行动态页面开发时存在的问题:

1. 开发繁琐,必须实现Servlet接口,重写service方法。
2. 一旦修改,必须要重新编译、部署、测试。
3. 不利于修改页面的样式,不利于编辑内容丰富的页面。
4. 不利于前后端的协作。

1 第一个JSP程序的开发[重点]

1.打开IDEA如图所示的界面,点击Create New Project:在这里插入图片描述
2.选择Empty Project,点击Next。如图所示:
在这里插入图片描述
3.填写项目名称和点击Finish即可,如图所示:
在这里插入图片描述
4.选择Module点击+,如图所示:在这里插入图片描述
5.选择Java,点击Next。如图所示:在这里插入图片描述
6.填写项目名称和点击Finish,如图所示:
在这里插入图片描述
7.选择项目。右键点击如图所示:在这里插入图片描述
8.新建一个web项目,如图所示:在这里插入图片描述
9. 在web目录中新建jsp,如图所示:在这里插入图片描述
10.命名为 hello.jsp,如图所示:在这里插入图片描述
11.编写的代码如下:

<%--
    JSP Java Server Page Java服务端页面
    作用:替代原有的Servlet版本的View,因为Servlet构建HTML页面太复杂。
--%>
<%@ page contentType="text/html;charset=UTF-8"  pageEncoding="UTF-8" isELIgnored="false" %>
<html>
<head>
    <title>第一个JSP程序</title>
</head>
<body>
    <!-- 显示当前系统时间 -->
    <%= new java.util.Date() %>
</body>
</html>

如图所示:在这里插入图片描述
12.启动服务器访问jsp

jsp访问方式:http://ip地址://jsp路径 
示例:http://localhost:8080/hello.jsp

如图所示:在这里插入图片描述

2 Servlet和JSP开发对比

对照表,如图所示:在这里插入图片描述
注意:

1.Jsp编译后自动生成Servlet程序(.java),如果内部有html标签,自动将标签放入输出语句中。
2.生成位置:C:\Users\用户名\.IntelliJIdea版本号 \system\tomcat\Tomcatxxx\work\Catalina\localhost\项目名\org\apache\jsp

3 JSP脚本[重点]

JSP的组成部分:HTML标签和Java代码。
JSP中的Java代码必须写在脚本中,所以又称JSP脚本。
1.输出脚本
作用:与System.out.print()作用一致,将结果输出到网页中。
语法如下:

<%= //要输出的内容 %>

演示的代码如下:

<%--
    JSP Java Server Page Java服务端页面
    作用:替代原有的Servlet版本的View,因为Servlet构建HTML页面太复杂。
--%>
<%@ page contentType="text/html;charset=UTF-8"  pageEncoding="UTF-8" isELIgnored="false" %>
<html>
<head>
    <title>第一个JSP程序</title>
</head>
<body>
    <%= 1+2 %> <br>
    <%= "hello"+" world"%> <br>
</body>
</html>

如图所示:
在这里插入图片描述
注意:

1. 输出的内容不要写;号,与在System.out.print()中写代码一样。
2. 脚本中的内容会自动放入print方法中。

2.普通脚本
作用:可以定义变量或执行Java代码。
语法如下:

<% //Java代码 %>

演示的代码如下:

<%--
    JSP Java Server Page Java服务端页面
    作用:替代原有的Servlet版本的View,因为Servlet构建HTML页面太复杂。
--%>
<%@ page contentType="text/html;charset=UTF-8"  pageEncoding="UTF-8" isELIgnored="false" %>
<html>
<head>
    <title>第一个JSP程序</title>
</head>
<body>
<%
    // 定义变量
    int a = 10;
    int b = 20;
    // 向控制台输出
    System.out.println(a+b);
%>
<!-- 向页面输出必须使用输出脚本配合 -->
<%= a + b%>
<hr>
<%
    // 调用方法
    String str = "hello world";
    str = str.toUpperCase();
%>
<%= str%>
<hr>
<!-- 可以配合输出脚本向html标签中输出数据 -->
<%
    String baidu = "https://www.baidu.com";
%>
<a href='<%= baidu%>'>百度一下</a>
<hr>
<!-- 不可以嵌套html标签或其它脚本-->
<!-- 99 乘法表-->
<%
    // 先在控制台输出
    for(int i = 1; i < 10; i++){
        for(int j = 1; j <= i ; j++){
            System.out.print(i + "*" + j + "=" + (i * j) + " ");
        }
        System.out.println();
    }
%>
       <%--向页面输出,只需要使用输出脚本替换输出语句,使用br标签代替换行打印即可--%>
    <% for(int i = 1; i <= 9; i++){
        for(int j = 1; j <= i ; j++){%>
            <%--*号为绿色 =号为红色 <form color ="red"></form> --%>
            <%=j%>
            <font color="green">*</font>
            <%=i%>
            <font color="red">=</font>
            <%=(j*i)%>&nbsp;&nbsp;
            <%}%>
            <br/>
        <%}%>
</body>
</html>

如图所示:在这里插入图片描述
注意:普通脚本中的代码最后会生成到service方法中。
3.声明脚本[了解]
作用:可以定义方法和属性(变量)。
语法如下:

<%! //定义方法或变量 %>

演示的代码如下:

<%--
    JSP Java Server Page Java服务端页面
    作用:替代原有的Servlet版本的View,因为Servlet构建HTML页面太复杂。
--%>
<%@ page contentType="text/html;charset=UTF-8"  pageEncoding="UTF-8" isELIgnored="false" %>
<html>
<head>
    <title>第一个JSP程序</title>
</head>
<body>
    <%!
        public int sun(int a, int b){
            return a + b;
        }
        int a = 10;
        int b = 20;
    %>
    <%=sun(10,20)%>
    <%--<% sun(i,j);%>
    <%= sun(i,j)%>--%>
</body>
</html>

如图所示:在这里插入图片描述
注意:声明脚本中的代码会生成在类以内方法以外的位置。
4.注释脚本[了解]
在jsp中可以使用html中的注释,jsp也有自己的注释方式!
演示的代码如下:

<%--
    JSP Java Server Page Java服务端页面
    作用:替代原有的Servlet版本的View,因为Servlet构建HTML页面太复杂。
--%>
<%@ page contentType="text/html;charset=UTF-8"  pageEncoding="UTF-8" isELIgnored="false" %>
<html>
<head>
    <title>第一个JSP程序</title>
</head>
<body>
    <!-- html中的注释 -->
    <%-- jsp中的注释 --%>
    <!--
    <%
        System.out.println("html注释");
    %>
        <%= 1+2%>
    html注释中脚本仍会执行,只是不显示在页面
    -->
    <%--
    jsp注释中的内容,不会执行。也不会显示在页面
    <%
        System.out.println("jsp注释");
    %>
        <%= 1+2 %>
    --%>
</body>
</html>

如图所示:在这里插入图片描述

4 JSP工作原理

JSP并不能直接运行,jsp会先翻译成Servlet程序(.java),再编译java为class文件,最终运行class生成动态页面。
如图所示:
在这里插入图片描述
编译过程:

1.当浏览器第1次访问jsp时,jsp会先翻译成java,然后编译成class,由class文件运行响应结果。
2.如果浏览器2次访问jsp时,直接使用之前编译的class

注意:一旦修改jsp源码,再次访问,Tomcat还需要重新翻译并编译。

5 指令

概念:用来设置和整个JSP网页相关的属性,比如网页的编解码集和session的开启等等。
语法如下:

<%@ 指令 属性名="属性值" 属性名2="属性值2" %>

1.page指令
作用:用来设置和整个JSP网页相关的属性。
语法如下:

<%@ page 属性名="属性值" 属性名2="属性值2" %>

常见属性:在这里插入图片描述
在这里插入图片描述
2.taglib指令
作用:引入外部提供的标签库。
语法如下:

<%@ taglib uri="标签库的唯一标识" prefix="前缀" %>
  1. include 指令(静态包含)
    作用:在当前页面包含其它页面,以达到复用页面的效果。
    语法如下:
<%@ include file="其它页面路径" %>

演示:将jsp中重复的内容单独抽取。
在这里插入图片描述
在jsp中引入其他jsp,如图所示:在这里插入图片描述
编写header.jsp的代码如下:

<%@ page pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>欢迎使用本公司系统</h1>
</body>
</html>

如图所示:在这里插入图片描述
编写fooder.jsp的代码如下:

<%@ page import="java.util.Date" %>
<%@ page pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
        公司名称:&copy;<%= new Date()%>
</body>
</html>

如图所示:在这里插入图片描述
编写hello.jsp的代码如下:

<%--
    JSP Java Server Page Java服务端页面
    作用:替代原有的Servlet版本的View,因为Servlet构建HTML页面太复杂。
--%>
<%@ page pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"  isELIgnored="false" %>
<html>
<head>
    <title>第一个JSP程序</title>
</head>
<body>
    <%--引入header.jsp--%>
    <%@include file="header.jsp"%>
    <%--引入fooder.jsp--%>
    <%@include file="fooder.jsp"%>
</body>
</html>

如图所示:在这里插入图片描述

6 动作

1.include动作[重点](动态包含)
作用:在当前页面包含其它页面,作用和include指令类似。
语法如下:

<jsp:include page="其它页面路径"/>

如图所示:在这里插入图片描述
包含指令(静态包含)和包含动作(动态包含)的区别:
在这里插入图片描述
静态包含:在翻译阶段将3个jsp翻译成1个java文件,最终编译后得到包含3部分内容的class文件。
动态包含:在翻译阶段将3个jsp翻译成3个java文件,最终编译成3个class文件,index会自动向被包含的jsp发送请求,将显示结果包含其中总结:静态包含,包含代码,先包含后编译;动态包含,包含jsp响应结果,先编译后包含。
在这里插入图片描述
2。forward动作[了解]
作用:从当前jsp页面请求转发到另外一个jsp页面。
语法如下:

<jsp:forward page="另外一个页面的路径"/

如图所示:
在这里插入图片描述

7 JSP中内置对象与作用域

作用:在jsp脚本中,不需要新建,可以直接使用的对象。
九个内置对象,如图所示:在这里插入图片描述
pageContext获取8个隐含对象,如图所示:在这里插入图片描述
pageContext可以操作其它3个作用域。

<%--使用pageContext向4个作用域中保存数据--%>
<% pageContext.setAttribute("name","pageContext"); %>
<% pageContext.setAttribute("name", "request",PageContext.REQUEST_SCOPE); %>
<% pageContext.setAttribute("name", "session",PageContext.SESSION_SCOPE); %>
<% pageContext.setAttribute("name", "application",PageContext.APPLICATION_SCOPE); %>
<%--使用pageContext从4个作用域中获取数据--%>
<%= pageContext.getAttribute("name")%>
<%= pageContext.getAttribute("name",PageContext.REQUEST_SCOPE)%>
<%= pageContext.getAttribute("name",PageContext.SESSION_SCOPE)%>
<%= pageContext.getAttribute("name",PageContext.APPLICATION_SCOPE)%

8 使用JSP替换原有Servlet视图

原有项目中的视图有静态的HTML和动态的View型Servlet,在学习了JSP技术后就应该使用功能更强大的JSP替换原有的视图。
1.静态html页面的替换
替换步骤:

1.直接将html页面内容复制到jsp中即可。
2.需要项目名的地方使用 <%= request.getContextPath() %>替换。

比如:在这里插入图片描述
2.动态Servlet(View)替换为jsp
替换步骤:

1.在jsp中通过普通脚本获取作用域中的数据。
2.直接书写html标签,需要回显数据的地方使用输出脚本。

比如:在这里插入图片描述
注意:如果以/person/showAllPersonView.jsp的方式访问jsp,jsp应放在web/person目录中。
ideaweb项目运行,如图所示:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学无止路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值