jsp相关el 3 6 9 11

三指三大指令,六指六个动作 九指九个内置对应 ,十一个隐藏对象

一。jsp介绍


   j s p   java server pages! 一种动态的页面技术!本质是Servlet
     
        jsp = java+html


二。jsp使用策略


html  --》 就是单纯的页面 不涉及一点java代码!  


servlet --》处理业务逻辑


jsp --> 有html 又需要java代码!




index.jsp   --> html


deal.jsp  --> servlet


success.jsp  --> jsp



jsp内部结构!jsp如何实现java代码html混淆!jsp本质就是servlet!


1.service  


包含java代码!
html out.print() 写到页面


    2.jsp 


      java代码通过特殊的标签 不编译!直接添加到service
      html代码会直接写出 out


    3.jsp本质 servlet    


       jsp --> xx_jsp.java --> HttpJspBase  extends HttpServlet --


       jsp --> Servlet




       jsp --> java --> class


     思考: servlet  java 和 html 
     
        service()


           java


           html 


           java 


           html    


三。jsp的基本语法


 1.jsp添加注释


    <!-- 网页注释 -->  页面查看源码可以看见
             <%-- jsp的注释 --%> 看不见  安全 流量


          2.添加java代码
          
            <% 
  java代码


  此处代码会被编译到 service方法中!
  不能声明方法!不能使用 static 


  其他代码块互相调用的时候注意先后顺序
            %>   




   3.声明全局变量/方法


     <%!
        全局的
      %>


   4.<%=xx %>    写到页面


    out.print(xx)




四。jsp的三个指令


指令是控制jsp页面的整体性质! 


   编码格式
   内置对象等等


1.指令的引入方式!


  <%@ 指令的名称
        
        2.三大指令介绍 


           page    负责jsp页面的整体配置
           include 动态包含
           taglib  引入jstl包! 引入第三方包!


        
        3.page 


        负责jsp页面的整体配置


         1.language="java" jsp 编译后的语言!  只有java


         2.import 导java的包!
  -
           <%@page import="包路径1,包路径2,....."


           -- 
           <%@page import="包路径1"
           <%@page import="包路径1"




         3.session
         
           默认是true  自动创建session


           false不创建了!


         4.autoFlush="true"
         
           自动刷新


         5.jsp error-page  
         
           指定jsp报错走错误页面! 




          web.xml


          设置错误码
              <error-page>
    <error-code>500</error-code>
    <location>/html/error.html</location>
 </error-page>
设置具体的错误类型
 <error-page>
    <exception-type>java.lang.ArithmeticException</exception-type>
    <location>/error.html</location>
 </error-page>       


              6.isErrorPage


                 默认是false  


                 没有exception


                 true exception 


                 能获取错误信息 exception.getMessage();
      
       7.isELIgnored


           false  -=-> 可以使用el表达式


       8.pageEncoding="UTF-8"
       
         jsp --  java  - class  


         编译的格式! pageEncoding 能指定编译格式


         设置response响应的编码格式!


         设置编码格式  window - jsp  






   4.include包含 静态包含
   
    <%@include file="1.jsp" %>


    需要删除  删自己!


    2 包含
    1  被包含


    <%@include 这种形式去包含! 不会编译被包含者!
    只会把被包含者内写到包含着中! 


    动态和静态两种!优选选择静态!!




   5.taglib 
   
     引入第三方包  jstl


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




五。jsp的六个动作


 <jsp:include  包含!


  包含者
  被包含者 


  这种包含方式会将两个对象都会进行编译!动态包含!


 <jsp:forward
  <jsp:param


  forward转发! 


  <jsp:forward page="result.jsp">
      <jsp:param value="老王吧" name="name"/>
      </jsp:forward>
 
   注意:如果使用param传递参数! 防止中文乱码!
   在他之前调用  request.setCharacterEncoding("UTF-8");


 <jsp:useBean
 <jsp:setProperty
 <jsp:getProperty


<!-- 通过标签声明实体类对象 
    id 对象名字
    class: 类的全路径 注意此处是反射 要求类无参数构造方法
    --> 
<jsp:useBean id="javabean" class="com.itqf.bean.JavaBean"></jsp:useBean>  
<!-- 
name:操作属性的对象名字
propery:属性名
value:设置的属性值
-->
<jsp:setProperty property="name" name="javabean" value="小老五啊啊啊"/> 
 
  <!-- 
name:操作属性的对象名字
propery:属性名 -->

<jsp:getProperty property="name" name="javabean"/>


 jsp = java + html
 


  编程思想:  


  java:万物皆对象


  前段:万物皆标签




六。jsp的九个内置对应 ****


   jsp中 Java代码直接可以使用!


   <% %>


   out        PrintWriter
   request    HttpServletRequest
   response   HttpServletResponse
   session    HttpSession
   execption  Execption
   application  ServletContext
   config      ServletConfig
   page       page是this   Object
   pageContext 新的共享域




   final javax.servlet.jsp.PageContext pageContext;
 javax.servlet.http.HttpSession session = null;
 final javax.servlet.ServletContext application;
 final javax.servlet.ServletConfig config;
 javax.servlet.jsp.JspWriter out = null;
 final java.lang.Object page = this;
 javax.servlet.jsp.JspWriter _jspx_out = null;
 javax.servlet.jsp.PageContext _jspx_page_context = null;




 pageContext: 


 web四个共享域
   
   servletContext 整个项目


   session  一次会话


   request 一次请求 或者一次转发


   pageContext  service方法中


pageContext:作为共享域 还没有局部变量好使!   




操作自己数据: 没意义


   setAttribute(name,object);
   removeAttribute(name,object);
   getAttribute(name,object);


操作别共享域的属性: 
 
   获取和添加:


   setAttribute(name,object,int Scope);
   removeAttribute(name,int);
   getAttribute(name,int); 




   Scope: 


        APPLICATION_SCOPE  4
        SESSION_SCOPE  3
        REQUSET_SCOPE  2
        PAGE_SCOPE 1




 findAttribute(name)




 会根据属性名 直接去四个域找到合适!


 如果四个域中有重名!


 从小的开始找!      


七. el表达式


${req }


el 语法 ${域的属性的名字 }


==


pageContext.findAttribute(域的属性的名字 )




优势:简化输出!


1.输出四个域的内容
  
  ${属性名 }  四个域! 从小到大
 
2.直接输出 或 输出简单的数学运算


${"我爱你中国啊啊啊" }  
       
             ${1==1 }


3.属性导航 属性调用


   class Student{


    private String name;
    private Xifu xifu;


    class Xifu{
    private String name;
    }


   }




   student.name
   student.xifu.name




       1.对象
  ${属性名.属性名 }
  ${属性名.方法 }


  属性名 调用的是get方法获取数据!


  如果域中保存的是对象!那么可以直接.属性获取值!
  注意:类中应该有get方法!


2.list

 属性名[index]


 属性名.get(index)   


3.list 里面放对象  


4.map


 属性名.get(key)
 属性名.key的值
 属性名['key值']


5.list -- map  -- String 对象  






        4.表达式  


        empty
 
        ${empty 属性名/具体值}
        ${!empty 属性名/具体值}


        String  "xxx"  --> false
               ""     --> true




        Object 对象new了 就不为空  
       


        List  内部有数据 不为null 
         没有数据为null 


        Map  有数据不为null 


            没有数据为null    




        三元运算符


          三元运算符 
       
        ${1!=1? "true":"false"}
        
        <input type="radio" name="is" ${empty usernam?"":"checked=checked" } />




11个隐藏对象!!!    el




 ${name }    --> 四个域中找!  从小到大


 我想取 请求参数!
 我想取cookie的值!取不了!


  pageContext  -- request  -- getContextPath


  ${pageContext.request.contextPath }  == /项目名


  jsp中 ${pageContext.request.contextPath } 获取项目名




    pageScope
    requestScope
    sessionScope
    applicationScope 指定域获取范围




    param       提交表单数据   map 
    paramValues 提交的表单数据  多选框


    header 获取请求头信息  ${header['请求头名字']}
    headerValues 一个请求头对应多个数据




    cookie    map  name  cookie 
   
    ${cookie.cookie的名字.value/name}


    initParam  web.xml中的全局变量



八. jstl表达式




    el 简化输出


    jstl 简化逻辑 


       判断 -->
       循环 -->




   1.需要利用指令导包
   
     <%@ taglib uri  prefix="c" 




   2.set out remove
   
     <!-- set out remove -->
        <c:set var="num" value="10" ></c:set>
        
        <c:remove var="num"/>
        
        <c:out value="${num }" default="aaa"></c:out>     
       
       3.if


         <c:if  test="值"></c:if>


         1.字符串  true false


         2.1==1  = true ${ }


       4.choose 


           <c:choose>
            <c:when test="${num>10 && num <20 }">
                小白菜  vip1
            </c:when>
            
            <c:when test="${num>=20 }">
              酸菜 vip2
            </c:when>
         </c:choose>




       5.
       
        var i 声明变量
        begin  起始的值
        end 结束的值
        step 每步+多少


        <c:forEach  var="i" begin="0" end="${list.size()-1 }" step="1">
       
          <img src="${list[i] }" alt="" title="" />
       
       </c:forEach>  






       增强for循环




        <c:forEach items="${list }" var="item" varStatus="vs">
             
              <tr align="center" ${vs.index%2==0?"bgcolor='#fb5832'":"bgcolor='#ffffff'" }>
                <td>${vs.index }</td>
                   <td>${item }</td>
                   <td>${vs.count }</td>
                   <td>${vs.first }</td>
                   <td>${vs.last }</td>     
              </tr>


             </c:forEach>
            




     jsp:  




         jsp 9内置对象


         el表达式


         jstl

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值