1. 在使用directive的时候,类似page,include等除了必须在前面加‘@’之外,字母必须小写,jsp区分大小写。
<%@page import="java.util.*"%>
<%@page contentType="text/html"%>
<%
out.println(new Date());
%>
2. JSP中可以没有任何明显的html语句,比如<html><head>等,直接写一条语句就可以打印在网页上。
<%
out.println("Page Error");
%>
3. @include包含文件使用的是file,jsp:include使用的是page。
<%@include file="data.jsp"%>
<jsp:include page="data.jsp" flush="true"/>
4. 可以不适用out.println()向网页中输出信息,直接使用<%=也可以。
<%= new java.util.Date().toLocaleString()%>
5. jsp:forward和sendRedirect()的区别
使用jsp:forward时,页面的转换发生在服务器端,在客户端显示的依然是当前访问的页面而不是跳转后的页面,而且访问页面和跳转后的页面使用的是同一个request所以向访问页面传送参数就等于像跳转的页面传送参数
<html>
<head>
<title>forward1</title>
</head>
<body bgcolor=red>
<jsp:forward page="forforward1.jsp">
<jsp:param name="name" value="m"/>
<jsp:param name="oldName" value='<%= request.getParameter("name")%>'/>
<jsp:param name="roles" value="manager"/>
</jsp:forward>
</body>
</html>
<html>
<head>
<title>forforward1</title>
</head>
<body bgcolor=blue>
this is page forforward1.jsp
<br>
<%= request.getParameter("name")%>
<%= request.getParameter("oldName")%>
<%= request.getParameter("roles")%>
<%= request.getParameter("ccc")%>
</br>
</body>
</html>
我们在访问的时候访问的是forward1.jsp页面会跳转到forforward1.jsp,此时我们给forward1.jsp传递参数就是像forforward1.jsp传递参数。
sendRedirect()也是页面的跳转,但是他和客户端的交换是双向的,所以客户端显示的会由访问的页面变成跳转的页面,同时两个页面的request是不
相同的,也就是说像访问的页面传递参数在跳转后的页面是无法接受到的。
<%
response.sendRedirect("forforward1.jsp");
%>
我们在访问redirect.jsp的时候给此页面传递name参数,但是在跳转到的forforward1.jsp中是无法接收到的。
如图中所示,中间一列上面一个方框代表的是通过for:forward访问第
三列的页面,下面一个方框代表的是通过sendRedirect()进行访问,可见通过for:forward进行访问,页面的转换对客户端来时是掩藏的发生在服务器
端,但是通过sendRedirect()进行访问时实际上是通知客户端去访问另一个页面,所以客户端的URL会发生变化。