zoukankan      html  css  js  c++  java
  • JSP概述

     

    一、JSP起源

    在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变。如果使用Servlet程序来输出只有局部内容需要改变的网页,其中所有静态内容也需要程序员用Java代码产生,整个Servlet程序代码就非常臃肿,编写和维护都非常困难。为了弥补Servlet的缺陷,SUN公司在Servlet的基础上推出了JSP技术作为解决方案。

     

    二、为什么要用JSP

    JSP是简化Servlet编写的一种技术,它将Java代码和HTML语句混合在同一个文件中编写,只对网页中的要动态产生的内容采用Java代码来编写,而对固定不变的静态内容采用,普通静态HTML页面的方式编写。
    Java Server Page:Java服务器端网页,在HTML页面中编写Java代码的页面,扩展名必须是.jsp。

     

    三、JSP相关认识

    JSP页面是由HTML语句和前台在其中的Java代码组成的一个普通的文本文件,JSP页面的文件扩展名必须为.jsp。
    在JSP页面中编写的Java代码需要嵌套在<%和%>中,嵌套在<%和%>之间的Java代码被称之为脚本片段,没有嵌套在<%和%>之间的内容被称为JSP模板元素。
    JSP中的Java代码可以使用out.println()语句将其他Java程序代码产生的结果字符串输出给客户端,也可以使用System.out.println()语句将他们打印到控制台。
    JSP文件就行普通的HTML文件一样,他们可以放置在WEB应用程序中的除了WEB-INF及其子目录外的其他任何目录中,JSP页面的访问路径与普通HTML页面的访问路径形式完全一样。
    在JSP页面中也可以使用一种称之为JSP表达式的元素,只需要输出的变量或者表达式直接封装在<%=和%>之中,就可以向客户端输出这个变量或表达式的运算结果。
    在JSP表达式中嵌套的变量或者表达式后面不能有分号,如果没有页面会报错。

     

    四、案例分析

    ♦搭建一个动态的Web工程
    JSP学习篇之概述的照片 - 1
    ♦我们针对上面相关认识里面的一些描述,模拟JSP页面的相关操作,例如:
    ①JSP页面中编写的Java代码需要嵌套在<%和%>之间

    <body>
    	<%
    		Date date = new Date();
    		System.out.println(date);
    	%>
    </body>

    ②JSP中的Java代码可以使用out.println()语句输出

    <body>
    	<%
    		Date date = new Date();
    		out.println(date);
    	%>
    </body>

    启动服务,访问http://localhost:8080/JSP/index.jsp,发现时间打印到了界面上
    JSP学习篇之概述的照片 - 3
    ③JSP表达式中嵌套的变量或者表达式后面不能有分号
    JSP学习篇之概述的照片 - 5
    加了分号,报错。
    ④JSP编译后其实是Servlet,这个怎么理解呢?
    我们找到发布这个JSP工程的Tomcat目录,找到apache-tomcat-7.0.42workCatalinalocalhostJSPorgapachejsp目录,发现该目录下生成了两个文件
    JSP学习篇之概述的照片 - 7
    打开index_jsp.java文件,找到我们在JSP<% %>中写的代码

          out.write("
    ");
          out.write("<body>
    ");
          out.write("	");
    
    		Date date = new Date();
    		//System.out.println(date);
    		out.println(date);
    	
          out.write("
    ");
          out.write("</body>
    ");
          out.write("</html>
    ");
        } catch (java.lang.Throwable t) {

    您会发现,这个index_jsp.java源文件,其实是由我们的index.jsp这个文件生成的。

    public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase
        implements org.apache.jasper.runtime.JspSourceDependent {
    
    private static final javax.servlet.jsp.JspFactory _jspxFactory =
              javax.servlet.jsp.JspFactory.getDefaultFactory();

    生成的Java源文件继承了HttpJspBase,然后实现了JspSourceDependent接口,而HttpJspBase继承自 HttpServlet,本质就是一个Servlet,那么可以说明index_jsp.java其实也是一个Servlet,由jsp文件翻译而来。
    ⑤放置在WEB应用程序中的除了WEB-INF及其子目录外的其他任何目录中
    JSP学习篇之概述的照片 - 9
    我们在WEB-INF目录下面新建一个test.jsp文件,并且新建一个test目录在其目录下面也放置test.jsp文件,启动服务。
    发现http://localhost:8080/JSP/WEB-INF/test/test.jsp和http://localhost:8080/JSP/WEB-INF/test.jsp都无法访问

     

    五、总结

    原理:每个JSP 页面在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接着再把这个Servlet源程序,编译成Servlet的class类文件,然后再由WEB容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序
     
    赢在格局,不失风雅。
  • 相关阅读:
    Java通过socket和DTU,RTU连接工业传感器通信
    没有远程桌面授权服务器可以提供许可证 相关,注册表项获得权限方法
    freertos内存pvPortMalloc 和 malloc 区别 ,以及全局变量占用情况
    自学it吧论坛
    安全学习地址
    服务器zfs文件系统修复过程记录
    第1年10月11日 android canvas
    第1年10月9日 swiftui
    第1年9月28日 Android 4.4以后,浏览器内核采用的chromium,可以支持webrtc
    第1年9月19日 ios librtmp
  • 原文地址:https://www.cnblogs.com/Joey-zy1024/p/9266424.html
Copyright © 2011-2022 走看看