• JSP系列记录


    JSP就是可以实现在html中写Java代码

    例:

    hello.jsp

    <%@page contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" import="java.util.*"%>      <!-- 引入相关的Java包-->
     
    你好
    <%                                <!--这里面可写Java代码 -->
        String list = "listssssss";
       session.setAttribute("list", list);          <!--设置session -->
    %>
    <br>
    <a href="bye.jsp">跳转到bye页面</a>            <!-- 纯html代码-->

    bye.jsp

    <%@page contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" import="java.util.*"%>
     
    拜拜! 
    <br>
    <%=new Date().toLocaleString()%>          <!--输出时间,Java代码-->
    <br>
    <%
        String list = (String)session.getAttribute("list");    <!--获得session-->
    %> 
    <%= list%>                             <!--输出session内容-->

    执行过程

    例如新建一个hello.jsp文件:

    •  把 hello.jsp转译为hello_jsp.java
    •  hello_jsp.java是一个servlet
    •  把hello_jsp.java 编译为hello_jsp.class
    •  执行hello_jsp,生成html
    • 通过http协议把html 响应返回给浏览器

    页面元素

    1. 静态内容
    就是html,css,javascript等内容
    2. 指令
    以<%@开始 %> 结尾,比如<%@page import="java.util.*"%>
    3. 表达式 <%=%>
    用于输出一段html
    4. Scriptlet
    在<%%> 之间,可以写任何java 代码
    5. 声明
    在<%!%> 之间可以声明字段或者方法。但是不建议这么做。
    6. 动作
    指令include   <%@include file="footer.jsp" %>。footer.jsp的内容会被插入到 hello.jsp 转译 成的hello_jsp.java中,最后只会生成一个hello_jsp.java文件

    动作include   <jsp:include page="footer.jsp" />   footer.jsp的内容不会被插入到 hello.jsp 转译 成的hello_jsp.java中,还会有一个footer_jsp.java独立存在。 hello_jsp.java 会在服务端访问footer_jsp.java,然后把返回的结果,嵌入到响应中。

    7. 注释 <%-- -- %>
    不同于 html的注释 <!-- --> 通过jsp的注释,浏览器也看不到相应的代码,相当于在servlet中注释掉了

    跳转

    服务器端跳转:

    request.getRequestDispatcher("hello.jsp").forward(request, response);

    或使用动作

    <jsp:forward page="hello.jsp"/>

    客户端跳转:

    response.sendRedirect("hello.jsp");

    作用域

    pageContext表示当前页面作用域

    requestContext 表示一次请求。随着本次请求结束,其中的数据也就被回收.

        如果发生了服务端跳转,从setContext.jsp跳转到getContext.jsp,这其实,还是一次请求。 所以在getContext.jsp中,可以取到在requestContext中设置的值

        客户端跳转,浏览器会发生一次新的访问,新的访问会产生一个新的request对象。所以页面间客户端跳转的情况下,是无法通过request传递数据的。

    sessionContext 指的是会话,从一个用户打开网站的那一刻起,无论访问了多少网页,链接都属于同一个会话,直到浏览器关闭。 

    applicationContext 指的是全局,所有用户共享同一个数据

  • 相关阅读:
    shell函数
    sed命令
    交互式输入与for语句
    day01_云计算概述及kvm介绍
    grep与正则表达式
    shell的编程原理
    shell的文本处理工具
    shell的基础入门
    深入理解JavaScript中 fn() 和 return fn() 的区别
    一篇笔记带你快速掌握面向对象的Javascript(纯手打)
  • 原文地址:https://www.cnblogs.com/dong973711/p/10934227.html
Copyright © 2020-2023  润新知