Szkolenia programowania we Wrocławiu
Kurs Java Podstawy - rozszerzony

JSP (JavaServer Pages)

JSP, czyli JavaServer Pages jest technologią wchodzącą w skład specyfikacji Javy EE. Służy do tworzenia dynamicznych stron internetowych, w których oprócz statycznego kodu HTML wymagane są dynamiczne fragmenty w tym przypadku pisane w języku Java.

Problemem pojawiającym się przy tworzeniu stron internetowych jest to, że zazwyczaj od strony widoku (tego co widzi użytkownik) składają się one tak naprawdę w dwóch rzeczy:

  • statycznego kodu HTML, np. niezmiennego menu, czy stopki
  • treści zmienianej dynamicznie, np. aktualnie wyświetlany artykuł, czy film na youtube, sugestie produktów dopasowane do aktualnie przeglądanego produktu w sklepie itd.

Istnieje możliwość generowania całego kodu HTML korzystając np. z serwletów, jednak czytelność takiego rozwiązania jest zazwyczaj bardzo niska, a sama edycja kodu uciążliwa, ponieważ to zazwyczaj kod Javy stanowi mniejszość w porównaniu do kodu HTML. Przykładowy servlet:

package pl.javastart.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

@WebServlet("/HtmlServlet")
public class HtmlServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
	        throws ServletException, IOException {
	    PrintWriter writer = response.getWriter();
	    writer.println("<html>");
	    writer.println("<head>");
	    writer.println("<title>Tytuł strony</title>");
	    writer.println("</head>");
	    writer.println("<body>");
	    writer.println("<h1>Nagłówek strony</h1>");
	    writer.println("</body>");
	    writer.println("</html>");
	}

}

JSP pozwala nam na definiowanie podobnego zachowania, ale w drugą stronę, czyli umieszczanie w kodzie HTML dynamicznych wstawek Javy. Można to realizować korzystając ze specjalnych znaczników zwanych skryptletami. Przykładowa strona JSP:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<h2>Wynik dodawania 2+2 to: <% out.print(2+2); %></h2>
	</body>
</html>

Rozwiązanie takie też nie jest idealne, bo gdy zaczynamy przeplatać ze sobą dużą ilość kodu HTML z dużą ilością Javy, całość mocno traci na czytelności. Rozwiązaniem problemu jest korzystanie ze znaczników JSTL połączonych z wyrażeniami Expression Language lub wykorzystać niestandardowy system szablonów typu Thymeleaf.

Ważną kwestią jest zrozumienie w jaki sposób działają strony JSP i jak kod Javy jest dynamicznie wplatany w HTML. W rzeczywistości strony JSP przy pierwszy odwołaniu do nich są tłumaczone z wykorzystaniem mechanizmów kontenera serwletów na serwlet. Proces translacji zachodzi tylko raz, przy każdym kolejnym odwołaniu korzystamy już z wygenerowanego serwletu.

Translacja JSP na serwlet

Komentarze

Komentarze zamknięte. Zapraszamy do grupy na Facebooku