jsp 自动编译机制详细介绍
jsp 自动编译机制详细介绍
总的来说,Jasper的自动检测实现的机制比较简单,依靠某后台线程不断检测JSP文件与编译后的class文件的最后修改时间是否相同,若相同则认为没有改动,但倘若不同则需要重新编译。实际上由于在Tomcat部署的项目的JSP可能引入了其他页面,或者引入了其他jar包,而且这些资源都可能是远程的资源,所以实际处理会比较复杂,同样要遍历检测这些引入的不同资源是否做了修改。
上图是一个形象的示意图,我们知道Tomcat架构中有四个级别的容器,Engine、Host、Context和Wrapper,而jsp编译对应在wrapper级别,所以通过StandardWrapper不断执行任务去调用jasper,而jasper则不断检测校验本地和远程的各种资源,一旦发现需要重新编译则进行重编译。往下看看具体如何实现。
首先,需要一个后台执行线程,Tomcat中有专门的一条线程处理不同容器的background任务,想在不同的容器中执行某些后台任务只需重写backgroundProcess方法即可实现,由于JspServlet对应于Wrapper级别,所以要在StandardWrapper中重写backgroundProcess,它会调用实现了PeriodicEventListener接口的Servlet,其中JspServlet就实现了PeriodicEventListener接口,此接口只有一个periodicEvent方法,具体的检测逻辑在此方法中实现即可。
其次,检测判断重新编译的根据是什么?重新编译就是再次把jsp变成Java再变成class,而触发这个动作的条件就是当我们修改了某个jsp文件后,或者某jsp文件引入的资源被修改后,都将触发重新编译动作,所以最好的判断依据就是某jsp或资源的最后修改时间lastmodified属性,正常顺序是jsp经过编译后生成class文件,把此class文件的lastmodified属性设置成jsp文件的lastmodified,此时两个文件的lastmodified属性是相同的,当我们改了jsp文件保存后,jsp的lastmodified属性就被置为当前时间,此时通过判断两个文件的lastmodified属性决定是否重新编译。重新编译后jsp与class文件的lastmodified属性再次被置为相同。对于引入的资源,内存中维护了上次编译时引入资源的lastmodified属性,不断获取引入资源的lastmodified属性并与内存中对应的lastmodified属性进行比较,同样可以很容易判断是否需要重新编译。
最后,对于本地和远程资源分别如何检测?对于本地资源来说,使用java.io.File类可以很方便的实现对某JSP文件或其他文件的lastmodified属性读取。对于远程资源,比如jar包,为了方便处理jar包含的属性,使用java.NET.URL可以很方便操作,它包含了很多协议,例如常见的jar、file、ftp等协议,使用相当方便,
URL includeUrl = new URL("jar:http://hostname/third.jar!/"); URLConnection iuc = includeUrl.openConnection(); long includeLastModified = ((JarURLConnection) iuc).getJarEntry().getTime();
只需三步即完成对远程jar包的读取且取出最后修改时间。当然URL还支持本地文件资源的读取,所以它是很好的资源读取抽象对象,Tomcat中对引入资源的管理都是使用URL作为操作对象。
本小节探讨了Jasper自动检测机制的实现,自动检测机制给我们的开发带来了很好的体验,我们不必自己修改了jsp后自己去执行编译操作,而是tomcat通过jasper帮我们定时检测编译操作。
感谢阅读,希望能帮助到大家

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





jsp tergolong dalam bahagian belakang. Intipati jsp ialah servlet, dan servlet ialah aplikasi java bahagian pelayan, jadi jsp ialah teknologi back-end. JSP digunakan pada pelayan rangkaian dan boleh bertindak balas kepada permintaan yang dihantar oleh klien dan menjana halaman Web HTML, XML atau dokumen format lain secara dinamik berdasarkan kandungan permintaan, dan kemudian mengembalikannya kepada peminta. Teknologi JSP menggunakan Java sebagai bahasa skrip untuk menyediakan perkhidmatan untuk permintaan HTTP pengguna, dan boleh mengendalikan keperluan perniagaan yang kompleks bersama-sama dengan program Java lain pada pelayan.

Perbezaan antara jsp dan html: 1. Mekanisme operasi; 3. Hubungan dengan Java; 5. Hubungan dengan back-end; ; 9. Akhiran fail dan alat pengenalan 10. Komuniti dan sokongan; Pengenalan terperinci: 1. Mekanisme pengendalian HTML ialah bahasa penanda, terutamanya digunakan untuk menerangkan dan mentakrifkan kandungan halaman web Ia dijalankan pada klien dan ditafsirkan dan dilaksanakan oleh pelayar web yang dinamik bahagian pelayan, dsb. tunggu.

Selepas projek springboot baharu dibuat, direktori adalah seperti berikut: Langkah 1: Tambah kod pakej jar yang diperlukan untuk mengkonfigurasi jsp ke fail pom projek: org.apache.tomcat.embedtomcat-embed-jasperprovided Langkah 2: Buat direktori baharu webapp di bawah laluan utama , cipta laluan baharu WEB-INF di bawah aplikasi web, cipta laluan baharu jsp di bawah WEB-INF dan letakkan fail jsp yang ingin kami gunakan di bawah laluan ini fail jsp dalam fail konfigurasi utama: spring .mvc.view.prefix=/WEB-INF/jsp/sp

Langkah-langkah pelaksanaan: 1. Memperkenalkan perpustakaan tag JSTL ke dalam halaman JSP 2. Mendapatkan data daripada pangkalan data 3. Mengelui data 4. Memaparkan bar navigasi halaman 5. Memaparkan nombor mengikut halaman semasa; nombor dan setiap halaman , hanya dapatkan data yang sepadan daripada data halaman dan paparkannya pada halaman.

1. Pernyataan sql teras untuk melaksanakan pertanyaan paging (1) Pernyataan sql untuk menanyakan jumlah rekod dalam pangkalan data: selectcount(*)dari+(nama jadual); (2) Pernyataan sql untuk menanyakan bilangan rekod setiap pertanyaan: di mana: 0 dicari Indeks, 2 ialah bilangan item yang dicari setiap kali. pilih*daripada nama jadual limit0,2; 2. Pelaksanaan kod* Saya menulis dua kelas ini dalam artikel sebelumnya, kelas sambungan DB: digunakan untuk mendapatkan sambungan pangkalan data, kelas objek Pengarang. Klik pada pautan untuk melihat kod bagi kedua-dua kelas ini. Klik pautan untuk melihat kelas sambungan DB dan kelas objek Pengarang (1) Halaman log masuk: index.jsp. Inserttitlehere lajur pengguna

Bolehkah JSP digantikan dengan PHP? JSP (JavaServerPages) dan PHP (HypertextPreprocessor) adalah bahasa skrip sebelah pelayan yang biasa digunakan untuk menjana kandungan halaman web secara dinamik. Walaupun mereka masing-masing mempunyai ciri dan kelebihan tersendiri, bolehkah mereka menggantikan satu sama lain sepenuhnya dalam aplikasi praktikal? Artikel ini akan menganalisis kelebihan dan kekurangan kedua-duanya dan membandingkannya melalui contoh kod tertentu. Mula-mula, mari kita lihat ciri-ciri JSP dan PHP masing-masing. JSP adalah berasaskan Java

JSP ialah standard teknologi web dinamik Format failnya adalah untuk memasukkan segmen program Java (Scriptlet) dan tag (teg) JSP ke dalam fail HTML halaman web tradisional (.htm, .html) untuk membentuk fail JSP (*.jsp ).

Timbunan teknologi pembangunan JavaWeb: Master JavaEE, Servlet, JSP, Spring dan teknologi lain yang digunakan untuk pembangunan Web Dengan perkembangan pesat Internet, dalam bidang pembangunan perisian hari ini, pembangunan aplikasi Web telah menjadi keperluan teknikal yang sangat penting. Sebagai bahasa pengaturcaraan yang digunakan secara meluas, Java juga memainkan peranan penting dalam bidang pembangunan Web. Timbunan teknologi pembangunan JavaWeb melibatkan pelbagai teknologi, seperti JavaEE, Servlet, JSP, Spr
