6.2 JSP的基本语法
JSP的使用非常简单,本节简要介绍JSP的基本使用方法,任何语言都有基本语句和数据类型,下面分别进行讲解。
6.2.1 基本语句
JSP的语句一般分为6种:编译语句、声明语句、程序代码、注释语句、运算表达式和动作语句。
● 编译语句:<%@ 指示名 [属性="属性值"]%>。
● 声明语句:<%! 声明语句;[ 声明语句;]…%>。
● 程序代码:<%程序代码%>。
● 注释语句:<%--注解--%>。
● 运算表达式:<%=表达式%>。
● 动作语句:<JSP:动作名[属性|…]/>。
通过上面的简单讲解,读者可能还不太了解JSP的使用方法,下面通过一个示例来描述,示例代码如下:
<%@page contentType="text/html;charset=GBK"%> <%@page import="java.util.List,com.bbsManagement.domain.*"%> <%@ page seesion="true"%> <%@ page isAutoFlush="true"%> <%@ page buffer="8kb"%> <html> <head><title>留言回复发布</title> </head> <body> <form name="form1" action="" method="post"> <table width="776" border="1"> <!--采用EL语法--> <tr> <td height="38" colspan="2"><div align="center">消息提示:${msg}</span></div></td> </form> <!--定义多动作的处理方式--> <script language=Javascript> function check(action) { document.forms[0].action = "bbsWriteBackAction!" + action + ".action"; document.forms[0].submit(); } </script> </body> </html>
代码说明:
● JSP页面的扩展名必须为.jsp。
● <%@page contentType="text/html;charset=GBK"%>用来描述该页面所使用的编码,还可以设置使用的语言、是否维持会话状态、是否使用缓冲等。如果JSP页面的中文显示为乱码,则是没有指定JSP编码所导致的。
● ${msg}表示采用EL语法来输出变量的值。
● <script language=Javascript>表示使用的是JavaScript语法。
● <%@page import="java.util.List,com.bbsManagement.domain.*"%>表示导入包。在具体导入包时,可以导入多个包,但需要使用逗号进行分隔。
● <%@ page seesion="true"%>表示该页面支持Session。
● <%@ page isAutoFlush="true"%>、<%@ page buffer="8kb"%>表示支持缓冲,一般只在处理图片时使用。
在提交表单时有一个参数是method,可以设定的属性值有get和post,属性get和post都可以向服务器传送数据,但是传送机制不一样。其中get是把参数数据队列追加到提交表单的Action属性所指的URL地址中,值和表单内各个字段一一对应,用户通过URL可以看到;post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML Header内一起传送到Action属性所指的URL地址,用户看不到这个过程。<form method="get" action="input.jsp?username=gf">与<form method="get" action="input.jsp">是一样的,也就是说,action页面后边带的参数列表会被忽视;而<form method="post" action="input.jsp?username=gf">与<form method="post" action="input.jsp">是不一样的。同时要注意get的安全性非常低,post的安全性较高。
在JSP中include有两种形式,分别是:
<%@ include file=" "%>
和:
<JSP:include page=" " flush="true"/>
前者是指令元素,后者是行为元素,它们的区别是:
● <%@ include file = "URL" %>是在编译阶段执行。
● <JSP:include page="{URL | <%= 表达式 %>}" flush="true | false " />是在请求处理阶段执行。
● <%@ include file = "URL" %>引入静态文本(HTML、JSP),在JSP页面被转换成Servlet之前和它融合到一起。
● <JSP:include page="{URL | <%=表达式%>}" flush="true|false"/>引入执行页面或Servlet所生成的页面。
forward和sendRedirect的区别如下:
● 当form被提交至a.jsp时,在a.jsp中使用forward()重定向至b.jsp,此时form提交的所有信息在b.jsp中都可以获得,参数自动传递。forward执行时浏览器地址栏中的URL地址不变。
● sendRedirect()可以带参数传递,比如,servlet?username=gf传至下个页面,同时它可以重定向至不同的主机上,且在浏览器的地址栏中会出现重定向页面的URL地址。
6.2.2 数据类型
JSP的标识符是以字母、下画线和美元符号开始的一个字符串,除了第一个字母外,其他字母还可以是数字。
JSP的数据类型图如图6.5所示。
图6.5 JSP的数据类型图