include指令和include动作的区别如下:
1、include指令是把其他页面的Java代码(源码)加载进来,跟本页面的代码合并在一起,相当于把源代码从原页面复制到本页面来,然后再编译。由于本页面在编译时已经包含了别的文件的源代码,所以以后其他页面更改时,本页面并不理会,因为已经编译过了。<%@include file="..." %> 编译时包含 静态 JSP引擎将对所包含的文件进行语法分析。
2、include动作是指两个页面的代码运行完以后,再把包含的那个页面运行后的HTML结果页面,加到本页面运行后的HTML结果页面中来,所以是运行时包含,并且还可以传递参数给被包含的页面。
<jsp:include page="" /> 运行时包含 静态和动态 JSP引擎将不对所包含的文件进行语法分析。
<jsp:forward>
<jsp:forward>用于在服务器端结束当前页面的执行,并从当前页面跳转到其他指定页面,转向的目标页面可以是静态的HTML页面、JSP文件或Servlet类。这个元素的使用语法和<jsp:include>类似。
<jsp:forward>既可以带参数,也可以不带参数。
<jsp:forward>操作典型的使用就是登录,如进行权限验证的页面。当验证通过后,就把页面forward到登录成功页面;当验证不通过时,就把页面forward到登陆页面。
<jsp:param>
主要用来传递参数给JSP程序。<jsp:param name="user" value="<%=name%>"/> 接收:<%=request.getParameter("user")%>
使用<jsp:param>元素来传递参数,在JSP程序中则是通过如下的程序代码来取得此参数的值,这与取得用户输入数据的方式相同,是通过使用预设对象request的getParameter()方法来取得<jsp:param>所设置的参数值。request.getParameter("attributeName");
<jsp:param>操作元素的使用必须配合<jsp:include>、<jsp:forward>及<jsp:plugin>等元素,在加载外部程序或是网页转换的时候,传递一个参数给另一个JSP程序。
JSP内置对象
request、response、application、session、out、config、pageContext、page、exception。
request让服务器取得用户在网页表单所输入的数据内容。
response则提供服务端程序响应客户端信息所需要的功能。
session和application对象基本上用于记录和处理JSP网页之间的共享数据。
config包含JSP网页文件被编译称为servlet之后的相关信息。
pageContext则是提供系统运行期间各种信息内容的存取操作功能。
page代表目前正在运行的JSP网页对象。
exception为JSP提供用于处理程序运行错误的异常对象。
response
setHeader可以设置HTTP应答报文的首部字段和值;利用setHeader()方法可以设置页面的自动刷新。
例如:
response.setHeader("Refresh","5");//5秒钟后自动刷新本页面
response.setHeader("Refresh","5;URl=http://www.163.com");//5秒钟后自动跳转到新页面。
<%@page language="java" contentType="text/html;charset=gb2312" import="java.util.*"%> <HTML> <HEAD> <TITLE>response应用实例</TITLE> </HEAD> <BODY> <% out.println("当前时间为:" + new Date().toLocaleString() + "<br>"); //获得当前时间 out.print("此刻抽取的幸运数字是:" + (int) (Math.random() * 10000)); response.setHeader("refresh", "1"); //设置每1秒刷新一次刷新 %> </BODY> </HTML>
1、response.sendredirect()会在客户端呈现跳转后的URL地址,这种跳转称为客户端跳转。使用response.sendredirect()方法将重定向的URL发送到客户端,浏览器再根据这个URL重新发起请求。所以用这个方法时,在浏览器地址栏会看到新的请求资源的地址。并且这时的request和reponse都与第一次的不一样了,因为产生了新的request和reponse。
2、使用<jsp:forward>完全是在服务器上进行,浏览器地址栏中的地址保持不变,这种跳转称为服务端跳转。没有产生新的request和reponse,保持不变,在同一个请求内可以用request来传递参数。
3、response.sendredirect()方法想带参数的话,在地址中写成xxx.jsp?param1=aaa&这种形式传递参数。<jsp:forward>能够使用<jsp:param />标签向目标文件传递参数和值,目标文件必须是一个动态的文件,能够处理参数。
3、<jsp:forward />后面的语句不会继续执行,也不会继续发送到客户端;response.sendredirect()方法后面的语句会继续执行,除非语句前有return。
建立session变量
在JSP中不需要特别设置程序代码来建立用户session,当程序使用了session对象时,便会自动建立session。
session.setAttribute("变量名称",变量内容)
变量内容可为字符串或者其他对象类型,接着再来看看如何使用这个方法在session中设置变量数据:
<%
session.setAttribute("id",“编号”); //设置字符串
session.setAttribute("expire",new Date(86400*10));//设置日期
session.setAttribute("level",new Integer(3)); //设置整数
%>
在session中设置了变量数据后,在其他各个网页中便可以使用getValue读取其中的内容,此方法所返回的数据类型为对象(Object)类型。
获取:
session.getAttribute(“变量名称”);
返回所有session中的变量名称
session.getAttributeNames();
清除session中的变量
session.removeAttribute("变量名称");
结束session
session.invalidate();