• 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开发人员(源码界面),但不会在页面显示!!!

  • 相关阅读:
    Entity Framework Core 2.0 新特性
    asp.net core部署时自定义监听端口,提高部署的灵活性
    asp.net core使用jexus部署在linux无法正确 获取远程ip的解决办法
    使用xshell连接服务器,数字键盘无法使用解决办法
    使用Jexus 5.8.2在Centos下部署运行Asp.net core
    【DevOps】DevOps成功的八大炫酷工具
    【Network】Calico, Flannel, Weave and Docker Overlay Network 各种网络模型之间的区别
    【Network】UDP 大包怎么发? MTU怎么设置?
    【Network】高性能 UDP 应该怎么做?
    【Network】golang 容器项目 flannel/UDP相关资料
  • 原文地址:https://www.cnblogs.com/xjs1874704478/p/10838374.html
Copyright © 2020-2023  润新知