It was a while since I worked with JSP and servlet. Now I find some material that JSP is obsolete and should not be used. Is that so? Why? What should we use instead for templates if we start a new project with Spring Framework and wish to render web pages or similar output?
Related Questions in SPRING
- HTTPS configuration in Spring Boot, server returning timeout
- Multi Tenancy in Spring - Partitioned Data Approach
- How to create beans of the same class for multiple template parameters in Spring
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Springboot: How to get an entity optional property and check null?
- How do I propagate the current SecurityContext to my @RabbitListener in Spring Boot?
- Spring's XML based bean configuration for Object Mapper's Case Insensitive property
- Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. I'm using Postgresql
- springboot class org.hibernate.mapping.Bag cannot be cast to class org.hibernate.mapping.SimpleValue
- Issue while deploying JDK 17 and Spring 6 application in Tomcat 10.1.20
- Spring JPA Data Auditing - How to design it?
- Springframework test: Async not started
- Error: Cannot invoke "jakarta.servlet.http.HttpSession.getAttribute(String)" because "session" is null
- How does spring-retry determine which methods to retry when @Retryable is placed at the class level?
- problem with edge server registration in Eureka
Related Questions in JSP
- Unable to compile the class for JSP in tomcat 8.5.95
- Liberty doesn't compile JSP
- Why ${message} appear as it is in View and not the real message passed in Spring MVC controller
- How can i connect my 4 objects in my jsp file so it can run perfectly
- An error occurred: Cannot run program "C:\Users\ford\AppData\Local\Programs\Python\Python311\python.exe": CreateProcess error=5, Access is denied
- Issue with dropdown menu in the jsp page(cannot import the choice in the db)
- java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.jsp.ImportTab_jsp
- javascript function changes when used with jsp
- Database ConnectionError
- Where should i place my index.jsp and index.jsp1 for my app to run in tomcat app
- How to fix checkmarx reflected XSS attack in JSP page?
- JSP: "object cannot be resolved to a variable" when used in nested tag
- How to use JSTL in JSP: jakarta.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator
- How to setup jsp Pages on a Webserver
- File uploaded from jsp is not making it to servlet
Related Questions in TEMPLATES
- Why can't I use templates members in its specialization?
- wrapping c++ function template with Cython
- MSVC Compiler Template Sizeof...() not working
- .lib not generated when building DLL project using template class
- Creating C++ templates with a value switch based on typename
- can i use eventEmeter in ng-container with *ngTemplateOutlet
- duplicate symbol in clang for template specialization of static member
- Hyperlink doesn't redirect while others do
- Cannot convert template argument to the actual type being passed
- C++ ordered map optimized with index access
- Meaning of template<auto = {}>
- Smarty - Best way to create reusable components
- Using clang or gcc, how do I list the templates instantiated in an object file (.o)?
- How to pass a template parameter to an object without calling its member functions?
- Publishing Project Templates and cli tools to Azure Devops
Related Questions in DEPRECATED
- Insight: Deprecated APIs removed in Kubernetes v1.29
- Android Java Warning: get(String) in BaseBundle has been deprecated
- cudaFuncSetSharedMemConfig is deprecated in 12.4 - why?
- Apple deprecated verifyReceipt, how we check for receipt status now
- 'connections' is deprecated. The declaration was marked as deprecated here
- ImportError: cannot import name 'LocallyConnected2D' from 'tensorflow.keras.layers'
- PHP Deprecated: Optional parameter on PHP8.2 upgraded from PHP7
- TypeScript - Mark npm package as deprecated in code base
- Deprecated: preg_split():
- using [[deprecated]]
- Applying Flutters app_plugin_loader Gradle plugin imperatively using the apply script method which is deprecated, will be removed in a future release
- I’m facing an issue related to the deprecation of the singleLine attribute in Android
- Find Deprecated releases of all the azure resources for java sdk using python script or any other script
- android java onBackPressed deprecated
- jobBuilderFactory deprecation
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Spring (as well as Struts, Apache Wicket and other frameworks) is based on servlets. When you're using Spring for web, you're using servlet as an underlying technology.
JSP is really a little bit outdated. And there are some inconveniences in it. For example, JSP is a real headache for web designers. Designers cannot just open a JSP file, make some changes, and check the result in the browser, because the JSP file contains tags that are invalid for HTML. The only way to see how the page will look like in the browser is to deploy the application and let the server render it.
Another inconvenience in JSP is that you can't externalize common layout into a dedicated file. All you can do is import one page into another with
<jsp:include>. And if you have hundreds of files, you have to repeat the same<jsp:include>in all of them to copy common parts.There are template engines that are more suitable for big projects when you have hundreds of complex dynamical pages. One popular template engine is Thymeleaf.
Thymeleaf's templates contain just valid HTML. That means designers and programmers can work in parallel. Also it has a good layout system. Moreover, Thymeleaf has much more readable and elegant syntax in contrast to JSP. Here is an example of the code for generating a simple table in Thymeleaf:
There are many other additional features like build-in support of internationalization, passing parameters to fragments and so on.
You can find more details on the comparison of Thymeleaf and JSP here and here.