【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"%>  
}

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

猜你喜欢

转载自blog.csdn.net/u010321564/article/details/121305620
今日推荐