Java之jsp基础知识详解

    xiaoxiao2025-02-05  28

    什么是JSP?JSP可用一种简单易懂的等式表示为:HTML+Java=JSP。Jsp:全称:Java Server Pages其根本是一个简化的Servlet设计,它实现了在Java中使用HTML标签。JSP是一种动态网页技术标准,也是JavaEE的标准。JSP和Servlet一样,是在服务器端执行的。JSP是在Servlet技术发展之后为了让开发者写html标签更方便而发展起来的技术,JSP实际上就是Servlet。

    但是,人们通常把Servlet作为Web应用中的控制组件来使用,只负责响应请求产生数据,并把数据通过转发技术带给jsp,而把jsp技术作为数据显示模板来使用。这样使程序结构更清晰,可读性和可维护性更高。

    常用动态网站开发技术有以下几种:

    JSP:Java平台,安全性高,适合开发大型的,企业级的,分布式的Web应用程序。如电子银行,12306等ASP.net:.Net平台,简单易学。但是安全性以及跨平台型差。PHP:简单,高效,成本低开发周期端,特别适合中小型企业的Web应用开发。

    总结

    Jsp的优点:

    第一个就是安全性比较好,等级高;

    第二个就是适合开发大型的项目;

    第三个就是可读性和维护性更高,这样子在后期的维护比较方便;

    第四个就是跨平台性,系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。

    Jsp缺点:

    正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。没点基础的人是很难进行编写程序的; Java的运行速度是用class常驻内存来完成的,所以它在一些情况下所使用的内存比起用户数量来说确实是“最低性能价格比”了。从另一方面,它还需要硬盘空间来储存一系列的.java文件和.class文件,以及对应的版本文件。在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数,而是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错),逐步缩小出错代码段的范围,最终确定错误代码的位置。

    JSP页面元素构成

    JSP指令:JSP指令(directive)是为JSP引擎二设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。在JSP2.0规范中共定义了三个指令,基本语法格式为,<%@ 指令 属性名="值" %>,如果一个指令有多个属性,这多个属性可以写在一个指令中,也可以分开写。page指令:page指令用于定义JSP页面的各种属性,无论指令出现在页面中的什么地方,它作用的都是整个JSP页面,为了保持程序的可读性和遵循良好的编程习惯,page指令通常放在整个JSP页面的起始位置,一个页面可以有多个page指令。

    3、include指令:用于引入其他JSP页面,如果使用include指令引入了其他JSP页面,那么JSP引擎将把这两个JSP翻译成一个Servlet,所以include指令引入通常也成为静态引入。<%@ include file=“被包含组件的绝对URL或相对URL"%>被引入的文件必须遵循JSP语法。被引入的文件可以是任意扩展名,即使其扩展名是html,JSP引擎也会按照处理jsp页面的方式处理它里面的内容,为了见名知意,JSP规范建议使用.jspf(JSP fragments)作为静态引入文件的扩展名。由于使用include指明将会涉及到2个JSP页面,并会把JSO翻译成一个Servlet,所以这两个JSP页面的指令不能冲突(pageEncoding和导包除外)。

    4、taglib指令:使用标签库定义显得自定义标签,在JSP页面中启用定制行为。

     

    表达式:在JSP页面中执行的表达式 <%=表达式%>,注意表达式不以分号结束。例如,当前时间:<%= new java.util.Date() %>

    脚本片段: 在JSP页面中插入多行java代码 <% Java代码 %>,JSP引擎在翻译JSP页面时,会将JSP脚本片段中的Java代码原封不动的放到Servlet的_jspServlet方法中,所以,<% %>中的Java代码必须严格遵循java语法。

    声明:在JSP页面中定义变量或者方法  <%! Java代码 %>,声明中的Java代码被翻译到_jspService方法的外面,属于类,所以可以声明成员变量并初始化,也可以声明方法或定义方法,同时还可以声明静态代码块。JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象。

    注释(3种方式):1、HTML注释:<!--html注释,且客户端可见-->;2、JSP注释:<%--JSP注释,客户端不可见--%>;3、JSP脚本注释:即java注释 //单行 , /*多行 */

    JSP运行原理及生命周期:

    用户第一次请求Tomcat会将jsp文件编程成一个Servlet的java文件,并将java文件编译成class文件,加载到内存,生成文件在Tomcat的work目录的对应项目文件夹。如果jsp页面发生了修改,JSP引擎会对其进行重新编译并加载到内存,以方便用户请求。注意,用户第一次请求一个jsp页面时,首先被执行的方法是构造方法。

    _jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可以大大降低对系统资源的需求,提高系统的并发量及响应时间。但也要主要多线程的编程带来的额同步问题,由于该Servlet始终驻于内存,所以响应是非常快的。

    JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9个与web开发相关的对象共_jspServlet使用。JSP技术的设计者为便于开发人员在编写JSP页面是获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用。

    最新回复(0)