JSP的详细教程

在这里插入图片描述


前言

在之前学习Servlet时,服务端通过Servlet响应客户端页面,有什么不足之处?
  • 开发方式麻烦:继承父类、覆盖方法、配置Web.xml或注解
  • 代码修改麻烦:重新编译、部署、重启服务
  • 显示方式麻烦:获取流、使用println(“”);逐行打印
  • 协同开发麻烦:UI负责美化页面,程序员负责编写代码。UI不懂Java,程序员又不能将所有前端页面的内容通过流输出

提示:以下是本篇文章正文内容,下面案例可供参考

一、JSP(Java Server Pages)

1.1概念

简化的Servlet设计,在HTML标签中嵌套Java代码,用以高效开发Web应用的动态网页

1.2作用

替换显示页面部分的Servlet(使用*.jsp文件替换XxxJSP.java)
就是显示网页的,和HTML有什么区别?就是我们的jsp页面可以嵌套java代码
可以和Servlet完美的契合

二、JSP开发【重点】

2.1创建JSP

在web目录下新建*.jsp文件(与WEB_INF平级)

2.1.1 JSP编写java代码

<%--
  Created by IntelliJ IDEA.
  User: Mriacles21
  Date: 2021/9/18
  Time: 18:01
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>This is my first page</title>
</head>
<body>
    <%=new java.util.Date()%>
</body>
</html>

使用<%= %>标签编写Java代码在页面中打印当前系统时间

2.1.2 访问JSP

在浏览器输入http://ip:port/项目路径/资源名称
我的是:http://localhost:8080/day44_xkh_war_exploded/example.jsp
在这里插入图片描述

2.2JSP与Servlet

关系:

JSP文件在容器中会转换成Servlet执行
JSP是对Servlet的一种高级封装。本质还是Servlet

区别:

与Servlet相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句

在这里插入图片描述

2.3JSP实现原理

Tomcat会将xxx.jsp转换成Java代码,进而编译成.class文件运行,最终将运行结果通过response响应给客户端
在这里插入图片描述

2.3.1 JSP.java源文件存放目录

使用IDEA开发工具,Tomcat编译后的JSP文件(Xxx_jsp.class和Xxx_jsp.java)的存放地点

C:\用户\账户名\.IntelliJIdea2019.1\system\tomcat\项目名称\work\Catalina\localhost\应用上下文\org\apache\jsp

三、JSP与HTML集成开发【重点】

3.1语法

脚本可以编写java语句、变量、方法或表达式

3.1.1 java代码块

语法:<%Java代码块%>

<%@ page import="java.util.Scanner" %><%--
  Created by IntelliJ IDEA.
  User: Mriacles21
  Date: 2021/9/18
  Time: 18:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
Hello World!<br>
<%--<% %>中编写java代码块可以成功--%>

    <%--  jsp 界面输出  --%>
    <%

    out.print("out.println: hello jsp");
    %>
    <%--  控制台输出  --%>
    <%
        System.out.println("System.out.println:hello jsp");
    %>
    <%-- java代码--%>
    <%
        Scanner scanner = new Scanner(System.in);
        System.out.println("a");
        int a = 10;
        System.out.println(a);
    %>

</body>
</html>

经验:普通脚本可以使用所有的Java语法,除了定义函数。
注意:脚本与脚本之间不可以嵌套,脚本与HTML标签不可嵌套

3.1.2 声明

语法:<%!定义变量、函数%>

<%--
  Created by IntelliJ IDEA.
  User: Mriacles21
  Date: 2021/9/18
  Time: 19:25
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%!
        int b = 20;
        
        public void play(){//声明方法的时候要带!
            System.out.println("play....");
        }
        public int m1(){
            return 12;
        }
    %>

<%--    输出打印变量b--%>
    <%=b%>
<%--    调用方法--%>
    <%
        play();//这个是通过方法的名字来调用上面已经声明好的方法
        int i = m1();
        System.out.println(i);
    %>
<%--    如果声明脚本中的函数具有返回值,可以使用输出脚本调用<%= %>>--%>
    <%=m1()%>
<%--这个是jsp注释--%>
<!--html注释-->
</body>
</html>

注意:声明脚本中声明的变量是全局变量。
声明脚本中的内容必须在普通脚本<% %>中调用
如果声明脚本中的函数具有返回值,可以使用输出脚本调用<%= %>

3.1.3 输出

语法:<%=java表达式 %>

表达式输出a: <%=a%>

表达式输出data:<%=new Date()%>

表达式输出a + b : <%=add(1,2)%>

经验:输出脚本可以输出带有返回值的函数
注意:输出脚本中不能加;

3.2JSP注释

JSP注释主要有两个作用:为脚本代码作注释以及HTML内容注释

3.2.1 语法规则

语法 描述
<%-- 注释 --%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译,效率高点
<! – 注释 --> HTML注释,通过浏览器查看网页源代码时可以看见注释内容

3.2.2注释

<%--
  Created by IntelliJ IDEA.
  User: Mriacles21
  Date: 2021/9/18
  Time: 20:33
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>基础教程</title>
</head>
<body>
    <h3>注释</h3>
<%--jsp 的注释 不会输出到编译的html--%>
<!--使用html式  注释可以写入到生成的html中 -->
</body>
</html>

3.3JSP指令

JSP指令用来设置与整个JSP页面相关的属性
放在jsp页面最顶部的东西

指令 描述
<%@page … %> 定义页面的依赖属性,比如脚本语言,error页面,缓存需求等等
<%@include … %> 包含其它文件
<%@taglib … %> 引入标签库的定义,可以是自定义标签

3.3.1 page指令

语法:<%@page attribute1 = “value1” attribute2 = “value2” …%>
Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。

属性 描述
contentType 指定当前JSP页面的MIME类型和字符编码格式
errorPage 指定当JSP页面发生异常时需要转向的错误处理页面
isErrorPage 指定当前页面是否可以作为另一个JSP页面的错误处理页面
import 导入要使用的Java类
language 定义JSP页面所用的脚本语言,默认是Java
session 指定JSP页面是否使用session。默认为true立即创建,false为使用时创建
pageEncoding 指定JSP页面的编码格式

<%@ page contentType=“text/html;charset=UTF-8” language=“java” pageEncoding=“UTF-8” errorPage="error.jsp%>
<%@ page import=“java.util.Scanner” %>

3.3.2include指令

语法:<%@include file=“被包含的JSP路径”>
通过include指令来包含其它文件
被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是当前JSP文件的一部分,会同时编译执行(静态包含)

<%@include file = “hedaer.jsp”%>
<%-- 将其它JSP页面包含到当前页面–%>
<%@include file = “content.jsp”%>
<%@include file = “footer.jsp”%>

注意:可能会有重名的冲突问题,不建议使用。

3.3.3taglib指令【重点】引入第三方jar包的时候使用的

语法:<%@taglib uri = “外部标签库路径” prefix=“前缀” %>
引入JSP的标准标签库
目的是引入第三方的jar一个指令

<%@taglib uri = “http://java.sun.com/jsp/jstl/core” prefix=“c”%>

3.4动作标签(用的不多,但是会有)

语法:<jsp:action_name attribute=“value” />
动作标签指的是JSP页面在运行期间的命令

3.4.1include

语法:<js

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小yu别错过

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

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

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

打赏作者

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

抵扣说明:

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

余额充值