jsp语法
jsp的语法。
1. 中文编码问题
如果我们想在页面中正常显示中文,需在jsp头部添加以下代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
2. 脚本程序<% %>
用<% %>
在jsp中编写脚本,我们必须严格遵循Java语法来编写,此处的内容我们会原封不动地放入到对应servlet中的_jspService()方法中去。
<%
Date date = new Date();
System.out.println(date.toLocaleString());
%>
3. JSP声明<%! %>
一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,您必须先声明这些变量和方法然后才能使用它们。
在此处定义的变量和方法是jsp以及其对应的servlet的全局成员和方法。
<%!
private String name = "qdl";
public String getDate(){
return (new Date()).toLocaleString();
}
%>
<p><%=name %></p><br>
<p><%=getDate() %></p>
4. JSP表达式<%= %>
可以将jsp中定义的Java变量转换成String,然后在插入到相应的地方。
由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。
表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。
<%!
Date date = new Date();
String dateString = date.toLocaleString();
%>
<p><%=dateString %></p><br>
<p><%=(new Date()).toLocaleString() %></p>
5. JSP注释<%- %>
<%-这是jsp注释 %>
<!-这是html注释 ->
jsp指令
JSP指令是为JSP引擎而设计的,用于告知JSP引擎如何处理JSP页面中代码。指令的格式:
<%@ 指令名称 属性1=”值1” 属性2=”值2” …… %>
JSP2.0中定义了三个指令:page、include、taglib。
1. page指令
用于定义jsp页面的各种属性,在上面我们为了正常显示中文就用到了page指令。
<%@ page language=”java” contentType=”text/html; charset=UTF-8”
pageEncoding=”UTF-8”%>
利用language属性指明该jsp文件中是java代码,利用pageEncoding声明编码格式等等,常见的page指令属性:
- session,是否自动创建session对象,默认值是true;
- errorPage,假若页面中有错误跳转到指定的资源;
- isErrorPage,是否创建throwable对象,默认是false;
- contextType,设置内容类型,等同于response.setContextType();
- pageEncoding,告知JSP引擎用什么编码翻译该jsp文件;
- isELIgnored,是否支持EL表达式,默认是false。
2. include指令
用来指定jsp包含其他文件,文件格式可包含jsp、html、文本文件,包含的文件就好像是该JSP文件的一部分,会被同时编译执行。
<%@ include file=”文件相对 url 地址” %>
include 指令中的文件名实际上是一个相对的 URL 地址。
如果没有给文件关联一个路径,JSP编译器默认在当前路径下寻找。
3. taglib指令
taglib指令用于在JSP页面中导入JSTL标签库。在导入JSTL标签库后就可用标签替换JSP中的java代码。
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>
jsp动作
介绍常见的jsp动作。
<jsp:include>,用于动态地把其它资源包含到当前页面中。
<jsp:forward>,用于请求转发。
<jsp:param>,用于请求转发时携带参数。
//请求转发示例,在此转发至test.jsp且携带了name和age两个参数
<jsp:forward page="/test.jsp">
<jsp:param name="name" value="qdl" />
<jsp:param name="age" value="25" />
</jsp:forward>
<jsp:useBean>,创建一个对象
<jsp:setProperty>,给对象的属性赋值
<jsp:getProperty>,取出对象的属性值
//创建对象示例,在此创建了cn.com.Person类的对象p,且为该对象的name属性赋值
<jsp:useBean id="person" class="cn.com.Person"/>
<jsp:setProperty name="person" property="name" value="戚继光"/>
<jsp:getProperty name="person" property="name" />
jsp的隐式对象
jsp隐式对象是指jsp容器为每个页面提供的Java对象,开发者可以不用声明而直接使用它们。也被称为预定义变量,九大隐式对象。
1. request对象
是HttpServletRequest类的实例,这是我们在讲Servlet时提到的。每当客户端请求一个jsp页面时,jsp引擎就会制造一个新的request对象来代表这个请求。
request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。
详细解读参照Servlet系列。
2. response对象
是HttpServletResponse类的实例,当服务器创建request对象时会同时创建用于响应这个客户端的response对象。
response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。
详细解读参照Servlet系列。
3. out对象
out对象是 javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。
最初的JspWriter类对象根据页面是否有缓存来进行不同的实例化操作。可以在page指令中使用buffered=’false’属性来轻松关闭缓存。
- out.print(dataType dt),输出Type类型的值;
- out.println(dataType dt),输出Type类型的值然后换行;
- out.flush(),刷新输出流。
4. session对象
session对象是 javax.servlet.http.HttpSession 类的实例。和Java Servlets中的session对象有一样的行为。
session对象用来跟踪在各个客户端请求间的会话。
可参照之前的HttpSession文章。
5. application对象
application对象直接包装了servlet的ServletContext类的对象,是javax.servlet.ServletContext 类的实例。
这个对象在JSP页面的整个生命周期中都代表着这个JSP页面。这个对象在JSP页面初始化时被创建,随着jspDestroy()方法的调用而被移除。
通过向application中添加属性,则所有组成您web应用的JSP文件都能访问到这些属性。
参照之前的Servlet文章。
6. config对象
config对象是 javax.servlet.ServletConfig 类的实例,直接包装了servlet的ServletConfig类的对象。
这个对象允许开发者访问Servlet或者JSP引擎的初始化参数,比如文件路径等。
参照之前的Servlet文章。
7. pageContext 对象
pageContext对象是javax.servlet.jsp.PageContext 类的实例,用来代表整个JSP页面。
这个对象主要用来访问页面信息,同时过滤掉大部分实现细节。
这个对象存储了request对象和response对象的引用。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。
pageContext对象也包含了传给JSP页面的指令信息,包括缓存信息,ErrorPage URL,页面scope等。
PageContext类定义了一些字段,包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE, APPLICATION_SCOPE。它也提供了40余种方法,有一半继承自javax.servlet.jsp.JspContext 类。
其中一个重要的方法就是removeArribute(),它可接受一个或两个参数。比如,pageContext.removeArribute(“attrName”)移除四个scope中相关属性,但是下面这种方法只移除特定scope中的相关属性:
pageContext.removeAttribute("attrName", PAGE_SCOPE);
8. page 对象
这个对象就是页面实例的引用。它可以被看做是整个JSP页面的代表。
page 对象就是this对象的同义词。
9. exception 对象
exception 对象包装了从先前页面中抛出的异常信息。它通常被用来产生对出错条件的适当响应。