zoukankan      html  css  js  c++  java
  • JSP--原理

    主要内容:

    1.JSP基础

    2.Cookie

    3.HttpSession

    ==========================================

    JSP基础

    1.jsp的作用

      *Servlet:

        >缺点:不适合设置html响应体,需要大量的response.getWriter().print("html");

        >优点:动态资源,可以编程。

      *html:

        >缺点:html是静态页面,不能包含动态信息

        >优点:不用为输出html标签而发愁

      *jsp:(Java Server Pages)

        >优点:在原有的html基础之上添加了java脚本,构成jsp页面。

    2.jsp和Servlet的分工:

      *JSP:

        >作为请求发起页面,例如显示表单、超链接。

        >作为请求结束页面,例如显示数据。

      *Servlet:

        >作为请求中处理数据的环节。

    3.jsp的组成

      *jsp=html + java脚本 + jsp标签(指令)

       *jsp中无需创建即可使用的对象一共有9个,被称之为9大内置对象。例如:request对象、out对象

      *3种java脚本:

        >   <%...%>:java 代码片段(常用),用于定义0~N条Java语句!---->方法里能写什么它就能放什么。

        >    <%=...%>:Java表达式,用于输出(常用),用于输出一条表达式(或变量)的结果。--->response.getWriter().print(...);这里能放什么,它就可以放什么!

        >     <%!...%>:声明,用来创建类的成员变量和成员方法(基本不用,但容易被考到)。--->类体中可以放什么,它就可以放什么。

          class MyClass{

            成员;

            方法;

            构造器;

            构造代码块;

            静态块;

            内部类;

          }

      案例:演示jsp中java脚本的使用!

    <!-- 它是jsp指令,也是一种特殊的标签! -->
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!-- Java代码的片段 -->
    <%
    String path = request.getContextPath();//获取项目名
    /*
    http://localhost:8080/XJS_JSP/
    */
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    //获取协议名+服务器名+服务器端口号+path项目名+
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
          <!-- 向页面输出basePath -->
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
      </head>
      
      <body>
        This is my JSP page. <br>
        <%
            int a=10;
         %>
         <br>
         <%
             out.print(a);
          %>
          <%=a %><!-- 输出 -->
          
      </body>
    </html>

      案例:演示jsp与servlet分工!

    form.jsp

    1 form.jsp
    2 
    3     <form action="/XJS_JSP/AServlet" method="post">
    4         整数1:<input type="text" name="num1" value="">
    5         整数2:<input type="text" name="num2" value="">
    6         <input type="submit" value="提交">
    7     </form>

     result.jsp

    1 <body>
    2         结果是:<%=request.getAttribute("sum") %>
    3   </body>

    AServlet.java

     1 public class AServlet extends HttpServlet {
     2     public void doPost(HttpServletRequest request, HttpServletResponse response)
     3             throws ServletException, IOException {
     4         String num1=request.getParameter("num1");
     5         Integer n1 = Integer.valueOf(num1);
     6         String num2 = request.getParameter("num2");
     7         Integer n2 = Integer.valueOf(num2);
     8         int c=n1+n2;
     9         request.setAttribute("sum", c);
    10         //转发到a.jsp
    11         RequestDispatcher rd=request.getRequestDispatcher("/result.jsp");
    12         rd.forward(request, response);
    13     }
    14 
    15 }

    4.jsp原理(理解)

      *jsp其实是一种特殊的Servlet

        >当jsp页面第一次被访问时,服务器会把jsp编译成java 文件(这个java其实是一个servlet类)

        >然后再把java编译成.class文件

        >然后创建该类对象

        >最后调用它的service()方法

        >第二次请求同一jsp时,直接调用service()方法。

      *在tomcat的work目录下可以找到jsp对应的.java源代码。

      *查看jsp对应的java文件:

        >java脚本

        >html

    在这些源文件中的jspService()方法中,已经声明过了jsp的9大内置对象 ,以及对内置对象的赋值,然后你就可以在jsp中直接使用内置对象了。

    5.jsp注释

      *  <%-- ... --%>:当服务器把jsp编译成Java文件时已经忽略了注释部分!不会在客户端浏览器显示!!!

    <!--  HTML注释  -->会出现在编译后的Java代码中,也会发送到客户端的F12开发人员(源码界面),但不会在页面显示!!!

  • 相关阅读:
    spark 源码分析之五--Spark RPC剖析之创建NettyRpcEnv
    spark 源码分析之四 -- TaskScheduler的创建和启动过程
    spark 源码分析之三 -- LiveListenerBus介绍
    spark 源码分析之二 -- SparkContext 的初始化过程
    scala class中孤立代码块揭秘
    spark 源码分析之一 -- RDD的四种依赖关系
    spark streaming 接收kafka消息之五 -- spark streaming 和 kafka 的对接总结
    spark streaming 接收kafka消息之四 -- 运行在 worker 上的 receiver
    spark streaming 接收kafka消息之三 -- kafka broker 如何处理 fetch 请求
    spark streaming 接收kafka消息之二 -- 运行在driver端的receiver
  • 原文地址:https://www.cnblogs.com/xjs1874704478/p/10838374.html
Copyright © 2011-2022 走看看