一、jsp 脚本元素
jasp 脚本元素允许你在jsp 页面插入代码,最后这些代码将会编译成 servlet。有以下三种格式:
格式 | 描述 |
<%= expression %> | 编译后会插入到 servlet 的输出里(out.println() |
<% code %> | 编译后会插入到 servlet 的 _jspService 方法里,同过service()来调用 |
<%! code %> | 编译后插入到 servlet 类体里,在所有方法之外 |
这三种格式的使用会在后面详细谈到。
二、jsp 注释
jsp支持两种注释方法,如下:
1、html 注释
jsp 页面中如果使用 html 注释,客户端浏览器查看 jsp 文件时。可以看到这些注释。语法格式如下:
<!-- 注释的内容 –->
2、jsp 注释
使用 jsp 注释,jsp 引擎编译该页面时会忽略 jsp 注释(即客户端浏览器无法查看)。语法格式如下:
<%-- 注释的内容 –>
三、jsp 表达式
jsp 表达式是用来直接在输出里插入值,语法格式如下:
<%= expression %>
Demo:
Current time = <%= new java.util.Date() %>
- request, the HttpServletRequest
- response, the HttpServletResponse
- session, the HttpSession
- out, the PrintWriter
在此再给出另外一个Demo
Yout hostname : <%= request.getRemoteHost() %>
四、jsp xml 语法表达式
jsp xml 语法表达式,语法格式如下:
<jsp:expression>注意 jsp xml 语法格式是大小写敏感的,换言之一定是使用小写的 jsp:expression。
Java Expression
</jsp:expression>
<jsp:setProperty name="author" property="firstName" value="Marty" />
注意到,所以的数值值都应该包含在双引号(“”)或(‘’)里。另外有些属性也可是使用jsp 表达式来赋值,如下:
<jsp:setProperty name="user" property="id" value=’<%= "UserID" + Math.random() %>’/>如果你看不懂这些代码,并不要去担心,这些都会在后面详细谈到。下面列出允许使用java 表达式来赋值各种属性值:
元素名 | 属性名 |
jsp:setProperty | name,value |
jsp:include | page |
jsp:forward | page |
jsp:param | value |
例子:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>jsp Expression</title>
</head>
<body>
<h2>jsp expressions</h2>
Current time: <%= new java.util.Date()%>
Your hostname: <%=request.getRemoteHost()%>
Your session id: <%=session.getId()%>
The testparam form parameter: <%=request.getParameter( "testparam")%>
</body>
</html>
其输出如下:
注意这里并没有设置testparam 的值,所以输出null。
五。jsp 脚本片段
如果需要完成一些更复杂的逻辑,就需要用到 jsp 的脚本片段,可以允许你插入任意长度的代码。语法格式如下:
<% Java Code %>
在 jsp 脚本片段里,同样是可以访问 jsp 的内置对象(request, response, session, out, 等)。如下,输出查询的请求字符串:
<%
String queryData = request.getQueryString();
out.println("Attached GET data: " + queryData);
%>
当然了,你也可以使用 jsp 表达式完成上述逻辑,如下:
Attached GET data: <%= request.getQueryString() %>
不过了,jsp 脚本片段可以完成许多 jsp 表达式完成不到的任务,当中就包括设置响应的头部和状态码,更新数据库,写 log等。如下设置了 response 的 contentType:
<% response.setContentType("text/plain"); %>
六、jsp 声明
jsp 声明可以用来声明一个变量或者一个类。语法格式如下:
<%! Java Code%>
Demo:
<%! private int accessCount = 0; %>
Accesses to page since server reboot:
<%= ++accessCount %>
七、jsp 里九个内置对象
对象 | 对应的类 | 描述 |
application | javax.servlet.ServletContext | 服务器启动后就产生了这个application对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。 |
config | javax.servlet.ServletConfig | 该实例代表该JSP 的配置信息 |
exception | java.lang.Throwable | 该实例代表其他页面中的异常和错误 |
out | javax.servlet.jsp.JspWriter | 用来向客户端输出数据。out对象用于各种数据的输出。 |
page | java.lang.Object | 对应this关键字。JSP网页本身 |
pageContext | javax.servlet.jsp.PageContext | 该对象代表该JSP 页面上下文,使用该对象可以访问页面中的共享数据 |
request | javax.servlet.http.HttpServletRequest | 封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息(表单变量) |
response | javax.servlet.http.HttpServletResponse | 对客户的请求做出动态的响应,向客户端发送数据。 |
session | javax.servlet.http.HttpSession | 在第一个JSP页面被装载时自动创建,完成会话期管理。 |
转载于:https://blog.51cto.com/peiquan/1313519