Java web知识框架梳理(九)

EL :为了消除jsp中的Java代码

    详细手册可看博客  https://my.oschina.net/sunjun/blog/9024

    语法:
      ${EL表达式}
      a.EL不需要导包
      b.在EL中调用属性,其实是调用的getXxx()方法

     ${范围.对象.属性.属性的属性 }

    操作符:操作:属性,不是对象
   点操作符 : 使用方便
   [] :         如果是常量属性,需要使用双引号/单引号 引起来;比点操作符更加强大
   []强大之处:
          a.可以容纳一些 特殊符号 (.  ?   -)
          b.[]可以容纳 变量属性 (可以动态赋值)
           String x = "a";
          ${requestScope.a}等价于${requestScope["a"]}等价于${${requestScope[x]}

         c.可以处理数组
         ${requestScope.arr[0] }

通过EL获取JSP  九大内置对象

${pageContext }
${pageContext.request }
${pageContext.sessoin }

JSTL:比EL更加强大

需要引入2个jar :jstl.jar   standard.jar
引入tablib  : 

 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

   其中prefix="c" :前缀

   核心标签库:  通用标签库、条件标签库  迭代标签库

a.通用标签库
<c:set>赋值
i:

在某个作用域之中(4个范围对象),给某个变量赋值
    <%-- 
        request.setAttribute("name", "zhangsan") ;
    --%>
        <c:set var="name"    value="zhangsan"   scope="request"/>
        ${requestScope.name }

<c:set var="变量名"    value="变量值"   scope="4个范围对象的作用域"/>


ii:
   给普通对象赋值
在某个作用域之中(4个范围对象),给某个对象的属性复制 (此种写法,不能指定scope属性)

 <c:set target="${requestScope.student}" property="sname"  value="zxs" />

     给map对象赋值

    <c:set target="${requestScope.countries}" property="cn"  value="中国" />

    <c:set target="对象" property="对象的属性"  value="赋值" />

注意 <c:set>可以给不存在的变量赋值 (但不能给不存在的对象赋值)

<c:out>  :显示

true:<c:out value='<a href="https://www.baidu.com">百度</a>' default="当value为空的
,显示的默认值" escapeXml="true" />
false:<c:out value='<a href="https://www.baidu.com">百度</a>' escapeXml="false" />

<c:remove >:删除属性

<c:remove var="a" scope="request"/>


选择:
if(boolean)
单重选择

<c:if test="" >

if else if... esle if... else  /switch

<c:choose>
    <c:when test="...">   </c:when>
    <c:when test="...">   </c:when>
    <c:when test="...">   </c:when>
    <c:otherwise>   </c:otherwise>
</c:choose>


!!!!!在使用 test="" 一定要注意后面是否有空格
例如:test="${10>2 }"   true
           test="${10>2 } "  非true
循环(迭代标签库)

for(int i=0;i<5;i++)
	<c:forEach  var="name" items="${requestScope.names }" >
		-${name }-
	</c:forEach>

for(String str:names)
	<c:forEach  var="student" items="${requestScope.students }" >
		${student.sname }-${student.sno }
	
	</c:forEach>

 

过滤器:

实现一个Filter接口
init()、destroy() 原理、执行时机 同Servlet
配置过滤器,类似servlet
通过doFilter()处理拦截,并且通过chain.doFilter(request, response);放行

filter映射

只拦截 访问MyServlet的请求
    <url-pattern>/MyServlet</url-pattern>
拦截一切请求(每一次访问 都会被拦截)
<url-pattern>/*</url-pattern>

通配符

dispatcher请求方式:
      REQUEST:拦截HTTP请求 get post
      FORWARD:只拦截 通过 请求转发方式的请求 

     INCLUDE:只拦截拦截通过 request.getRequestDispatcher("").include()  、通过<jsp:include page="..." />此种方式发出的请求
      ERROR:只拦截<error-page>发出的请求


     过滤器中doFilter方法参数:ServletRequest
     在Servlet中的方法参数:HttpServletRequest
     过滤器链可以配置多个过滤器,过滤器的先后顺序 是由 <filter-mapping>的位置 决定

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值