JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计.JSP 技术是以 Java 语言作为脚本语言的,JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。JSP开发的WEB应用可以跨平台使用,既可以运行在 Linux 上也能运行在 Windows 上。
JSP脚本表达式(expression)用于将程序数据输出到客户端。
JSP脚本表达式用于将程序数据输出到客户端
语法:<%= 变量或者表达式%> 结尾不能有分号
<%= new Date()%>
工作原理:JSP引擎在翻译脚本表达式的时候,会将程序数据转为字符串,并在合适的位置调用out.println()来输出
语法:
<%
多行Java代码(可以定义变量,编写语句(for ,if,while),不可以编写函数)
%>
<%
int sum=0;
for(int i=0;i<100;i++){
sum+=i;
}
response.getWriter().println(sum);
%>
注意事项:
JSP脚本片断中只能出现java代码,不能出现其它模板元素, JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中。
JSP脚本片断中的Java代码必须严格遵循Java语法,例如,每执行语句后面必须用分号(;)结束。
在一个JSP页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素。
多个脚本片段组合:
<%
for (int i=1; i<5; i++)
{
%>
哈哈哈哈哈
<%
}
%>
jsp页面中的所有代码默认的被翻译到servlet的service的方法中,但是jsp声明中的代码会被翻译到Servlet的_jspService方法的外面
语法:
<%!
Java代码(可以定义静态代码块,方法,成员变量)
%>
<%!
static {
System.out.println("静态代码块");
}
private String name="lss";
public String getName(){
return name;
}
%>
在JSP页面中,可以使用JSP指令来指定页面的有关输出方式、引用包、加载文件、缓冲区、出错处理等相关设置,主要作用是用来于JSP引擎之间进行沟通。
常用指令:
--page指令:
page指令用于定义JSP页面的各种属性,无论page指令出现在JSP页面中的什么地方,它作用的都是整个JSP页面,为了保持程序的可读性和遵循良好的编程习惯,page指令最好是放在整个JSP页面的起始位置
--Include指令
include指令用于引入其它JSP页面,如果使用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP翻译成一个servlet。所以include指令引入通常也称之为静态引入
--taglib指令
taglib指令的功能是使用标签库定义新的自定义标签,在JSP页面中启用定制行为。
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.Date" pageEncoding="utf-8" %>
<%@ include file="index.jsp"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core-rt" %>//这个之后会使用到
序号 |
属性 | 说明 |
---|---|---|
1 | buffer |
指定输出流的缓冲模型。 |
2 | autoFlush |
控制servlet输出缓冲区的行为。 |
3 | contentType |
定义字符编码方案。 |
4 | errorPage |
定义另一个报告Java未检查运行时异常的JSP的URL。 |
5 | isErrorPage |
指示此JSP页面是否是由另一个JSP页面的errorPage 属性指定的URL。 |
6 | extends |
指定生成的servlet必须扩展的超类。 |
7 | import |
指定JSP中使用的包或类的列表,就像Java的import 语句一样。 |
8 | info |
定义可以使用servlet的getServletInfo() 方法访问的字符串。 |
9 | isThreadSafe |
定义生成的servlet的线程模型。 |
10 | language |
定义JSP页面中使用的编程语言。 |
11 | session |
指定JSP页面是否参与HTTP会话 |
12 | isELIgnored |
指定JSP页面中的EL表达式是否被忽略。 |
13 | isScriptingEnabled |
确定脚本元素是否被允许使用。 |
关于page指令可以参考:https://blog.csdn.net/qq_24484085/article/details/77929969
2.1 代码实例(使用errorpage指明出错的页面)
<%@ page errorPage="errorPage.jsp" language="java" import="java.util.*" pageEncoding="UTF-8" %>
错误的网页
<%
int i=9/0;
%>
<%@ page isErrorPage="true" pageEncoding="UTF-8" %>
很不幸,你出错了
你出错误啦,哈哈哈
<%=
exception.getMessage()
%>
如果某一个jsp页面是作为系统的错误处理页面,那么建议将page指令的isErrorPage属性(默认为false)设置为"true"来显式声明这个Jsp页面是一个错误处理页面
显示的设置 isErrorPage(true)的好处:
jsp引擎将jsp页面翻译成servlet的时候,在servlet的_jspservice方法中会声明一个 exception对象,然后将运行jsp出错的异常信息存储到exception对象中,这样就可以咋在error.jsp页面中使用。
2.2在web.xml文件中设置整个web应用出错跳转的页面
404 //指定出错的编码状态
/jsp/ErrorPage/404Error.jsp
3.1include指令范例
<%@ page pageEncoding="UTF-8" import="java.util.*"%>
jspf组合
<%@ include file="import/Head.jspf"%>
这是我们网站的主要内容哦
<%@ include file="import/End.jspf"%>
<%@ page pageEncoding="UTF-8" %>
开头
这是我们的网页开头哦
<%@ page pageEncoding="UTF-8" %>
结尾
这是我们的网页结尾哦
include指令总结:
这里的include指令可以包含任意的文件,只是把别的文件的内容包含到自身的页面中,这种叫做静态包含(只是把内容包含进来不做任何的处理)