分享

Jsp语法概要

 香山早秋 2012-02-27
1. 声明tag <%!     %>
     在声明tag范围里,只可以声明变量和方法。且仅在一个页面内有效。
    <%!
           private String str = "成功!";

           public void  add() {
                  ......
           }
    %>
    当每个页面都用到一些共同的声明,最好把它们写成一个单独的文件,用<%@ include %>或<jsp:include >元素包含到所需要的页面。

2. 程序段Scriptlet <%     %>
      Scriptlet 范围内部的代码就是我们平时写的有效代码,可以包括变量声明,初始化等等。
      <%
              String userName = null;
              if (request.getParameter("username") == null) {
     %>
                <%@ include file="error.html" %> 
     <% 
              } else { 
                       userBean.setUserName(request.getParameter("username")); 
              }
     %>
 
3. 表达式tag <%=     %>
     表达式tag内的元素可以是变量,有返回值的方法,以及计算表达式总之,相当于System.out.print(元素转换为String的结果)。和声明tag,程序段Scriptlet不同的是,表达式tag的元素是不需要分号“;“结尾的。
      Date : <%= new java.util.Date() %>
 
4. 隐藏注释tag <%--    --%>
      此tag相当于平常用的/*  */,在JSP编译时被忽略掉,而且不会显示在客户的浏览器中。
 
5. 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="mimeType [ ;charset=characterSet ]" | "text/html ; charset=GBK18030" ] 
      [ isErrorPage="true | false" ] 
       %> 
       <%@ page %>指令作用于整个JSP页面,同样包括静态的包含文件。但是<% @ page %>指令不能作用于动态的包含文件,比如 <jsp:include>。 

       在一个页面中可以用上多个<% @ page %>指令,但是其中的属性只能用一次,不过也有个例外,那就是import属性,import属性能使用几次。
Example:
        <%@ page import="java.util.*, java.lang.*" %> 
        <%@ page buffer="5kb" autoFlush="false" %> 
        <%@ page errorPage="error.jsp" %>
 
6. include动作指令
       <jsp:include page="{relativeURL | <%= %>}"   flush="true|false" />
       or 
        <jsp:include page="{relativeURL | <%= %>}"   flush="true|false" > 
            <jsp:param name="parameterName" value="{parameterValue | <%= %>}" />
        </jsp:include>
        or
         <%@ include file|page="relativeURL" flush="true|false" />
 
        两者区别:
        <jsp:include page="..."/> 运行时插入被 include 文件 
        <%@ include file="..." %> 或<%@ include page="..." %>编译时插入被 include 文件
7. forward动作指令
       <jsp:forward page="relativeURL"/>  
       or
       <jsp:forward page="relativeURL">
            <jsp:para name="parameterName" value="{parameterValue | <%= %>}"/>
       </jsp:forward>
forward动作指令用来重定向网页,即从当前网页的forward动作指令处转向执行另一个网页程序。
       页面之间的重定向也可以在程序段Scriptlet 中使用response.sendRedirect("relativeURL")方法来实现。
       forward与重定向是有差别的,使用forward,是服务器端内部进行,所以浏览器的地址栏上的url没有变化;而重定向是在浏览器进行,地址栏的url将改变为相应的relativeURL。

8. usebean动作指令,setProperty动作指令
          见Jsp使用JavaBean
 
9. Taglib  tag <% @taglib  %>
            <%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>
 
10.JSP的内置对象
        JSP的内置对象在JSP页面中无须声明就可以直接使用,内置对象有:request、response、session、application、out、config、pageContext。这些内置对象是Web开发中最为常用的对象。
       request对象可以获取客户端提交的数据,如表单中的数据、网页地址后带的参数等。
 request对象常用方法
getAttribute(String name)
获取指定的属性值,若不存在该属性,则返回null值
getAttributenames()
枚举request对象的所有数据
getCookies()
获取客户端的Cookie对象,返回值为Cookie数组
getParameter(String str)
获取指定名称的客户端提交的参数的值
getParameterNames()
枚举客户端提交的参数的名称
getParameterValues(String str)
返回指定名称的客户端提交的参数值数组,常用于checkBox
setCharacterEncoding(String str)
设置request对象的编码格式

       response对象可用来向客户端输入数据。
response对象常用方法
sendRedirect()
进行页面重定向
setContentType(String str)
设置MIME
setCharacterEncoding(String str)
设置编码格式
addCookie(Cookie name)
添加Cookie对象,以保存客户端的用户信息,Cookie对象的值只能是字符串

request.setCharacterEncoding()是设置从request中取得的值或从数据库中取出的值 (只管post方式提交的问题///get需在server.xml中的:
      <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="GBK" />
)加入以上粗体,解决post和get之间乱码问题

      response.setContentType("text/html;charset=gb2312")是设置页面中为中文编码
 
      前者(request)是设置动态文字(参数,数据库),后者(response)设置页面静态文字
       response.setContentType指定 HTTP 响应的编码,同时指定了浏览器显示的编码. 
       response.setCharacterEncoding设置HTTP 响应的编码,如果之前使用response.setContentType设置了编码格式,则使用response.setCharacterEncoding指定的编码格式覆盖之前的设置.与response.setContentType相同的是,调用此方法,必须在getWriter执行之前或者response被提交之前.
     常见的MIME还有image/gif(GIF图片)、image/bitmap(BMP图象)、text/plain(文本文档TXT)、text/vnd.wap.wml(手机WAP页面)等。

      session对象用来保持在服务器与一个客户端之间需要保留的数据,当客户端关闭网站(或称为系统)的所有网页时,session变量会自动清除。
session对象常用方法
getAttribute(String name) 获取指定的session数据对象
setAttribute(String name, Object value) 设置指定session对象中的数据对象的值
getAttributenames() 枚举session对象的所有数据
getId() 获取当前session对象的ID号
isNew()  判断是否为新用户
invalidate()  使session对象实效(常用于注销操作)
removeAttribute(String name)  删除指定的session数据对象
 
       application对象可用来提供一些全局的数据、对象,一旦创建(在服务器开始提供服务时,即第一次被访问时application对象就会被创建),就会一直保持到服务器关闭服务为止。
 application对象常用方法
getAttributenames()
枚举 application对象的所有数据
getAttribute(String name)
获取指定的 application数据对象
setAttribute(String name, Object value)
设置指定 application对象中的数据对象的值
 
       pageContext用来管理属于JSP中特殊可见部分中已命名对象的访问。
 
       out对象用来向客户端浏览器输出数据。
 out对象常用方法
clear()
清除输出缓冲区的数据,对清除的数据不作处理 
clearBuffer()
清除输出缓冲区的数据,将清除的数据输出到客户端
close()
关闭输出流
flush()
输出缓冲区的数据内容
newLine()
输出换行字符
print()/ println()

       config对象是JSP配置处理程序的句柄,在JSP页面范围内有效。

      在多个JSP页面之间传递参数,可以使用request, session, application对象的setAttribute(),getAttribute()方法进行参数的传递。

共享数据在web应用中的范围
page
       共享数据的有效范围是用户请求访问的当前JSP网页
request
       共享数据的有效范围是用户请求访问的当前Web组件,以及和当前Web组件共享同一个用户请求的其他Web组件。
       例如用户请求访问的是JSP网页,那么该JSP网页的<%@ include>指令以及 <forward>标记包含的其他JSP文件也能访问共享数据。存放在HttpServletRequest对象中。
session
       共享数据的有效范围是整个HTTP会话的生命周期。存放在HttpSession对象中。
application
       共享数据的有效范围是整个Web应用的生命周期,Web应用中的所有Web组建都能共享。存放在ServletContext对象中。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多