Hướng dẫn sử dụng JSP và Spring Boot trong Java
Bài viết này sẽ giới thiệu về cách sử dụng JSP (JavaServer Pages) trong ứng dụng Spring Boot. Nếu bạn đang quan tâm đến việc tạo các trang web động sử dụng JSP trong Java, bài viết này sẽ cung cấp cho bạn những kiến thức cần thiết.
Như các bạn biết, JSP là một công nghệ tạo ra các trang web động bằng Java. Chúng ta sẽ tìm hiểu cách tạo một ứng dụng Spring Boot sử dụng JSP, cách kết hợp dữ liệu với trang web và các lưu ý khi sử dụng JSP trong ứng dụng Spring Boot.
1. JSP là gì?
JSP
Khái quát về JSP
JSP (JavaServer Pages) là một công nghệ cho phép tạo ra các trang web động bằng Java. JSP được phát triển bởi Sun Microsystems và đã trở thành một phần của Java EE (Java Enterprise Edition).
Để hiểu rõ hơn về JSP, ta có thể đi sâu vào các đặc điểm và cách thức hoạt động của nó.
Bài viết này được đăng tại [free tuts .net]
1. Đặc điểm của JSP
- JSP là một công nghệ cho phép tạo ra các trang web động bằng Java.
- JSP sử dụng cú pháp HTML kết hợp với các đoạn mã Java giúp tạo ra các trang web động.
- JSP được xử lý trên máy chủ trước khi trình duyệt nhận được các trang HTML tĩnh, giúp tăng tốc độ hiển thị trang web.
- JSP được tích hợp sẵn trong Java EE, do đó không cần cài đặt thêm phần mềm nào khác.
2. Các thành phần trong JSP
- Directive: Directive là các chỉ thị đặc biệt dùng để chỉ định các thông số toàn cục cho một trang JSP.
- Scriptlet: Scriptlet cho phép viết các đoạn mã Java bên trong các thẻ <% và %>.
- Expression: Expression cho phép hiển thị giá trị của biến hoặc biểu thức Java bằng cách sử dụng cú pháp <%= và %>.
- Declaration: Declaration cho phép khai báo các biến và phương thức Java bên trong các thẻ <%! và %>.
3. Cách thức hoạt động của JSP
- Khi một trình duyệt yêu cầu một trang JSP, máy chủ sẽ tạo ra một Servlet tương ứng với trang JSP đó.
- Servlet này sẽ xử lý yêu cầu từ trình duyệt và tạo ra các đoạn mã HTML để trả về cho trình duyệt.
- Để tạo ra các đoạn mã HTML này, Servlet sẽ sử dụng các thẻ JSP để kết hợp mã HTML với các đoạn mã Java.
- Sau khi các đoạn mã HTML đã được tạo ra, Servlet sẽ trả về chúng cho trình duyệt và trình duyệt sẽ hiển thị trang web động đó cho người dùng.
4. Lợi ích của JSP
- Dễ sử dụng và tiện lợi: JSP cho phép viết các đoạn mã Java bên trong các trang HTML, giúp tạo ra các trang web động dễ dàng và thuận tiện hơn.
- Hiệu quả cao: JSP được xử lý trên máy chủ trước khi trình duyệt nhận được các trang HTML tĩnh, giúp tăng tốc độ hiển thị trang web.
- Tích hợp sẵn trong Java EE: JSP là một phần của Java EE, do đó khôngcần cài đặt thêm phần mềm nào khác để sử dụng. Điều này giúp cho việc phát triển và triển khai các ứng dụng sử dụng JSP trở nên đơn giản hơn.
- Tính linh hoạt: JSP cho phép kết hợp các đoạn mã HTML, JavaScript, CSS, Java và các thư viện khác để tạo ra các trang web động phức tạp.
5. Tóm lại
JSP là một công nghệ cho phép tạo ra các trang web động bằng Java. Với các đặc điểm như dễ sử dụng, hiệu quả cao và tích hợp sẵn trong Java EE, JSP là một trong những công nghệ phổ biến được sử dụng trong phát triển các ứng dụng web.
Ưu và nhược điểm của JSP:
Ưu điểm của JSP
-
Đội ngũ phát triển có thể dễ dàng phát triển các ứng dụng web động sử dụng JSP, vì nó sử dụng ngôn ngữ lập trình Java, mà là một ngôn ngữ phổ biến trong lập trình web.
-
JSP cho phép tách biệt rõ ràng giữa logic của ứng dụng và nội dung hiển thị trên giao diện người dùng, giúp cho việc bảo trì và nâng cấp các ứng dụng trở nên đơn giản hơn.
-
JSP cho phép tích hợp dễ dàng với các công nghệ khác trong Java EE, chẳng hạn như Servlets, JDBC, JNDI, JMS và EJB.
-
Có thể sử dụng các thư viện và framework phổ biến như Spring và Struts để phát triển các ứng dụng web sử dụng JSP.
-
JSP có thể được cache lại trên server để giảm thiểu thời gian phản hồi của ứng dụng web.
Nhược điểm của JSP
-
JSP không phải là một công nghệ phổ biến trong thời gian gần đây, khi nhiều công nghệ khác như React, Angular, Vue.js đang được ưa chuộng hơn trong lĩnh vực phát triển web.
-
JSP không được tối ưu cho việc phát triển các ứng dụng web đơn giản, nhỏ, yêu cầu tốc độ xử lý nhanh và tiêu tốn ít tài nguyên hệ thống.
-
Việc kết hợp mã HTML và mã Java trực tiếp trong JSP có thể khiến mã nguồn trở nên khó đọc và bảo trì hơn so với các kỹ thuật phát triển web khác.
-
JSP không thân thiện với các nhà thiết kế UI hoặc các nhà phát triển front-end, vì phần lớn quá trình phát triển giao diện trong JSP phụ thuộc vào kỹ năng lập trình Java.
2. Các bước tạo project JSP với Spring Boot trên Eclipse
Hôm nay mình sẽ hướng dẫn các bạn xây dựng một project căn bản với JSP. Hãy thực hành theo các bước dưới đây.
Bước 1: Tạo mới một project với Spring Stater Project.
Bạn hãy mở Eclipse và chọn File > New > Dymanic Web Project.
Sau khi thực hiện xong bước 1, giao diện bước 2 sẽ mở ra. Trong cửa sổ New Spring Starter Project, nhập tên dự án và chọn Maven Project, Java version, Packaging, Language. Chọn Spring Boot version và chọn các dependencies cần thiết cho dự án. Nhấn Next để sang bước tiếp theo:
3. Xây dựng template ứng dụng với JSP với Spring Boot trên Eclipse.
Với các bước tạo template ở bên trên, bạn đã biết cách tạo một project Spring Boot sử dụng FreeMarker trong Eclipse. Sau đây mình sẽ hướng dẫn bạn tạo một ứng dụng nhỏ áp dụng FreeMarker nhé:
Bước 1: Cấu hình JSP trong ứng dụng
Cấu hình ViewResolver cho JSP trong file "application.properties" bằng cách thêm đoạn mã sau:
spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp
Bước 2: Thêm thư viện vào file pom.xml
Đầu tiên bạn hãy mở file pom.xml trong project của bạn.
Tìm phần "dependencies" trong file pom.xml. Đây là nơi để khai báo các thư viện Maven cho project của bạn. Để chạy được project bạn cần phải add đầy đủ thư viện vào file pom.xml.
Ví dụ file pom.xml đã add thư viện:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>net.javaguides</groupId> <artifactId>springboot-jsp-hello-world-example</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot-jsp-hello-world-example</name> <description>Demo project for Spring Boot and JSP</description> <packaging>war</packaging> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> <!-- JSTL for JSP --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <finalName>springboot-webapp</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Chú ý đây chỉ là một file pom với véion phù hợp trên máy của mình, nếu các bạn dùng vesion bao nhiêu thì hãy add thư viện đúng với version trên máy các bạn thì chúng ta mới có thể chạy project.
Và để làm việc được với JSP/JSTL chúng ta cần phải thêm hai dependencies bên dưới đây:
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> <!-- JSTL for JSP --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>
Lưu ý: Nếu bạn sử dụng Spring Boot version 2.4 trở lên, các thư viện Maven được tự động thêm vào project của bạn khi bạn thêm chúng vào file pom.xml. Nếu bạn muốn thêm một thư viện thủ công, bạn chỉ cần thêm nó vào file pom.xml và chạy lại ứng dụng.
Bước 3: Tạo file Controller:
Tạo controller trong Spring Boot là cách để xử lý các request HTTP được gửi từ client và trả về các phản hồi HTTP. Để tạo một controller trong Spring Boot, bạn có thể làm theo các bước sau:
- Tạo một class mới và đánh dấu nó bằng annotation
@Controller
để định nghĩa rằng đây là một controller. Ví dụ:
@Controller public class HelloController { // code xử lý request và trả về phản hồi }
- Để xử lý các request HTTP, bạn có thể sử dụng các phương thức trong class controller của mình và đánh dấu chúng bằng các annotation như
@RequestMapping
,@GetMapping
,@PostMapping
,@PutMapping,
@DeleteMapping
,... để định nghĩa URL và HTTP method tương ứng. Ví dụ:
@GetMapping("/hello") public String hello() { return "Hello World"; }
Trong ví dụ này, @GetMapping("/hello")
định nghĩa URL "/hello" và HTTP method "GET" để xử lý các request từ client. Phương thức trả về một chuỗi "Hello World".
- Bạn cũng có thể truyền các tham số vào phương thức xử lý request bằng cách sử dụng các annotation như
@PathVariable
,@RequestParam
,@RequestBody,
... Ví dụ:
@GetMapping("/hello/{name}") public String hello(@PathVariable String name) { return "Hello " + name; }
Trong ví dụ này, {name}
định nghĩa một tham số của URL và nó sẽ được truyền vào phương thức xử lý request với annotation @PathVariable
. Phương thức trả về chuỗi "Hello" cộng với giá trị của tham số name.
- Để trả về một trang HTML hoặc một file JSP, bạn có thể sử dụng chuỗi đại diện cho tên của trang HTML hoặc file JSP trong phương thức trả về. Ví dụ:
@GetMapping("/hello") public String hello(Model model) { model.addAttribute("message", "Hello World"); return "hello"; }
Trong ví dụ này, Model
được sử dụng để truyền các thuộc tính cho trang HTML hoặc file JSP và phương thức trả về tên của trang HTML hoặc file JSP "hello". Trong file JSP, bạn có thể sử dụng các thuộc tính đã truyền để hiển thị các thông tin lên trang web.
=> Và sau đây là một file controller đầy đủ được tổng hợp từ các bước phía trên:
package net.springboot.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class HelloController { @GetMapping({ "/", "/hello" }) public String hello(@RequestParam(value = "name", defaultValue = "World", required = true) String name, Model model) { model.addAttribute("name", name); return "hello"; } }
Đó là các bước cơ bản để tạo một controller trong Spring Boot. Tùy thuộc vào yêu cầu của bạn, bạn có thể sử dụng các annotation khác nhau và xử lý các request và phản hồi khác nhau.
Bước 4: Tạo file JSP page
Tạo một file JSP đơn giản có tên "hello.jsp" trong thư mục src/main/webapp/WEB-INF/views/, nếu thư mục ứng dụng web không tồn tại thì hãy tạo cấu trúc thư mục webapp/WEB-INF/jsp và sau đó tạo các trang JSP bên dưới nó, với nội dung sau:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Insert title here</title> </head> <body> <h2 align="center"> Hello ${name}!</h2> </body> </html>
Bước 5: Chạy ứng dụng và Demo:
Bây giờ bạn hãy chạy ứng dụng Spring Boot này từ IDE -> Right click (Click chuột phải) -> Run As -> Java Application:
Và đây là file Application:
package net.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringbootJspHelloWorldExampleApplication { public static void main(String[] args) { SpringApplication.run(SpringbootJspHelloWorldExampleApplication.class, args); } }
Sau khi thực hiện các bước như trên thì giao diện như hình dưới đây sẽ được hiển thị lên màn hình:
Chạy ứng dụng và truy cập vào URL http://localhost:8080/hello. Trang JSP sẽ được hiển thị với nội dung "Hello World!".
Bạn hãy chú ý ở vàu URL http://localhost:8080/hello nhé, khi thêm ?name=Admin vào URL thì giao diện cũng sẽ thay đổi khi từ chữ "World" sang "Admin" cụ thể như kết quả demo bên dưới:
Với các bước trên, bạn đã tạo được một ứng dụng Spring Boot sử dụng JSP trên Eclipse.
Và có một lưu ý nhỏ cho bạn, trong thư mục "src/main/webapp/" không tự động được tạo trong các phiên bản Spring Boot mới nhất, bạn cần phải tạo nó thủ công và cấu hình đường dẫn cho nó trong file pom.xml. Ngoài ra, đường dẫn "/hello" trong phương thức hello() của Controller có thể được thay đổi tùy ý.
4. Các câu hỏi thường gặp.
Làm thế nào để tạo các trang JSP trong Spring Boot?
Để tạo các trang JSP trong Spring Boot, bạn cần thêm các phụ thuộc cho JSP vào file pom.xml của dự án và đặt các trang JSP vào thư mục src/main/webapp/WEB-INF/. Sau đó, bạn cần tạo một controller để xử lý các request và trả về các trang JSP.
JSP là gì và tại sao nên sử dụng nó trong các ứng dụng web?
JSP là viết tắt của Java Server Pages và là một công nghệ cho phép tạo các trang web động sử dụng Java. JSP cho phép tách biệt logic xử lý và giao diện người dùng trong các ứng dụng web và là một công nghệ phổ biến trong việc phát triển các ứng dụng web trong Java.
Làm thế nào để truyền dữ liệu từ controller đến các trang JSP?
Để truyền dữ liệu từ controller đến các trang JSP, bạn có thể sử dụng đối tượng Model trong Spring Boot. Đối tượng Model cho phép bạn truyền các đối tượng hoặc thuộc tính từ controller đến các trang JSP và sử dụng chúng để hiển thị thông tin trên trang web.
Làm thế nào để xử lý các request HTTP trong Spring Boot?
Để xử lý các request HTTP trong Spring Boot, bạn cần tạo một controller và sử dụng các annotation như @RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping để định nghĩa URL và HTTP method tương ứng. Sau đó, bạn có thể xử lý các request và trả về các phản hồi HTTP trong phương thức của controller.
5. Kết bài viết.
Tóm lại bài viết đã đáp ứng một số thông tin cơ bản về cách sử dụng JSP với Spring Boot trong Java. Hy vọng những hướng dẫn trên sẽ giúp bạn hiểu rõ hơn về cách tạo một ứng dụng web đơn giản sử dụng JSP và Spring Boot. Lưu ý rằng việc sử dụng JSP và Spring Boot chỉ là một phần trong quá trình phát triển ứng dụng web trong Java. Để tạo một ứng dụng web hoàn chỉnh, bạn cần phải học các kỹ năng khác như sử dụng cơ sở dữ liệu, xử lý các request HTTP và quản lý phiên làm việc. Nếu bạn cần hỗ trợ thêm về việc sử dụng JSP và Spring Boot trong Java, hãy tham khảo các tài liệu hướng dẫn trực tuyến hoặc các diễn đàn thảo luận về Java và phát triển ứng dụng web nhé!!