JSP基本语法、指令、动作元素详解
在前⼀篇中,我们简单的介绍了JSP的概念和运⾏原理,今天就⼀起学习下JSP的⽤法。对于JSP中的HTML、CSS、JavaScript等,我们在前⾯就已经讲过了,这⾥就不在赘述了,我们主要讲解JSP相⽐于HTML⽂件多出来的功能。
1.JSP脚本元素(Java)
在JSP⽂件中可以插⼊Java代码,这些代码的编写需要遵循⼀定的语法规范。JSP脚本元素主要有如下三种类型:JSP Scriptlets:Java 代码块,形如<% java代码(变量、⽅法、表达式等) %>,需要注意的是,这⾥声明的变量是局部变量;
JSP声明语句:形如<%! 定义的变量或⽅法等 %>,这⾥声明的变量和⽅法都是全局的,即对整个JSP页⾯有效;并且单个声明中的Java 语句可以是不完整的,但是多个声明组合后的结果必须是完整的Java语句;
JSP表达式:形如<%= expression %>,⽤于将程序数据输出到客户端。
下⾯我们通过⼀个例⼦来简单的讲解下三种脚本元素的使⽤,代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Java 脚本元素⽰例</title>
</head>
<%-- JSP注释,定义两个成员变量 --%>
<%! int a=1,b=2; %>
<!-- HTML注释,定义⼀个成员⽅法 -->
<%!
springcloud框架核心组件
public String sayHello(String name){
return "Hello," + name;
}
%>
<body>
<%
out.println("a变量的值:" + a + "<br />");
out.println("b变量的值:" + b + "<br />");
//调⽤sayHello⽅法
out.println(sayHello("lizishu"));
%>
<h1>a+b=<%= a+b %></h1>
</body>
</html>
页⾯运⾏结果如下图所⽰,我们可以看到,返回给浏览器的页⾯结果,在JSP声明语句中定义的变量和⽅法,在整个JSP页⾯中都可使⽤。对于JSP中的注释有两种,分别为<!-- Html注释 -->、<%-- JSP注释 --%>,我们通过下图也可以看到,对于JSP注释,不会输出客户端。
2.JSP指令
为了设置JSP页⾯中的⼀些信息,Sun公司提供了JSP指令。JSP指令⽬前来讲有三种,分别为page、include、taglib。
2.1 page指令
p age指令就如字⾯的含义,主要⽤于描述和页⾯相关的信息。page指令⼀般位于JSP页⾯的开头部分,⼀个JSP页⾯可以有多个page指令,但是在所有page指令中,除了import属性,每⼀种属性却只能出现⼀次,否则会编译失败。
p age指令的具体语法格式如下:
<%@ page 属性名1="属性值1" 属性名2="属性值2" ... %>
其中的属性如下表所⽰:
下⾯我们通过⼀个例⼦来看下page指令的⽤法,这⾥的UserService可以参考前⾯的:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
html下载手机版
<%@ page import="java.util.*,web.service.UserService" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>page 指令⽰例</title>
</head>
<body>
<%
//获取UserService的⽰例
UserService service = Instance();
/
/调⽤service中的传⽅法
out.stSelectUserById(1) + "<br />");
小舍得电视剧免费完整版无删减%>
</body>
</html>
2.2 include指令
当我们开发⼀个⽹站时,许多页⾯之间是有许多相同之处的,⽐如菜单栏、底部的footer(实在不到中⽂对应的名词),这部分代码其实每个页⾯上都是相同的,如果我们在每页⾯上都来上这么⼀段代码,那么我们的项⽬不仅会出现许多重复的代码,当你想修改菜单时,也会变得⾮常复杂,每个页⾯都要进⾏修改。
那咋整?没关系,我们有include指令。include指令可以将指定的⽂件和当前的JSP⽂件融合在⼀起,并且⼀起转换成⼀个Servlet。不过需要注意的是,两个⽂件都需要符合JSP的语法规则,例如两个⽂件不能定义相同的全局变量。这⾥需要注意的是,include指令的这种包含⽅式属于静态的,也就上⾯讲的,在转换成servlet时就将页⾯包含进来了。
i nclude指令的具体语法格式如下:
<%@ include file="指定⽂件所在位置" %>
i nclude执⾏相⽐于page指令,简单的多,其只有⼀个file属性,⽤与执⾏包含到JSP页⾯中的⽂件位置。
下⾯我们通过⼀个例⼦来看下include指令的⽤法,这⾥我们创建menu.jsp、include.jsp页⾯,其代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>菜单页⾯</title>
</head>
<body>
<!-- 这个菜单页⾯见笑了 -->
<h1>这是菜单页⾯中的标题1</h1>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
jsp中文全称<title>include 指令⽰例</title>
</head>
<body>
<%@page include file="./menu.jsp" %>
<h
</body>
</html>
我们在Chrome中运⾏include.jsp,其结果如下:
2.3 taglib指令
t aglib指令⽤于指定JSP页⾯所使⽤的标签库,通过该指令可以在JSP页⾯中使⽤标签库中的标签。
t aglib指令的具体语法格式如下:
<%@ taglib uri="标签库URI" prefix="标签前缀" %>
其中的uri属性指定标签库位置的uri,可以是相对路径或者是绝对路径;prefix属性指定使⽤此标签库的前缀。
下⾯我们通过⼀个例⼦来看下taglib指令的⽤法,我们使⽤jstl核⼼标签库,页⾯代码如下:
html功能<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="java.sun/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
西地那非使用说明
<c:out value="你好,欢迎使⽤taglib指令" />
</body>
</html>
这⾥要使⽤jstl标签库,需要在项⽬中添加两个jar包,。
3.JSP动作元素
J SP动作元素是⽤来控制JSP的⾏为,执⾏⼀些常⽤的JSP页⾯动作。
3.1 <jsp:include>
<jsp:include>⽤于在页⾯运⾏时引⼊⼀个静态或动态的页⾯,也称为动态包含。此处和include指令的区别,就是当容器把JSP页⾯转换成Java⽂件时,并不会把JSP页⾯中动作指令include指定的⽂件与原JSP页⾯合并成⼀个新页⾯,⽽是在JSP运⾏时才会将这个⽂件的输出结果包含进来。其语法格式如下:
<jsp:include page="relativeURL" flush="true|false" %>
其中的page属性指定被包含资源的相对路径;flush属性⽤与指定是否将当前页⾯的输出内容刷新到客户端,默认值为false。
<jsp:include>的使⽤没什么好讲的,可以参考include指令的使⽤,但是两者之间还是存在着区别的,主要如下:
<jsp:include>引⼊的资源和当前JSP页⾯是两个彼此独⽴的执⾏实体;⽽include指令只能引⼊遵循JSP格式的⽂件,两个⽂件合并到⼀起同样需要遵守JSP语法。举个例⼦,<jsp:include>如果引⼊的是JSP页⾯,两个页⾯可以定义相同的全局变量、⽅法。
<jsp:include>引⼊的资源在运⾏时才会包含,⽽且包含的仅是运⾏结果(如JSP页⾯的输出结果);include指令元素是在编译时期就引⼊所包含的⽂件,包含的是源码;
<jsp:include>标签原理类似于,包含的页⾯⽆法改变响应状态码和设置响应头;include指令没有这⽅便的限制。
<jsp:include>与include指令能实现相同的功能,具体如何使⽤,还要开发⼈员⾃⾏选择。
3.2 <jsp:forward>
<jsp:forward>动作元素将当前请求转发到其他的web资源(HTML页⾯、JSP页⾯、Servlet等),功能类似如。其语法格式如下:
<jsp:forward page="relativeURL" %>
下⾯我们通过⼀个例⼦来看下<jsp:forward>的使⽤,页⾯代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>forward 动作元素⽰例</title>
</head>
<body>
<jsp:forward page="menu.jsp">
<h1>这是当前页⾯的H1</h1>
</body>
</html>
其中的menu.jsp是在include指令的例⼦中创建的。页⾯运⾏结果如下:
4.⼩结
本⽂简单的讲解了JSP中的基本语法、指令和动作元素,其实动作元素现在不是很推荐使⽤,在MVC架构中,JSP更多的是承担⼀个视图层的功能,重定向等逻辑控制,page指令import Java代码都让JSP中的功能耦合性太⾼。因此这些技术在使⽤时,还需要多思考。
参考阅读:
1.
2.
3.
⼜到了分隔线以下,本⽂到此就结束了,本⽂内容全部都是由博主⾃⼰进⾏整理并结合⾃⾝的理解进⾏总结,如果有什么错误,还请批评指正。
J ava web这⼀专栏会是⼀个系列博客,喜欢的话可以持续关注,如果本⽂对你有所帮助,还请还请点赞、评论加关注。
有任何疑问,可以评论区留⾔。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论