JSP基础知识总结
来源:互联网 发布:networking 上传数据 编辑:程序博客网 时间:2024/05/17 07:24
一、什么是JSP
网页有两种类型,一种是静态网页,一种是动态网页,动态网页需要用到相关的技术标准,例如ASP,CGI(分享一个关于CGI的博客:CGI是什么),Servlet等,java中常用Servlet和jsp,这里我们来介绍jsp。
利用java语言来书写动态网页有两种方法,一种是利用Servlet技术,一种是利用JSP,JSP全名为Java Server Pages,中文名叫java服务器页面,JSP从根本上来讲也是简化的Servlet,JSP页面经过服务器的处理后,将会生成java类,而这个类又是继承了servlet类,所以从根本上jsp就是servlet。
它和静态的网页区别在于它内嵌了java代码,可以进行逻辑判断、循环和调取数据库资料等操作,jsp文件的后缀为.jsp,因为利用了java语言,和java一样,具有跨平台特性。
二、JSP基础语法
1、静态数据
静态数据指html的标记语言,例如<head></head>、<body></body>、<span></span>等。也成为JSP模版元素,它定义了网页的基本骨架,即定义了页面的结构和外观。html相关的语法可以查看w3cschool,链接:HTML教程2、JSP脚本元素
(1)JSP声明脚本
<%! 代码内容 %>利用<%%>括住并有 ! 号在代码前端。
<%! int age = 21; String name = "Z-HaiSome"; public void myName(){ System.out.println("my name is "+Z-HaiSome+" ,I'm "+age+" years old");}%>在下面的普通脚本中就可以调用这的方法。
(2)JSP普通脚本
<% JSP脚本语句; %><%%>内可以写java的基础语法,和java一致。如
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%><!DOCTYPE html><html><head><title>Test</title><head><body><% int i = 10; while(i>=1){ i = i-1;%> <h1>JSP基础语法</h1><% }%></body></html>上面的例子中有两段普通脚本,都用<%%>括住,两段之间有html的标签,这段例子的作用是循环输出“JSP基础语法”这一个句子。在脚本语句之间书写的HTML标签会被当成String语句参与。在servlet里可以看出,HTML的句子都是通过out.write()方法输出的,将这段jsp放在Tomcat 的webapps\ROOT文件夹中,命名为Test.jsp,访问网页后,在Tomcat的work\Catalina\localhost\ROOT\org\apache\jsp文件夹中可以找到Test_jsp.java文件,在这个java文件的_jspService方法中可以看到HTML的输出:
(3)JSP表达式
<%= 表达式%>如:
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%><!DOCTYPE html><html><head><title>Test</title><head><body><%="JSP基础总结"%><%String name = "Z-HaiSome";%><h1>我的名字是:<%=name%></h1></body></html>浏览器输出结果为
3、JSP指令元素
JSP 指令(directive)用来设置整个JSP页面相关的属性,影响由 JSP 页面生成的 servlet 的整体结构,如网页的编码方式和脚本语言。相关的语法如<%@ directive attribute="value" %>
指令 描述
- <%@ page ... %> 定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
- <%@ include ... %> 包含其他文件
- <%@ taglib ... %> 引入标签库的定义
(1)page指令为当前页面提供相关说明
page 指令可以定义下列属性:import、contentType、pageEncoding、session、isELIgnored(只限 JSP 2.0)、buffer、autoFlush、info、errorPage、isErrorPage、isThreadSafe、language 和 extends。
例如:
<%@page language="java" import="java.sql.*" pageEncoding="utf-8"%>这里设置页面语言为java,导入数据库包,页面编码方式为utf-8。
import 是 page 的属性中惟一允许在同一文档中多次出现的属性,page指令可以出现在代码的任何地方,但是为了方便理解代码,一般放在首行。
(2)include指令引入其他的JSP页面
include可引入其它JSP页面,JSP引擎将把这引入的JSP和当前的JSP翻译成一个servlet,include指令引入也称之为静态引入。
语法为
<%@ include file="relativeURL"%>
其中的file属性用于指定被引入文件的路径。路径以“/”开头,表示代表当前web应用。
例如:
创建一个Test1.jsp,用Notepad++打开,设置为使用UTF-8编码
<%@page language="java" pageEncoding="utf-8"%><!DOCTYPE html><html><head><title>测试1</title></head><body></br>测试1的内容<%@ include file="/Test2.jsp"%></body></html>
创建一个Test2.jsp,设置为使用UTF-8编码
<%@page language="java" pageEncoding="utf-8"%></br>测试2的内容
两个文件放在Tomcat中webapps的ROOT内,打开浏览器,输入http://localhost:8080/Test1.jsp并进入(记得先开启Tomcat)
可以得到页面为
注意这里inclued的作用是将Test1.jsp和Test2.jsp合起来形成一个.java文件,最后编译为一个.class文件,而不是生成两个java文件再进行调用。
(3)taglib定义一个标签库以及自定义标签的前缀
<%@ taglib uri="uri" prefix="prefixOfTag" %> //是uri不是url哦
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix ="bean" %> <%@ taglib uri= "http://struts.apache.org/tags-logic" prefix ="logic" %>在自定义标签库中,我们可以把复杂的业务逻辑功能都封装在标签库中了。而不必在jsp中写具体的代码。这样,jsp代码与java编码能力不必强制耦合在一起。
4、JSP动作元素
<jsp:action_name attribute="value" />
JSP规范定义了一系列的标准动作,它用JSP作为前缀,可用的标准动作元素如下:
Include指令和Include动作的比较:
- 指令执行速度相对较快,灵活性较差(只编译一个文件,但是一旦有一个文件发生变化,两个文件都要重新编译)
- 动作执行速度相对较慢,灵活性较高
- 在使用时,如果是静态页面,则使用Include指令;如果是动态页面,则使用Include动作。
include动作和include指令的区别可以看看其他博客:include动作和include指令的区别
这里我们举个例子,新建两个文件在webapps的Test文件夹中,命名为index.jsp和include.jsp
index.jsp输入以下代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><title>include动作测试</title></head><body>现在的时间是:<jsp:include page="include.jsp" flush="true"/></body></html>
include.jsp输入以下代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%= (new java.util.Date()).toLocaleString()%>
在浏览器中通过Tomcat打开index.jsp,可以看到如下页面:
- Jsp基础知识总结.
- Jsp基础知识总结
- 【JavaWeb】基础知识总结 JSP
- JSP基础知识总结
- jsp基础知识总结
- 【JavaWeb】基础知识总结02 JSP
- JSP基础知识
- JSP基础知识
- JSP基础知识
- JSP基础知识
- JSP基础知识
- JSP基础知识
- jsp基础知识
- Jsp基础知识
- JSP基础知识
- jsp基础知识
- JSP基础知识
- JSP基础知识
- CCF 201609-2 火车购票
- notepad++ 的"进化"之路(emmet、expoler、jstool)
- 88. Merge Sorted Array (合并有序数组)
- github clone 分支的命令
- IE6不支持opacity半透明 BUG的解决方法
- JSP基础知识总结
- Python 中copy与deepcopy的比较
- C++之封装篇:拷贝构造函数
- android中自定义监听
- 浅谈Android BLE编程
- java继承与组合
- Browsersync
- 100. Same Tree (判断二叉树是否相等)
- MySQL开发规范与使用技巧总结