您的位置:首页 > Web前端 > JavaScript

jsp & el & jstl

2018-03-18 11:32 495 查看
jsp:
         java服务器页面,运行在服务器端
         本质上就是一个serlvet,产生的java文件和class保留在tomcat的work目录下.
         <tomcathome>\work\Catalina\<server name>\<web app name>\org\apache\jsp
         xxx_jsp.java   xxx_jsp.class
jsp注释:
         html注释 <!--  -->
                  注释的内容只在页面上看不到  java代码和html源代码都有
         java注释
                  只在java代码中存在
         jsp注释 <%--  --%>
                  只在jsp页面中存在,翻译成java文件之后就没有了
jsp脚本:
         <%..%>java代码片段
         <%=..%>输出表达式相当于out.print();
         <%!...%>声明成员
jsp的指令
         作用:声明jsp页面的一些属性和动作
         格式:
                  <%@指令名称属性="值" 属性="值"%>
         jsp指令的分类:
                  page:主要声明jsp页面的一些属性
                  include:静态包含.
          
4000
        taglib:导入标签库
         注意:
                  一个页面中可以出现多个指令
                  指令可以放在任意位置,一般都放在jsp页面最上面.
 

1.page指令:                 contentType:设置响应流的编码,及通知浏览器用什么编码打开.                                                             pageEncoding:设置页面的编码                  import:导入所需要的包
2. include指令:
                  静态包含,就是将其他jsp页面或者servlet的内容包含进来,生成一个.java文件和.class文件.
                  格式:
                          <%@includefile="相对路径或者是内部路径" %>
                  例如:
                          <%@includefile="/jsp/include/i1.jsp" %>
                         
                  路径:
                          相对路径:
                                   ./或者什么都不写当前路径
                                   上一级路径  ../
                          绝对路径:
                                   带协议和主机的绝对路径
                                   不带协议和主机的绝对路径
                                            /项目名/资源
                                           
                          内部路径:
                                   不带协议和主机的绝对路径去掉项目名
                                            请求转发、静态包含、动态包含
 
3. taglib指令:导入标签库
                  格式:
                           <%@taglib prefix="前缀名" uri="名称空间" %>
                  若导入之后
                           <前缀名:标签 .. >
                  例如:
                           <c:if test="">输出内容</c:if>
 
 
jsp的内置对象: (9大内置对象)
         在jsp页面上可以直接使用的对象
                  内置对象                          类型
                  out                                      JspWriter
                  request                              HttpServletRequest
                  response                            HttpServletResponse
                  session                               HttpSession
                  exception                          Throwable
                  page                                   Servlet(this)
                  config                                 ServletConfig
                  application                        ServletContext
                  pageContext                     PageContext
         jsp的域对象:
                  application               整个项目
                  session                      一次会话
                  request                     一次请求
                  pageContext            一个页面
         pagecontext作用
                  1.域对象
                          xxxAttribute();
                  2.操作其他域对象
                          方法:
                                   pageContext.setAttribute(...,…,scope);
                                            scope取值:
                                                     APPLICATION_SCOPE
                                                     SESSION_SCOPE
                                                     REQUEST_SCOPE
                                                     PAGE_SCOPE
                  3.获取其他的内置对象
                          xxx.getAttribute();
                          例如: request.getAttribute ():获取request内置对象
                  4.便捷查找
                          findAttribute(Stringkey):

                    依次从pagecontext,request,session,application四个域中,查找相应的属性,                    若查找到了返回值,且结束该次查找                    若查找不到,返回一个null 
jsp的动作标签
         <jsp:forward>:请求转发  相当于java中  request.getRequestDispatcher(..).forward(..);
                  <jsp:forwardpage="内部路径"></jsp:forward>
         <jsp:include>:动态包含
                  同静态包含,不过会生成好几个.java文件和.class文件.
 
 
 
el:
jsp的内置表达式语言,从jsp2.0开始.用来替代<%=..%>
作用:
         1.获取域中数据
         2.执行运算
         3.获取常见的web对象
         4.调用java的方法
格式:<
f29c
/p>         ${el表达式}
 
                 
获取域中数据:
         注意:
                  若属性名中出现了"."|"+"|"-"等特殊符号,需要使用scope获取
                  例如:${requestScope["arr.age"] }
         1.获取简单数据
                  ${pageScope|requestScope|sessionScope|applicationScope.属性名}
                  以后经常使用这种方式:${属性名}
            依次从pageContext,request,session,application查找指定属性
            若查找到返回值,结束该次查找
                若查找不到,返回""
         2.获取复杂数据
                  获取数组中的数据
                          ${域中的名称[index]}
                  获取list中的数据
                          ${域中的名称[index]}
                  获取map中的数据
                          ${域中的名称.键名}
         3.javabean
                          java语言编写的一个可重用的组件,
                          狭义上来说就是我们编写的一个普通的java类例如:User Person
                          javabean规范:
                                   1.必须是一个公共的具体的类  public class
                                   2.提供私有的字段  private String id;//id称之为字段
                                   3.提供公共访问字段的方法 get|set方法
                                                     get|set之后的内容,将首字母小写,将这个东西称之为bean属性
                                                     例如:public String getId(){..}  id就是一个bean属性
                                   4.提供一个无参的构造器
                                   5.一般实现序列化接口serializable
                           获取域中的值:
                           ${域中javabean名称.bean属性}
 
el的内置对象(了解)
                  pageScope
                  requestScope
                  sessionScope
                  applicationScope   
                  param
                  paramValues  
                  header
                  haederValues 
                  initParam
                  cookie
                  pageContext
注意:
                  除了pageContext其余对象获取的全是map集合
 
            1.cookie内置对象:
                  ${cookie} 等价于map{key=Cookie}
                          例如:创建cookie
                                   Cookie c=newCookie("username","tom");
                          ${cookie}相当于   
                                   {username=newCookie("username","tom")}
                          map的key是cookie的键(username)
                          map的value是当前cookie的值(new Cookie("username","tom"))
                         
                  若项获取名称username的cookie的value值(获取tom)
                          ${cookie.username.value}
                  因为:
                          java中Cookie的api
                                   getName():获取cookie的名称
                                   getValue():获取cookie的value值
                          我们称name和value是cookie的bean属性
        
                  使用cookie内置对象获取值:
                          ${cookie.给cookie起名字.value}
                  例如:
                          获取jsession的值
                          ${cookie.JSESSIONID.value}
                         
             2.pageContext:获取不是map集合,相当于jsp的pageContext内置对象
                          在jsp页面中获取项目名
                          ${pageContext.request.contextPath}
 
 
 
jstl:
         jsp标准的标签库语言,apache的用来替代java脚本
         使用步骤:
                  1.导入jar包(jstl.jar和standard.jar)
                  2.在页面上导入标签库
                          <%@taglibprefix="" uri=""%>
                          例如:
                                   <%@taglibprefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
         jstl的分类:
                  core:核心类库
                  fmt:格式化|国际化
                  xml:过时了
                  sql:过时了
                  函数库:很少使用
                 
                  c:if
                  c:forEach
                  c:set
                  c:choose
                  c:when
                  c:otherwise
 
                  c:if判断
                  <c:iftest="${el表达式}">满足的时候输出的内容</c:if>
                  例如:
                          <c:iftest="${3>4 }">
                                   3大于4
                          </c:if>
                          <c:iftest="${3<=4 }">
                                   3不大于4
                          </c:if>
                         
                  c:forEach循环
                  格式1:
                           <c:forEach begin="开始" end="结束"step="步长" var="变量名" varStatus="循环状态变量">
                                   ${i }  ${vs.count }  ${vs.current }
                           </c:forEach>        
                                    例如:
                          <c:forEachbegin="1" end="20" step="2" var="i"varStatus="vs">
                                   ${i }  ${vs.count }  ${vs.current }
                          </c:forEach>
                 
                  格式2:
                          <c:forEachitems="${el获取域中的容器}"var="n">
                                   ${n }
                          </c:forEach>
                           例如:
                                   //遍历list
                                   <c:forEachitems="${list }" var="n">
                                            ${n}
                                   </c:forEach>
                                  
                                   //遍历map
                                    <c:forEach items="${map }"var="en">
                                            ${en.key}  ${en.value }
                                    </c:forEach>
                 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: