• JSP 笔记整理


    1、JSP必须依附项目(站点) – ⼀一个站点包括WEB-INF目录(必须大写) 

         – WEB-INF目录中包括web.xml文件 

         – JSP文件与WEB-INF同级目录 

         JSP文件必须包括 – <%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8“ %>
    2、JSP 的六种标签
        
         伪指令标签<%@    %>    会对整个页面产生作用
              page <%@ page %>    
              include <%@ include file=""  %>
              taglib <%@ taglib prefic="c" %>   //如JSTL  
     
     
         注释标签<%--    ---%>
         
         动作标签<jsp:action Name/>
              jsp:include
                   <a href="JSP2.jsp?ID=123">     jsp1
              在jsp2中写入 <jsp:include page="JSP3.jsp">  jsp2
              在jsp3中写入 request.getparameter("ID")
    
         你要理解你的页面的关联的关系,其实jsp3已经被jps2包含进来了,所以其实jsp3在jsp2内,属于jsp2的子页,
         那么当你超链接到jsp2的时候同时也加载了jsp3,子页也能够接收到其他链接传递到父页的参数(其实你可以将jsp3看成jsp2的一部分就可以了) 
         在同一个页面的请求都是可以获取得到的
    
              jsp:forward  

              <jsp:forward page="">

           
                    <jsp:useBean id="pro" class="beans.product.ProductManager" scope="page" />
            
               表达式标签<%=   %>  不能使用分号结尾
         
         声明标签<%!   %>
         
         脚本标签<%      %>
     
    3、jsp 生命周期:
     
             jspInit() -> _jspService() -> jspDestroy()
     
              转换:将JSP源文件转换成对应的Servlet源文件
              编译:编译java源文件为类(class)文件
              装载:将类文件加载至内存
              创建:创建一个Servlet类实例对象
              初始化:调用int() 方法,_jspService();
              服务:调用_jspServlet()方法,最终调用Servelet类的service()方法,将请求和响应传递对应的doXXX()方法。
              销毁:调用 jspDestroy() 方法,最终调用 Servlet 类的destroy() 方法,销毁 Servlet
     
    4、page伪指令属性 
         import 属性(相当于java中的import)
         session属性 <%@page session="true/false" %>
         language
         extends
         contentType 属性指定页面响应的MIME类型和字符编码
         pageEncoding属性用于指定JSP页面字符编码格式
         <%@ language="java"  contentType =“text/html;charset=UTF-8”  pageEncoding="UTF-8" %>

    5、JSP转换Servlet
         声明标签:转换为Servlet类成员
         脚本标签:转换为_jspService()中的代码
         HTML代码:转换为_jspService()中的out.write()
         表达式标签:转换为_jspService()中的out.write()

         <%! %> 声明标签  声明变量、方法,可以先使用后声明。   在Servlet中  转换成 成员变量、方法
         <%  %> 声明变量、方法,必须先声明再使用。   在Servlet中转换成 局部变量、方法。
         <jsp:useBean id="" class="类名" />
    6、JSP容器在_jspService()方法中声明并初始化9个内置对象
         out
         application
         session
         request
         reponse
         page
         pageContext   //封装jsp上下文信息,管理jsp作用域中的对象访问。
         config
         exception
    7、jsp页面共有4种作用域范围
         Application
         Session
         Request 会话作用域  forward() include()
         Page  当前页面
    8、session.setAttribute(“user”,request.getParameter());<jsp:useBean>

    9、静态包含在
         在jsp源文件转换成对应的Servlet源文件时将当前JSP文件和其中包含的所有其他文件合并成一个Servlet文件
         jsp的include伪指令 实现静态包含 <%@include file=" " %> file属性不能是动态表达式,不能向被包含文件传递参数

    10、动态包含 包含和被包含文件各自独立编译.执行。
         使用jsp的include动作指令和forward动作指令实现动态包含。
         include允许当前页面将客户端请求暂时转交给所包含的对象,一旦对象执行完毕依然返回当前JSP页面。
         <jsp:include page=" " flush="true">

    include伪指令与include动作指令

     

    include伪指令

    include动作指令

    规则

    <%@include %>

    <jsp:include />

    编译时间

    较慢(资源必须被解析)

    较快

    执行时间

    较快

    较慢(因为每次请求资源必须被 解析)

    灵活性

    较差(页面内容必须固定)

    较好(页面在运行时可动态选择)

    动作发生的时间

    页面转换期间

    请求期间

    被包含的内容

    文件的内容

    页面的输出

    产生Servlet数目 

    1

    n

     



    11、forward动作指令允许将客户请求转发到另 ⼀一个资源文件,即每当遇到此动作指令就 停止执行当前的JSP,转而执行被转发的指 定资源
     语法格式:<jsp:forward page=“地址”/> 

    12动态指令的参数传递
    •  
      使用<jsp:param name=“” value=“”/>可以 传递⼀一个或多个参数给动态页面
      接受用<% request.getParameter(""); %>
      <%=sd   %>

       
    •  
      与include动作指令、forward动作指令⼀一起 使用
       
    13、
         Servlet中 <jsp:include page=“a.jsp” />  相当于 request.getRequestDispatcher(“a.jsp").include(request, response)    
      Servlet中 <jsp:forward page=“/a.jsp” />相当于 request.getRequestDispatcher(“/a.jsp").forward(request, response)


    14、<%@include file=" " %> 静态包含

    15、Cookie cookie = new Cookie("userID", "aValue");
           将Cookie 放到Http响应中  response.addCookie(cookie); 
     
     
    16、从客户端读取Cookie
         调用request.getCookies 得到Cookie对象组成的数组
         String cookieName="userID";
         Cookie[] cookies = request.getCookies();
         if(cookies != null){
              for(int i=0; i<cookies.length; i++){
                   Cookie cookie = cookies[i];
              if(cookieName.equals(cookie.getName())){
                 }
             }
         }          
     
     
    17、request.getSession 获取 HttpSession的对象
     
              HttpSession session = request.getSession();
         getAttribute();
         setAttribute("","");
         removeAttribute();
         removeAttribute();
         invalidate();
     
    18、String username = request.getParamter("usename");
     
    19、表达式限制调用Java方法。
         ${pageContext.request.getMothod() }  非法
         <%= request.getMothod()%> // 很正常
     
    20、EL内置对象
         pageContext 用于访问jsp内置对象
         pageScope代表page作用域
     
    21、Sendredirect 是不同的request,send后的语句会继续执行,需要到客户端的往返,地址栏有变化,可以传参数。
    22、Forword 后的语句不会继续传给客户端。速度块,服务器内部转换。地址栏没有变化。
     
    23、<jsp:useBean id= "相当于Bean的对象名(cb)" class='Bean的地址"> 
            </jsp:usrBean>
           等同于<%@ import=""  %>
                       <% CounterBean cb = new Bean(); %>
             <jsp:setProperty name = "cb" property="count"  value=" 23"/>  property="" 指的是Bean中的属性
              相当于<% cb.setCount(Interger.parseInt("23"))%> 
              <jsp:getProperty name="cb" property="count" />
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    tomcat feign rocketmq 最大线程数
    rocketmq
    使用docker在linux上安装oracle数据库
    dnf 腾讯 解人脸
    记一次mysql慢查询优化
    python运行内存分析
    【转】【WPF】WPF强制刷新界面
    【转】【WPF】Grid显示边框线
    流媒体服务新手入门教程03--音视频基础
    流媒体服务新手入门教程02--m7s环境搭建
  • 原文地址:https://www.cnblogs.com/yakun/p/chenyakun.html
Copyright © 2020-2023  润新知