jsp学习

来源:互联网 发布:python logging模块 编辑:程序博客网 时间:2024/06/06 12:43
1、1)jsp声明语法格式 : <%! java成员变量或者方法声明部分 %>
    2)java代码嵌入在<% java代码部分 %>
    3)输出JSP表达式语法格式:<%=表达式%> 注:在表达式后面不要加入';'号
    4)JSP脚本即java代码,注意在jsp脚本里面不能定义方法(因为java语法不允许在方法里定义方法,而jsp脚本部分实质是转换为servelet类方法,故在jsp脚本部分不能定义方法)

2、JSP的编译指令
    编译指令是通知JSP引擎的消息,不直接生成输出。编译指令都有默认值。
    page: 针对当前页面的指令    如需要为jsp脚本添加必备的包(<%@ page import="java.sql.*" %>)
    include:用于指定包含另一个页面    如<%@include file="relativeURLSpec"%>
    tagib: 用于定义和访问自定义标签
语法格式:  <%@ 编译指令名 属性名="属性值"...%>

3、JSP的7个动作指令
    动作指令是运行时的动作。
   1) jsp:forword: 执行页面转向,将请求的处理转发到下一个页面。
        格式如下:<jsp:forward page="{relativeURL|<%=expression%>}"> {<jsp:param.../>}
                            </jsp:forward>
        如: <jsp:forward page="forward-result.jsp">
                      <jsp:param name="age" value="29"/>
                 </jsp:forward>
        forward指令执行时,用户请求的地址依然没有发生改变,但页面的内容却完全变为被forward目标页的内容
        request对象也可以执行forward和include。HttpServletRequest类提供了一个getRequestDispacher(String path)方法,其中path就是希望forward或者include的目标路径,该方法返回RequestDispatcher,该对象提供了如下两个方法。forward(ServletRequest request, ServletResponse response):执行forward. include(ServletRequest, ServletResponse response):执行include。
        如:getRequestDispacher("/a.jsp").include(request,respond);将请求forward到a.jsp页面。
  2) jsp:param: 用于传递参数,必须与其他支持参数的标签一起使用。
        param指令是和其他三个指令结合使用的:jsp:include,jsp:forward.jsp:plugin.
        当与include 指令结合时,用于将参数传人被导入的页面,当与forward指令结合使用时,param指令用于将参数值传入被转向的页面,当与plugin指令结合使用时,则用于将参数传人页面中的javabean实例。
  3) jsp:include: 用于动态引入一个jsp页面。
        格式如下:<jsp:include page="{relativeURL | <%=expression%>}" flush="true">
                                <jsp:param name="parameterName" value="patameterValue"/>
                            </jsp:include>
        
  4) jsp:plugin: 用于下载JavaBean或Applet到客户端执行
        plugin指令主要用于下载服务端的JavaBean或Applet到客户端执行。
  5) jsp:useBean: 创建一个JavaBean的实例
  6) jsp:setProperty: 设置JavaBean实例的属性值。
  7) jsp:getProperty: 输出JavaBean实例的属性值。
      以上三个指令都与JavaBean相关的指令,若多个页面中需要重复使用某段代码,可以把这段代码定义成Java类的方法,然后让多个JSP页面调用该方法.
      <jsp:useBean id=“name" class="classname" scope="page | request | session | application"/>
    其中,id属性是JavaBean的实例名,class属性确定JavaBean的实现类。scope属性用于指定JavaBean实例的作用范围,该范围有4个值:
   page: 该JavaBean实例仅在该页面有效.
    request:实例仅在本次请求有效。
    session:在本次ssession内有效。
    application:在本应用内一直有效。
       <jsp:getPropetry name="BeanName" proterty="propertyName" value="value"/>
    其中,name属性确定需要设定JavaBean的实例名,property属性确定要设置的属性名,value属性则需要设置的属性值。
        <jsp:setProperty name="BeanName" prpperty="propertyName" />
    其中,那么属性确定需要设定JavaBean实例名,property属性需要输出的属性名。
    注意:class的源文件xx.java放在web应用的WEB-INF/src路径下,再将编译后的class文件放入WEB-INF/classes路径下。

4、jsp的9个内置对象
    这9个内置对象是Servlet API接口实例,它们被默认初始化了。
    1)application:代表jsp所属web应用本身
           作用:在整个Web应用的多个JSP、Servlet之间共享数据;访问Web应用的配置参数。
            如何在Servlet中访问application。
            在servlet中并没有application内置对象,但可以通过代码获取:
             servletContext sc = getServletConfig().getServletContext();
            通过使用application的getInitParameter(String paramName)来获取Web应用的配置参数。这些配置参数应该在web.xml文件中         使用context-param元素配置。
   每个Web应用只有一个ServletContext实例。
    2)config:代表jsp的配置信息
    3)exception:代表其他页面中异常和错误。
    4)out:代表jsp页面的输出流,用于输出内容,形成html页面
    5)page:代表页面本身,即Servlet中的this
    6)pageContext:代表JSP页面上下文,使用该对象可访问页面中的共享数据。
    7)request:封装了一次请求,客户端的请求参数的都被封装在该对象里。获取客户端请求参数必须使用该对象。
            注意:并不是每个表单域都会生成请求参数的,而是有name属性的表单域才生成请求参数。关于表单域和请求参数关系遵循如下4点:
            1)每个有name属性的表单域对应一个请求参数。
            2)如果有name属性的表单域有相同的name属性,则多个表单域只生成一个请求参数,只是该参数有多个值。
            3)表单域的name属性指定请求参数名,value指定请求参数值。
            4)如果某个表单域设置了disable="disabled"属性,则该表单域不再生成请求参数。
    8)response:代表服务器对客户端的响应。较少使用
            response对象可以输出非字符内容,重定向请求(但与forward不同,重定向会丢失所有的请求参数和request范围的属性,重定向将生成第二次请求。),以及用于向客户端增加Cookie.
    9)session:代表一次对话。
        一次会话的含义是:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开为止。

总结:通过查看jsp页面编译后的Servlet类表明:request、response两个对象是_jspService()方法的形参,而page,pageContext,application,config,session,out都是_jspService()方法的局部变量,由该方法完成初始化。即可知道jsp内置对象的实质是:它们要么是_jspService()方法的形参,要么是_jspService()方法的局部变量,故可在jsp脚本(脚本对应Servlet的_jspService()方法部分)中调用这些对象,无需创建它们。

5、表达式语言
    (1)表达式语言的语法格式:${expresssion} .
    (2)表达式语言的内置对象,通过这些内置对象可以获取请求头及获取page、request、session和application范围的属性值等。
        pageContext:代表该页面的pageContext对象,与JSP的pageContext内置对象相同。
        pageScope:用于获取page范围的属性值
        requestScope:用于获取request范围的属性值
        sessionScope:用于获取session范围的属性值
        applicationScope:用于获取application范围的属性值
        param:用于获取请求的参数值
        paramValues:用于获取请求的参数值,与param的区别在于,该对象用于获取属性值为数组的属性值。
        header:用于获取请求头的属性值。
        heaerValues:用于获取请求头的属性值,与header的区别在于,该对象用于获取属性值为数组的属性值。
        initParam:用于获取请求Web应用的初始化参数。
        cookie:用于获取指定的Cookie值。















         


0 0
原创粉丝点击