Home php教程 PHP开发 Detailed introduction to jsp automatic compilation mechanism

Detailed introduction to jsp automatic compilation mechanism

Dec 03, 2016 am 09:40 AM
jsp

Detailed introduction to the jsp automatic compilation mechanism

In general, Jasper's automatic detection mechanism is relatively simple. It relies on a background thread to continuously detect whether the last modification time of the JSP file and the compiled class file are the same. If they are the same, it is considered not Change, but if different, you need to recompile. In fact, since the JSP of the project deployed in Tomcat may introduce other pages or other jar packages, and these resources may be remote resources, the actual processing will be more complicated. It is also necessary to traverse and detect whether these different imported resources are Modifications were made.

Detailed introduction to jsp automatic compilation mechanism

The above picture is a vivid schematic diagram. We know that there are four levels of containers in the Tomcat architecture, Engine, Host, Context and Wrapper, and jsp compilation corresponds to the wrapper level, so the StandardWrapper continuously performs tasks to call jasper , and jasper continuously detects and verifies various local and remote resources, and recompiles once it is found that it needs to be recompiled. Read on to see how this is achieved.

First of all, a background execution thread is needed. There is a dedicated thread in Tomcat to handle background tasks of different containers. If you want to perform certain background tasks in different containers, you only need to rewrite the backgroundProcess method. Since JspServlet corresponds to Wrapper level, so backgroundProcess needs to be rewritten in StandardWrapper. It will call the Servlet that implements the PeriodicEventListener interface. JspServlet implements the PeriodicEventListener interface. This interface has only one periodicEvent method. The specific detection logic can be implemented in this method.

Secondly, what is the basis for detection and judgment of recompilation? Recompiling is to turn jsp into Java and then into class again, and the condition that triggers this action is that when we modify a certain jsp file, or after the resources introduced by a certain jsp file are modified, the recompiling action will be triggered, so The best basis for judgment is the last modified attribute of a certain jsp or resource. The normal sequence is that the jsp is compiled to generate a class file, and the last modified attribute of the class file is set to the last modified attribute of the jsp file. At this time, the last modified attributes of the two files are are the same. When we change the jsp file and save it, the lastmodified attribute of the jsp is set to the current time. At this time, we determine whether to recompile by judging the lastmodified attribute of the two files. After recompilation, the lastmodified attributes of the jsp and class files are set to the same again. For imported resources, the lastmodified attribute of the imported resource during the last compilation is maintained in the memory. The lastmodified attribute of the imported resource is continuously obtained and compared with the corresponding lastmodified attribute in the memory. It can also be easily judged whether recompilation is needed.

Finally, how to detect local and remote resources respectively? For local resources, the java.io.File class can be used to easily read the lastmodified attribute of a JSP file or other files. For remote resources, such as jar packages, in order to facilitate the processing of the attributes contained in the jar, it is very convenient to use java.NET.URL. It contains many protocols, such as common jar, file, ftp and other protocols, which is very convenient to use,

URL includeUrl = new URL("jar:http://hostname/third.jar!/");
URLConnection iuc = includeUrl.openConnection();
long includeLastModified = ((JarURLConnection) iuc).getJarEntry().getTime();
Copy after login

It only takes three steps to complete reading the remote jar package and get the last modification time. Of course, URL also supports reading of local file resources, so it is a good abstract object for resource reading. The management of imported resources in Tomcat uses URL as the operation object.

This section discusses the implementation of Jasper's automatic detection mechanism. The automatic detection mechanism brings a good experience to our development. We don't have to modify the jsp ourselves and then perform the compilation operation ourselves. Instead, tomcat helps us time it through jasper. Detect compilation operations.

Thanks for reading, I hope it helps everyone


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Is jsp front-end or back-end? Is jsp front-end or back-end? Jan 28, 2023 pm 06:23 PM

jsp belongs to the backend. The essence of jsp is a servlet, and servlet is a server-side java application, so jsp is a back-end technology. JSP is deployed on the web server and can respond to requests sent by the client and dynamically generate web pages of HTML, XML or other format documents based on the request content, and then return them to the requester. JSP technology uses Java as a scripting language to provide services for user HTTP requests, and can handle complex business requirements together with other Java programs on the server.

What is the difference between jsp and html What is the difference between jsp and html Jan 09, 2024 am 10:46 AM

The difference between jsp and html: 1. Operating mechanism; 2. Purpose; 3. Relationship with Java; 4. Function; 5. Relationship with back-end; 6. Speed; 7. Maintainability and scalability; 8. Learning and use Difficulty; 9. File suffixes and identification tools; 10. Community and support; 11. Security. Detailed introduction: 1. Operating mechanism. HTML is a markup language, mainly used to describe and define the content of web pages. It runs on the client and is interpreted and executed by the browser. JSP is a dynamic web page technology that runs on the server side, etc. wait.

How to integrate JSP in SpringBoot project How to integrate JSP in SpringBoot project May 12, 2023 pm 07:40 PM

After the new springboot project is created, the directory is as follows: Step 1: Add the jar package code required to configure jsp to the project's pom file: org.apache.tomcat.embedtomcat-embed-jasperprovided Step 2: Create a new directory webapp under the main path , create a new path WEB-INF under webapp, create a new path jsp under WEB-INF, and place the jsp file we want to use under this path. Step 3: Configure the access path and suffix code of the jsp file in the main configuration file: spring .mvc.view.prefix=/WEB-INF/jsp/sp

How to implement jsp paging function How to implement jsp paging function Mar 04, 2024 pm 04:40 PM

Implementation steps: 1. Introduce the JSTL tag library into the JSP page; 2. Obtain data from the database; 3. Paging the data; 4. Display the paging navigation bar in the page; 5. Display the number according to the current page number and each page. , just get the corresponding data from the paging data and display it on the page.

How to use jsp+mysql to implement paging query on web pages How to use jsp+mysql to implement paging query on web pages May 30, 2023 pm 03:58 PM

1. The core sql statement to implement paging query (1) The sql statement to query the total number of records in the database: selectcount(*)from+(table name); (2) The sql statement to query the number of records for each query: where: 0 is searched Index, 2 is the number of items searched each time. select*from table name limit0,2; 2. Code implementation* I wrote these two classes in the previous article, DBconnection class: used to obtain database connections, Author object class. Click on the link to view the code for these two classes. Click the link to view the DBconnection class and Author object class (1) Login page: index.jsp. Inserttitlehere user column

Can JSP be replaced by PHP? Can JSP be replaced by PHP? Mar 21, 2024 am 11:03 AM

Can JSP be replaced by PHP? JSP (JavaServerPages) and PHP (HypertextPreprocessor) are commonly used server-side scripting languages ​​for dynamically generating web page content. Although they each have their own characteristics and advantages, can they completely replace each other in practical applications? This article will analyze the advantages and disadvantages of the two and compare them through specific code examples. First, let's take a look at the respective characteristics of JSP and PHP. JSP is a Java-based

What format is jsp? What format is jsp? Jan 24, 2024 pm 04:01 PM

​JSP is a dynamic web technology standard. Its file format is to insert Java program segments (Scriptlet) and JSP tags (tags) into traditional web page HTML files (.htm, .html) to form JSP files (*.jsp ).

Java technology stack for web development: Understand Java EE, Servlet, JSP, Spring and other technologies commonly used in web development Java technology stack for web development: Understand Java EE, Servlet, JSP, Spring and other technologies commonly used in web development Dec 26, 2023 pm 02:29 PM

JavaWeb development technology stack: Master JavaEE, Servlet, JSP, Spring and other technologies used for Web development. With the rapid development of the Internet, in today's software development field, the development of Web applications has become a very important technical requirement. As a widely used programming language, Java also plays an important role in the field of Web development. The JavaWeb development technology stack involves multiple technologies, such as JavaEE, Servlet, JSP, Spr

See all articles