搞定J2EE核心技术与企业应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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的数据类型图