IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【Jsp】第六课 Jsp简介和初步使用 -> 正文阅读

[Java知识库]【Jsp】第六课 Jsp简介和初步使用

Jsp简介

1.Java?Server Page(JSP)是由Sun公司倡导、许多公司参与共同创建的一种动态网页技术标准。

2.Jsp在传统的网页HTML文件中加入java程序片段(scriptlet)和JSP标签就构成了JSP网页。

3.Jsp的主要作用是简化了java服务器程序的开发。

4.Jsp本质上就是一个servlet,服务器会根据jsp产生一个java文件和一个class文件,文件保留在tomcat的work目录下。

了解完Jsp页面的执行流程之后,我们来操作代码,需要分析一下,为什么说Jsp就是Servlet,我们做一个详细的研究!!!

这里我们创建一个项目,分别创建一个Servlet类,类名为One,创建一个Jsp文件,文件名为index.jsp.

在One这个类的doget方法中我们编写以下代码,往浏览器发送一个具备html代码格式的标题。

/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		PrintWriter pw=response.getWriter();
		pw.append("<h1>我是标题一</h1>");
}

?在index.jsp文件中,我们也想达到一样的效果,只需要添加以下代码即可

<body>
<h1>我是Jsp的标题一</h1>
</body>

我们通过简单对比,显然使用jsp方式编写html页面方便简单。那项目最终是运行在服务器上的,jsp文件在运行之后会先被翻译成java文件,再编译成class文件进行执行,我们现在需要找到被翻译之后的java文件,研究一下。如果初学者忘记怎么tomcat按照到哪个路径下去了,可以点击window--》preferences

查看tomcat的安装路径,从tomcat文件夹路径下,找到work文件夹,然后找到当前运行的项目,并打开,找到被翻译后的java文件,index_jsp.java。

?jsp文件中,我们编写的html代码其实最终还是与Servlet中一样被作为String字符串的方式输出给浏览器,只不过将tomcat服务器帮我们把繁琐的java代码进行封装,而不再需要我们开发者大量的操作java代码而已。并通过查看源代码发现:

那么很明显可以看出Servlet和Jsp之间的关系,显然Jsp被翻译以后其实就是Servlet的子类,与One的写法基本是一致。那么也就是意味着,我们在Servlet中运用和学习的技术在Jsp文件中都是可以如法炮制的。

接下来,Jsp文件中不仅仅可以编写html代码,Jsp文件中可以编写多种语言的混合使用:

Jsp中脚本元素的用法?

?我们知道Servlet是java类,是可以进行定义全局变量,定义方法,并且也能编写大量的可执行的代码,包括判断,循环,创建对象等等操作,那么我们根据上面的分析得出Jsp和Servlet是一样的,那也就意味着我们也能在jsp页面中定义变量,定义方法,做java代码的执行操作。只不过需要特殊的符号进行包裹:

定义全局变量,方法:

?将java代码中的结果数据转换成文本输出在浏览器上:

?做if语句的判断操作,这里因为需要html语言和java代码进行混合使用,这里需要将java代码进行分段操作:

?(1)jsp脚本片段中可以定义变量、编写语句,不能定义方法。

?(2)jsp脚本片段中只能出现java代码。

?(3)jsp脚本片段中的java代码必须严格遵循java语法,例如,在执行语句后必须用分号(;)结束。

?(4)在一个jsp页面中可以有多个脚本片段,在两个或多个脚本片段之间可以嵌入文本、HTML标记和其他jsp元素。

?(5)多个脚本片段中的代码可以互相访问。

?(6)单个脚本片段可以是不完整的,但是多个脚本片段组合之后必须是完整的java语句。

?Jsp注释

} JSP注释分为两类:
} 显式注释
} HTML注释可以包含在JSP文件中,这些注释将作为响应的一部分发回浏览器。由于它们是注释,所以不生成任何可见输出,但是最终用户通过浏览器的“查看”菜单的“源文件”选项看到这些注释
} 隐式注释
} JSP隐式注释只能通过原始的JSP文件来查看,当JSP作为响应返回到客户端时,客户端是看不到该注释的,JSP容器会忽略注释的内容

?Jsp指令

} JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理jsp页面中的其余部分
} 常用的 JSP 指令有三种:
? include 指令
? page 指令
? taglib 指令
} 语法:<%@ 指令 属性名="值" %>
} 如果一个指令有多个属性,可以写在一起,也可以分开来写

page指令

} page指令用于定义jsp页面的各种属性,无论page指令出现在jsp页面中的什么地方,它作用的都是整个jsp页面
}
} 为了保持程序的可读性和遵循良好的编程习惯,page指令最好是放在整个jsp页面的起始位置
}
} 重要属性:
? contentType
? pageEncoding
? import

?在我们创建的Jsp页面的最顶部就已经自动生成了page指令的代码:

那么我们继续简单运用一下其他的属性:

import属性用于导入需要调用的其他java类的包:

?使用快捷方式导入使用的java类后,会发现文件的最上面多出几行代码:

?isErrorPage属性和errorPage属性:

在我们编写代码的过程中经常会出现代码报错,浏览器上出现一大片报错信息:

那么为什么我们日常生活中访问的网站怎么就没有出现报错页面呢,难道别人开发的网站就真的那么牛逼,能做到没有任何Bug,并不是的,是因为别人对错误信息做了处理,创建了专门显示错误信息的友好提示页面而已,那么我们也来完成一个!

创建一个two.jsp页面:

<%@ page language="java" errorPage="error.jsp" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	int a=100/0;
%>
</body>
</html>

接下来创建error.jsp页面:

<%@ page language="java" isErrorPage="true" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>亲,你的代码出现除数为0的异常 ,请仔细检查你的代码,是否存在被除数除以除数而导致的页面报错!!!</p>
</body>
</html>

?再次运行,你会发现,不会再显示报错信息,而是跳转了一个新的页面告知用户产生错误的原因。

include指令

}静态包含,就是将其他页面或者servlet的内容包含进来,一起进行编译,生成一个java文件。

}语法:

}? <%@ include file="路径" %>

创建jsp文件three.jsp文件:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div style="width: 900px;height: 800px;
	background-color: green; margin: auto;">
		<!-- 头部 -->
		<%@ include file="head.jsp" %>
		<!-- 中部 -->
		<%@ include file="center.jsp" %>
		<!-- 底部 -->
		<%@ include file="foot.jsp" %>
	</div>
</body>
</html>

?创建head.jsp,center.jsp,foot.jsp文件,并使用include指令将多个文件包含在一个jsp文件中,作为其中的一部分,并在翻译的时候,产生一个java文件。

head.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div style="width: 900px;height: 200px;background-color: red;"></div>
</body>
</html>

center.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div style="width: 900px;height: 400px;background-color: pink;"></div>
</body>
</html>

foot.jsp?

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div style="width: 900px;height: 200px;background-color: blue;"></div>
</body>
</html>

运行项目后,使用浏览器访问three.jsp页面,可以看到其他三个页面在一个页面中的效果:

taglib指令

} 导入标签库(在后面章节学习)
}
} 语法:
? <%@ taglib prefix="前缀名" uri="名称空间" %>
}
} 例如:
? <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> ?
}

本章节内容,到这里结束。?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 21:29:54  更:2021-11-14 21:30:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:19:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码