注释:
<!-- 注释内容--> HTML注释,会产生一个注释发送到客户端,能在浏览器端用查看源代码方式看到。
<%-- 注释内容 --%> 隐藏注释,是不会将其内容传到客户端,当然在客户端的浏览器查看源代码时是看不到的。
include 命令
include命令的作用是在JSP页面中包含一个静态文件,同时解析这个文件中的JSP语句。include指令将会在JSP编译时插入一个包含文本或代码文件,这个包含的文本可以是JSP文件,HTML文件或文本文件。
基本语法格式如下:
<%@ include file="relativeURL" %>
在这个格式中,是以符号<%@ 开始,%>结束的。
<%@ include page="scripts/login.jsp" %>
<%@ include page="copyright.html" %>
<%@ include page="/index.html" %>
Page指令
Page指令语法
<% page
[language="java"]
[extends="package.class"]
[import="{package.class|package.*}......"]
[session="true|false"]
[buffer="none|8kb|sizekb"]
[autoFlush="true|false"]
[isThreadSafe="true|false"]
[info="text"]
[errorPage="relativeURL"]
[contentType="mineType[;charset=characterSet] "|"text/html;charset=GBK"]
[isErrorPage="true|false"]
%>
language属性
language="java" 声明脚本语言的种类只能是java
extends属性
extends="package.class"声明JSP编译时需要加入的Java Class的全名
import属性
import=“{package.class|package.*}”中import语句后是需要导入的Java包的列表
<%@ page import="java.util.*,java.lang.*" %>
session属性
session="true|false"设定客户是否需要HTTPSession,如果为true,那么session是有用的,如果为false,那么就不能使用session
buffer属性
buffer="none|8kb|sizekb"中buffer的大小是被out对象用于处理执行后的JSP对客户浏览器的输出,默认值是8kb.
autoFlush属性
autoFlush="true|false" 设置如果buffer溢出,是否需要强制输出。true:输出正常,false:当buffer溢出,就会导致一个意外错误发生。如果buffer属性设置为None,则不能把autoFlush设置为false
isThreadSafe属性
isThreadSafe="true|false"设置JSP能否多线程使用,默认true,
errorPage属性
errorPage="relativeURL"设置处理异常事件JSP文件。
isErrorPage属性
isErrorPage="true|false" 设置该页是否为出错页面,如果被设置为true,就可以使用Exception对象。
ContentType属性
设置MIME类型,默认MIME类型是text/html 默认字符集ISO-8859-1
info属性
一个文本在执行JSP时将会被涿字加入JSP中,可以使用Servlet.getServletInfo()方法取回info属性。
<jsp:forward>
用来定向一个HTML文件,JSP文件或者一个程序员,<jsp:forward>标签从一个JSP文件向另外一个文件并传递一个包含客户请求的request对象。
格式:
<jsp:forward page={"relativeURL|<%=expression%>"} />
<jsp:param name="parameterName" value="{parameterValue|<%=expression%>" />
</jsp:forward>
page属性,可以用一个表达式或一个字符串来说明将要定向的文件或URL,这个文件可以是JSP程序员,也可以是能够处理request对象的文件。
<jsp:param>属性,向一个动态文件发送一个或多个参数,这个文件一定是动态文件,如果想传递多个参数,可以在一个JSP文件中使用多个<jsp:param>,name制定参数名,vlaue指定参数值。
每当遇到<jsp:forward>操作时,就停止执行当前的JSP,转而执行被转发的资源
例
<%
String target="/login.jsp"
%>
<jsp:forward page="<%=target%>" />
或者
<jsp:forward page="/login.jsp">
<jsp:param name="userID" value="helking"/>
<jsp:param name="password" value="xxxxxx" />
</jsp:forward >
jsp:forward操作的典型应用就是登陆,如进行权限验证的页面,当验证通过后,就把页面forward到登陆成功的页面,反之就把页面forward到登陆页面
checklogin.jsp
<%@ page contentType="text/html;charset=gb2312" %>
<html>
<body>
<%--进行登录检查--%>
<%
String name=request.getParameter("name");
String password=request.getParameter("password");
//if验证通过,forward-->sucess.jsp
//else forward-->login.jsp
if(name.equals("helking"))
{
%>
<jsp:forward page="sucess.jsp">
<jsp:param name="user" value="<%=name%>" />
</jsp:forward>
<%
}//if
else{
%>
<jsp:forward page="login.jsp" >
<jsp:param name="user" value="<%=name%>" />
</jsp:forward>
<%}%>
</body>
</html>
sucess.jsp
<%@ page contentType="text/html;charset=gb2312" %>
登录成功
<br>
欢迎你,
<%=request.getParameter("name")%>
<jsp:include>
在请求时间内在现成的JSP页面里包含静态或者动态资源.
<jsp:include page="included.jsp" flush="true"/>
<jsp:param name="companyName" value="huayuan" />
</jsp:include>
这里flush必须使用true,不能使用false,默认是false
例:
jsp_include.jsp
<%@ page contentType="text/html;charset=gb2312" language="java" %>
<html>
<body>
<%@ include file="static.html" %>
<%--只是把文件包含进来 --%>
<a href="two.jsp">goto two--></a><br>
this example show include works
<jsp:include page="two.jsp" flush="true">
<jsp:param name="a1" value="<%=request.getParameter("name")%>"/>
<jsp:param name="a2" value="<%=request.getParameter("password")%>"/>
</jsp:include>
</body>
</html>
two.jsp
<%@ page contentType="text/html;charset=gb2312" language="java" %>
<br>
this is a1=<%=request.getParameter("a1")%>
<br>
this is a2=<%=request.getParameter("a2")%>
<br>
<%
out.println("Hello from two.jsp");
%>
乱码:
response.setHeader("Content-Language","es");来设置HTML显式时要使用的语言.
<%@ page contentType="text/html;charset=iso-8859-1" %>
<%
response.setHeader("Content-Language","es");
out.println("<html><head><title> En Español</title></head>");
out.println("<body>");
out.println(<h3>En español:</h3>");
out.println("¡Hola Mundo!");
out.println("</body></html>");
%>
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
</head>
<body>
指定了编码方式,不会出现乱码:<br>
<%
out.println("这里由out.println方法打印,不会出现乱码");
%>
</body>
</html>
使用page指定手工指定页面的编码方式为"gb2312",这样对于不同的应用服务器或jdk,都不会出现乱麻问题.
当表单中输入一些中文,提交并显式的时候,出现乱码
<%@ page contentType="text/html;charset=gb2312"%>
<%
request.setCharacterEncoding("gb2312");
out.println(request.getParameter("name");
%>
可以看出,通过使用request.setCharacterEncoding("gb2312")对请求进行了统一的编码,就实现了对输入中文的正常显式.