JSP_1

JSP_1

      1.JSP是什么?

<%@page import="java.util.Date"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>当前系统时间</title>
</head>
<body>
	<center>
		<%
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM--dd HH:mm:ss");
			String time = sdf.format(new Date());
		%>
		<h1>
			当前系统时间:<%out.println(time); %>
		</h1>
	</center>
</body>
</html>

            JSP--Java Server Pages[java服务器页面]

            运行在服务器上,包含java语言代码,动态网页就是JSP

            在这里我们所说的动态网页,不是值网页中的元素形状/位置变化,而是值网页中元素的内容发生变化。

      2.JSP页面中的元素?

元素名称

表示

作用

静态元素

html标签

提供页面的显示效果

jsp指令

<%@指令名称  属性1=”属性值1”......%>

例如:

<%@ page

language="java"

contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

常用page指令 / include指令 / taglib指令

在jsp页面中声明的一些由浏览器执行的附加信息

Java

代码片段

<%  java程序 %>

例如:<% out.write(datetime); %>

嵌套在html中的java程序【提供动态数据】

jsp表达式

<%= 表达式/变量/方法 %>

例如:<%= datetime %>

计算某种表达式的结果,或者变量/方法的结果。

jsp声明

<%! 定义的变量/方法/类 %>

例如:

<%!

String name="zhangsan";

public  String  getInfo(){

return "这是一个jsp声明";

}

public class  Student{

public  String  getStudentInfo(){

return "这是一个java类中的实例方法";

}

}

%>

在jsp页面中定义一些自己需要的java变量/方法/类

jsp动作

<jsp:动作名称 动作属性1="属性值1"...../>

例如:

<jsp:include page="test.txt"/>

将一些常用的java程序封装,方便调用

JSP注释

 

 <%--  --%>

<!--  --> html静态元素注释

<%-- --%> jsp动态元素的注释

            2.1 指令

                  格式:<%@指令名称  属性1=”属性值1”......%>

                  作用:在jsp页面中声明的一些由浏览器执行的附加信息.

                  常用指令:page指令 / include指令 / taglib指令

                  1.page指令---常见属性

                        1.language="java"---指定语言

                        2.contentType="text/html; charset=utf-8":设置当前jsp页面的内容类型

                        3.pageEncoding="utf-8":设置当前jsp页面的字符编码

                        4.import="java.util.Date":导入java类库的依赖包【可以出现多个】

                        5.isELIgnored="false"---是否启用EL表达式语言 “${表达式}”,false可用,true不可以

                        6.isErrorPage="false"---是否是一个错误页面,如果是那么就可以使用exception的JSP内置对象

            例如:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8" isELIgnored="false" isErrorPage="true"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>page指令</title>
</head>
<body>
	<h1>page指令</h1>
	<h1>格式:&lt;%@page 属性1="属性值1"...&gt;</h1>
	<h1>作用:在jsp页面中声明一些由浏览器执行的附加信息</h1>
	<h1>位置:通常在jsp页面的首行</h1>
	<h1>常用属性:</h1>
	<h1>language="java":指定编程语言[固定java]</h1>
	<h1>contentType="text/html";charset="utf-8":设置当前jsp页面的内容类型</h1>
	<h1>pageEncoding="utf-8":设置当前jsp页面的字符编码</h1>
	<h1>import="java.util.Date":打入java程序包</h1>
	<h2>1.同一个page指令中可以出现多次</h2>
	<h2>例如:&lt;%@import="java.util.Date" import="java.text.SimpleDateFormat"%&gt;</h2>
	<h2>2.不同的page指令中可以出现一次/多次</h2>
	<h2>&lt;%@page import="java.util.Date"%&gt;</h2>
	<h2>&lt;%@page import="java.text.SimpleDateFormat"%&gt;</h2>
	<h1>isELIgnored="false":是否启用EL表达式语言【${表达式}】false--启用【默认值】,true--禁用</h1>
	<h2>测试EL表达式100+12.3:${100+12.3}</h2>
	<h1>idErrorPage="false":表示是否是一个错误页面,如果是那么就可以使用exception的JSP内置对象</h1>
</body>
</html>

                 2.include指令[包含其他的资源进入本jsp页面]---常见属性

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
	<h1>include指令</h1>
	<h1>格式:&lt;%@include 属性1="属性值1"...%&gt;</h1>
	<h1>作用:包含其他的资源【文本/html/jsp】进入本jsp页面</h1>
	<h1>位置:通常出现在body中</h1>
	<h1>常用属性</h1>
	<h1>file="被包含的文件路径":被包含近入本jsp页面的文件</h1>
	<h2>包含一个 html网页</h2>
	<!--<jsp:include page=""></jsp:include>-->
	<%@include file="test.html" %>
	<h2>包含一个jsp网页</h2>
	<%@include file="test1.jsp" %>
</body>
</html>

            2.2Java代码片段

                  格式:<%  java程序 %>

                  作用:嵌套在html中的java程序【提供动态数据】

            例如:

<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>java代码片段</title>
</head>
<body>
	<%
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String time = sdf.format(new Date());
	%>
	<h1><%=time %></h1>
</body>
</html>

            2.3jsp表达式

                  格式:<%= 表达式/变量/方法 %>

                  作用:计算某种表达式的结果,或者变量/方法的结果。

            2.4jsp声明

                  格式:<%! 类/变量/方法 %>

                  作用:在jsp页面中定义一些自己需要的java变量/方法/类

            例如:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>JSP表达式/jsp声明</title>
</head>
<body>
	<h1>算数表达式-100+11.5=<%= 100+12.5 %></h1>
	<h2>关系表达式-100>12=<%= 100>12%></h2>
	<h1>逻辑表达式-100>12||100<12=<%=100>12||100<12 %></h1>
	<%--  --%>
	<%!
		String name = "zhangsan";
		public String getinfo(){
			return "hello,word";
		}
		public class Student{
			public String getStudentName(){
				return "网星软件";
			}
		}
	%>
	<h1>测试jsp声明中的变量name==<%=name %></h1>
	<h1>测试jsp声明中的方法getinfo==<%=getinfo() %></h1>
	<h1>测试jsp声明中的类==<%=new Student().getStudentName() %></h1>
	<hr>
	<h1>JSP声明语句:&lt;%!声明语句%&gt;通常声明全局变量、常量、方法、类</h1>
	<h1>JSP Scriptlet:&lt;%java代码%&gt;,其中可包含局部变量、java语句</h1>
	<h1>JSP表达式:&lt;%=java 代码%&gt;</h1>
</body>
</html>

            2.5jsp动作

                  格式:<jsp:动作名称 动作属性.....></jsp:动作名称>或者

                           <jsp:动作名称 动作属性1="属性值1".../>

                  作用:将一些常用的java程序封装,方便调用

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>include动作</title>
</head>
<body>
	<h1>include动作</h1>
	<h1>格式:&lt;jsp:include 动作属性...&gt;&lt;/jsp:include&gt;</h1>
	<h1>作用:包含其他的资源【文本/html/jsp】进入本jsp页面</h1>
	<h1>位置:通常出现在body中</h1>
	<h1>常用属性</h1>
	<h1>page="被包含的文件路径":被包含进本jsp页面的文件</h1>
	<h2>包含一个html网页</h2>
	<jsp:include page="test.html"></jsp:include>
	<h2>包含一个jsp网页</h2>
	<jsp:include page="test1.jsp"/>
	<h2>测试能否包含css文件</h2>
	<jsp:include page="test.css"/>
</body>
</html>

      include指令[<%@include file=”” %>]与include动作[<jsp:include page=""></jsp:include>]有什么区别?

 

include指令[<%@include file=”” %>]

include动作[<jsp:include page=""></jsp:include>]

语法格式

<%@include file=””%>

<jsp:include page=””>

发生作用的时间

页面转换期间

请求期间

包含的内容

文件的实际内容

页面的输出

转换成的Servlet

主页面和包含页面转换为一个Servlet

主页面和包含页面转换为独立的Servlet

编译时间

较慢——资源必须被解析

较快

执行时间

稍快

较慢——每次资源必须被解析

include指令:

include动作:

            forward的jsp动作

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>forward动作</title>
</head>
<body>
	<h1>forward动作</h1>
	<h1>格式:&lt;jsp:forward 动作属性...&gt;&lt;/jsp:forward&gt;</h1>
	<h1>作用:跳转到其他的资源【servlet/html/jsp】</h1>
	<h1>位置:通常出现在body中</h1>
	<h1>常用属性:</h1>
	<h1>page="目标文件路径":跳转到的目标文件</h1>
	<!-- 测试跳转到html -->
	<%--<jsp:forward page="test.html"></jsp:forward> --%>
	<!-- 测试跳转到jsp -->
	<%--<jsp:forward page="test1.jsp"></jsp:forward>--%>
	<!-- 测试跳转到servlet -->
	<jsp:forward page="/test"></jsp:forward>
</body>
</html>

      3.JSP页面的执行过程?

            1.jsp本质上就是一个Servlet程序。

            Jsp在执行的时候会被转换成Servlet程序。

            保存位置

            F:\20200728\javawebworkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\TestJSP1\org\apache\jsp

public final class test5_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent,
                 org.apache.jasper.runtime.JspSourceImports {
org.apache.jasper.runtime.HttpJspBase继承过javax.servlet.http.HttpServlet

      当我们请求一个jsp页面的时候,服务器收到jsp页面的请求以后,会先将被访问的jsp文件转换成Servlet文件,继续编译转换以后的Servlet文件得到Servlet文件对应的字节码文件,接着执行这个编译以后的字节码文件,将运行结果封装到响应对象中,返回给客户端浏览器。

      缺点:第一次访问jsp页面会比较慢一些。

      Servlet与JSP的区别?

 

Servlet

JSP

自定义标签

不提供自定义标签

提供了自定义标签

定义

Servlet是一个Java类,它按照请求-响应模型扩展了承载应用程序的服务器的功能。

JSP是包含静态和动态数据的文本文档

轻松编码

Java程序

网页脚本语言

实作

单个Servlet文件包含业务逻辑和表示逻辑

JSP中使用JavaBeans将业务逻辑与表示逻辑分离

修改

修改Java Servlet需要大量时间

JSP修改很快。

MVC模式

Servlet在MVC模式中扮演控制器角色

JSP充当视图,即用于显示输出

Java Servlet中使用的任何软件包都必须导入到Servlet的顶部

JSP没有强制性的条件,在该程序包中,可以在顶部,中间或底部的任何位置导入软件包

性能

Servlet以预编译形式出现[快]

JSP生命周期中的第一步是将JSP转换为Java代码,然后进行编译[慢]

在客户端运行JavaScript

Java servlet不支持。

JSP支持在客户端运行JavaScript以实现某些功能

 

会话管理

默认情况下禁用Java Servlet中的会话管理。 需要显式启用它。

JSP中,会话管理是自动启用的

支持请求

Java Servlet可以接受所有类型的协议请求

JSP仅接受HTTP请求

用例

需要大量数据操作和处理时,Java Servlet最适合使用

不需要大量数据处理时,首选JSP

猜你喜欢

转载自blog.csdn.net/m0_49935332/article/details/115187270