zoukankan      html  css  js  c++  java
  • JSP基本语法

           一,用jsp脚本元素调用java代码    

                1,jsp表达式的应用    

                    jsp表达式将值直接插入到输出中:    

                      <%= Java Expression %> 代表一个值,隐式对象,

                      <%= request.getParameter("testParam") %>    

                     <%= session.getId() %>    

                     <%= application.getServerInfo() %>    

                    request,session,application都是隐式对象,XML程序设计者可以使用下列的语法替代jsp表达式:Java Expression

             2,编写scriptlet(有效java代码段),<% Java Code %> ,可以完成单独使用表达式不能完成的任务,例如设置响应报头和状态,循环语句等。

             XML形式:

            Java Code    

            1)一个示例:

                               <%     String bgColor = request.getParameter("bgColor");    

                              if ((bgColor == null) || (bgColor.trim().equals(""))) {     bgColor = "WHITE";     }     %>    

          2)使用<%  --   %>将jsp页面的某些部分条件包含 //用一个随机数将输出条件话, //html语句和java代码穿插混合!!    

             <% if (Math.random() < 0.5) { %>    

              Have a nice day!    

            <% } else { %>    

             Have a lousy day!    

            <% } %>

            可以看出,这样的使用方式不利于代码的阅读,一般只将少量java代码与html代码混合,否则可读性不好。

           3,使用声明 :

            <%! Field or Method Definition %>

             jsp声明可以将方法或字段的定义放在servlet类定义之中,_jspService方法之外!!! 以下列一小段jsp片段为例,

            Some Heading 

          //jsp声明

            <%!

              private String randomHeading() {

              return("" + Math.random() + "");

              } 

                %>

              <%= randomHeading() %>

             4、

          一、客户对同一servlet的多个请求只会产生多个线程,每一个线程调用单一servlet的service方法。不用声明为static,每次访问共享变量

           二,控制所生成的servlet的结构:jsp page指令 jsp指令影响由jsp页面生成的servlet的整体结构。 在jsp中,主要有三种类型的指令:page,include,taglib :

        page指令可以放在文档的任何地方,完成我们通过类的导入,servlet超类的定制,内容类型的设定以及诸如此类的事务来控制servlet的结构。

        include指令应该放置在文档中希望插入文件的地方

        taglib定义自定义的标记标签

    我们来看page指令:

         page指定可以定义下面这些属性(按使用频度高低):

           import, contentType,pageEncoding, session, isELIgnored (JSP 2.0 only), buffer, autoFlush,info, errorPage, isErrorPage, isThreadSafe, language, extends

    1、import属性 指定jsp页面转换成servlet应该输入的包()

      <%@ page import="package.class1,...,package.classN" %>

       import是page的属性中唯一可以在同一文档中多次出现的属性。

    2,contentType属性和pageEncoding属性 contentType属性设置content-Type响应报头,标明发送到客户程序的文档的MIME类型

    <%@ page contentType="MIME-Type" %>

     例如:

    <%@ page contentType="application/vnd.ms-excel" %>

    同样的,用下列方法也可以设置MIME类型:<% response.setContentType("application/vnd.ms-excel"); %>

    两者是有区别的,前者只用到jsp语法,而后者用到明确的java代码;另外后者能够有条件的执行,而page指令不行

    (response.setContentType作为java语句可以放在条件中,根据条件来决定设置什么样的mime类型)

    pageEncoding属性设置字符集;

    3,session属性 控制页面是否参与HTTP会话:

    <%@ page session="true" %>

    <%-- 默认情况是参与 --%>

    <%@ page session="false" %> 对于高流量网站,使用session属性可以节省大量的服务器内存。

    4,isELIgnored属性 是否忽略jsp2.0表达式语言

    <%@ page isELIgnored="false" %>

    <%@ page isELIgnored="true" %>

    5,buffer和autoFlush属性 buffer属性指定out变量使用的缓冲区大小:

    <%@ page buffer="32kb" %>

    <%@ page buffer="none" %>

    aotoFlush属性控制当缓冲区充满之后,应该自动清空缓冲区(默认)还是在缓冲区溢出后抛出异常: <%@ page autoFlush="true" %>

    <%-- Default --%>

    <%@ page autoFlush="false" %>

    6,info属性:定义一个可以再servlet中通过getServletInfo方法获取的字符串:

    <%@ page info="Some Message" %>

    7,errorPage属性和isErrorPage属性 errorPage属性指定一个jsp页面,该页面处理当前页面抛出但未被捕获的任何异常:

    <%@ page errorPage="Relative URL" %>

    指定的页面可以由Exception变量访问抛出的异常

    isErrorPage表示当前页是否可以作为其他jsp页面的错误页面:

    (默认不可以) <%@ page isErrorPage="true" %>

    <%@ page isErrorPage="false" %> <%-- Default --%>

    8,isThreadSafe属性 一般不用,显式同步具体的代码段即可

    9,extends属性 指定jsp页面生成的servlet的超类: 保留使用

    10,language属性 指定页面使用的脚本语言 <%@ page language="java" %> 目前来说java是默认选择也是唯一选择

    11,指令对应的XML语法 例如:<%@ page import="java.util.*" %>等

  • 相关阅读:
    【转】Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
    使用cacti监控服务器
    Vsphere client 无法登陆VCenter 处理的方法
    ESXI主机打开shell后主机警告处理
    Kiwi Syslog server 日志服务器搭建
    Linux lamp环境编译安装
    tar.bz2解压
    安装 MYSQL exec: g++: not found 报错
    mysql 编译安装提示“checking for termcap functions library... configure: error: No curses/termcap library found”
    Linux mysql 数据库忘记root密码
  • 原文地址:https://www.cnblogs.com/skjsg/p/4703947.html
Copyright © 2011-2022 走看看