zoukankan      html  css  js  c++  java
  • JSP 使用

    JSP教程: http://www.w3cschool.cc/jsp/jsp-tutorial.html

    jsp语法:

    任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依然有其自己扩充的语法,而且在JSP中,所有的JAVA语句都可以使用。

    • <%= %>表达式。不能用分号结束之
      JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.print(…) 将数据输给客户端;不能用分号结束之
    • <% %>脚本:多行Java代码,定义变量、编写语句等但不能定义方法。
      JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中。
    • <%! %>声明:变量、方法等。
      JSP页面中编写的所有代码默认会翻译到servlet的_jspService方法中, 而Jsp声明中的java代码被翻译到_jspService方法外;JSP隐式对象的作用范围仅为Servlet的_jspService方法,故在JSP声明中不能使用这些隐式对象。
    • <%-- --%>注释
    • <%@ %>指令:设置与整个jsp页面相关的属性(详见参考文献:http://www.cnblogs.com/xdp-gacl/p/3778993.html)。三个:
      • <%@ page ... %> 定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等。
        无论page指令出现在JSP页面中的什么地方,它作用的都是整个JSP页面,为了可读性常放在页首。
      • <%@ include ... %> 包含其他文件。
        用于引入其它JSP页面(即使扩展名不是.jsp也按jsp处理),如果使用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP翻译成一个servlet。所以include指令引入通常也称之为静态引入。
        JSP规范建议使用.jspf(JSP fragments(片段))作为静态引入文件的扩展名。
      • <%@ taglib ... %> 引入标签库的定义,可以是自定义标签


    jsp行为

    详见:http://www.cnblogs.com/xdp-gacl/p/3788369.html

    <jsp:action_name attribute="value" />
    jsp:include 用于在当前页面中包含静态或动态资源
    jsp:useBean 寻找和初始化一个JavaBean组件,对应的JavaBean必须有一个无参数的构造器。详见:http://www.cnblogs.com/xdp-gacl/p/3871730.html
    jsp:setProperty 设置 JavaBean组件的值
    jsp:getProperty 将 JavaBean组件的值插入到 output中
    jsp:forward 服务端页面跳转,携带request和response对象,跳转时浏览器URL不变
    jsp:param 当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给其它资源时,可以使用<jsp:param>标签向这个资源传递参数。
    jsp:plugin 用于在生成的HTML页面中包含Applet和JavaBean对象
    jsp:element 动态创建一个XML元素
    jsp:attribute 定义动态创建的XML元素的属性
    jsp:body 定义动态创建的XML元素的主体
    jsp:text 用于封装模板数据

    jsp隐含对象:9个

    详见:http://www.cnblogs.com/xdp-gacl/p/3779872.html

    • request HttpServletRequest类的实例
    • response HttpServletResponse类的实例
    • out PrintWriter类的实例,用于把结果输出至网页上
    • session HttpSession类的实例
    • application ServletContext类的实例,与应用上下文有关
    • config ServletConfig类的实例
    • pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问。
      JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象(容器),可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。

      getException方法返回exception隐式对象 getPage方法返回page隐式对象 getRequest方法返回request隐式对象 getResponse方法返回response隐式对象 getServletConfig方法返回config隐式对象 getServletContext方法返回application隐式对象 getSession方法返回session隐式对象 getOut方法返回out隐式对象

      pageContext对象在jsp自定义标签开发中特别重要。

       pageContext对象可以作为容器来使用,因此可以将一些数据存储在pageContext对象中。

       pageContext对象的常用方法:

      1 public void setAttribute(java.lang.String name,java.lang.Object value)
      2 public java.lang.Object getAttribute(java.lang.String name)
      3 public void removeAttribute(java.lang.String name)
      4 public java.lang.Object findAttribute(java.lang.String name)

        重点介绍一下findAttribute方法,这个方法是用来查找各个域中的属性的,查看这个方法的API可以看到关于这个方法的描述:
        Searches for the named attribute in page, request, session (if valid), and application scope(s) in order and returns the value associated or null.

        当要查找某个属性时,findAttribute方法按照查找顺序"page→request→session→application"在这四个对象中去查找,只要找到了就返回属性值,如果四个对象都没有找到要查找的属性,则返回一个null。

    • page 类似于Java类中的this关键字。表示当前的一个JSP页面,可理解为一个对象本身,即:把一个JSP当作一个对象来看待。page对象在开发中几乎不用。
    • Exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象。
      一般情况下exception对象在Jsp页面中获取不到,设置page指令的isErrorPage属性为"true"来显式声明Jsp页面是一个错误处理页面后,Jsp引擎在将jsp页面翻译成Servlet时在Servlet的 _jspService方法中会声明一个exception对象,
      然后将运行jsp出错的异常信息存储到exception对象中,这样在Jsp页面中就能使用exception对象。

    jsp迭代http://www.runoob.com/jsp/jstl-core-foreach-tag.html

    虽然jsp页面里能嵌入java代码,这点很强大,但对于在jsp页面获取后台传来的数据这种场合,java也无能为力,此时可以借助jsp标准标签库(JSTL)。在jsp页面中可以通过${parakey}获取控制器传向页面的值,但要如果返回的个list,如何迭代取出?可以通过<c:forEach>标签

    1、jsp c:forEach标签的属性。(<c:forEach items="${stuList}"  begin="1" end="20" step="2" var ="student" varStatus="status">标签体内的内容</c:forEach>)

    items:要被循环的对象;

    var:代表当前循环到的元素;

    begin:指定开始循环元素的下标(从0开始);

    end:指定循环的最后一个元素的下标;

    step:每次循环的步长;

    varStatus:由 varStatus 属性命名的变量并不存储当前索引值或当前元素,而是赋予javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。该类定义了一组特性,它们描述了迭代的当前状态,下面列出了这些特性:

    特性 Getter 描述 使用
    current getCurrent() 当前这次迭代的(集合中的)项,与上述student变量功能一样  status.current
    index getIndex() 当前这次迭代从 0 开始的迭代索引  status.index
    count getCount() 当前这次迭代从 1 开始的迭代计数  status.count 
    first isFirst() 用来表明当前这轮迭代是否为第一次迭代的标志,返回true或false  status.first 
    last isLast() 用来表明当前这轮迭代是否为最后一次迭代的标志,返回true或false  status.last 
    begin getBegin() begin 属性值  status.begin 
    end getEnd() end 属性值  status.end 
    step getStep() step 属性值  status.step 
  • 相关阅读:
    将Nginx添加到windows服务中
    springboot使用redis管理session
    GIT常用命令
    阻止360、谷歌浏览器表单自动填充
    谈谈对Spring IOC的理解
    同一个Nginx服务器同一端口配置多个代理服务
    LeetCode 653. Two Sum IV
    109. Convert Sorted List to Binary Search Tree(根据有序链表构造平衡的二叉查找树)
    108. Convert Sorted Array to Binary Search Tree(从有序数组中构造平衡的BST)
    LeetCode 236. Lowest Common Ancestor of a Binary Tree(二叉树求两点LCA)
  • 原文地址:https://www.cnblogs.com/z-sm/p/4613579.html
Copyright © 2011-2022 走看看