5분 안에 JSP 배우기
불행하게도 많은 JEE 개발자들이 세부 사항과 개념을 자세히 살펴보지 않고 Spring Boot와 같은 프레임워크를 사용하기 시작합니다! 글쎄, 이것은 다른 프로그래밍 언어 중 하나에 대한 탄탄한 배경이 있거나 새로운 개발자이지만 시간이 지남에 따라 이러한 것들의 중요성과 차이를 만드는 방법 및 Java 개발자로서 더 성장하기 위해 필수가 되는 경우 작동합니다. 엔지니어.
이러한 개념 중 하나는 우리 기사와 관련된 "서블릿"입니다. "애플릿"과 같은 다른 API 및 개념을 다루어야 하기 때문에 몇 줄로 표시하기 쉽지 않지만 "서블릿은 다음과 같은 데 사용되는 Java 클래스입니다. 서버의 기능 확장".
Sadly, I can't dive into these concepts this time but sure, I will do in the future.
JSP란?
과거에는 JEE 애플리케이션을 구축하는 것이 서블릿을 기반으로 했으며 이는 레이어 간에 분리되지 않기 때문에 고통스러웠습니다. 이 문제는 JSP를 도입하도록 JEE 생태계를 밀어붙이는 MVC(Model-View-Controller) 패턴으로 해결되었습니다.
You can say:
{
"Model": "JDBC"
"View": "JSP"
"Controller": "Servlet"
}
JSP(JavaServer Pages)는 HTML 페이지에 Java 코드를 삽입하여 동적 콘텐츠를 지원하는 웹 페이지를 구축하는 기술입니다.
You can think of it like a template engine!
JSP 매뉴얼
표현
변수 또는 메서드 값에서 페이지의 동적 콘텐츠를 인쇄해야 하는 경우 표현식 태그를 사용해야 합니다.
<%= some java expression (variable/method) %>
예시:
<!-- jsp file -->
<h1>5 multiplied by 10 equals: <%= 5*10 %></h1>
<!-- generated html -->
<h1>5 multiplied by 10 equals: 50</h1>
스크립틀릿
어떤 이유로 jsp 내부에 자바 코드를 작성해야 하는 경우 스크립틀릿 태그를 사용할 수 있습니다.
<% some java code (1 to n lines) %>
예시:
<!-- jsp file -->
<%
int sum = 0;
for (int i = 0; i <= 5; i++) {
// some logic
sum += i;
}
out.println(String.format("<span> sum: %s </span>", sum));
%>
<!-- generated html -->
<span> sum: 15 </span>
"out" is one of the JSP implicit objects which gives the ability to print the value on the page.
선언
나중에 다시 사용하기 위해 jsp 내부에 java 변수 및/또는 메소드를 선언해야 하는 경우 또는 어떤 이유로든 선언 태그를 사용할 수 있습니다.
<%! java variable/method declaration %>
예시:
<!-- jsp file -->
<%!
String makeItLower (String str) {
return str.toLowerCase();
}
%>
Lower case "Hello World!": <%= makeItLower("Hello World!") %>
<!-- generated html -->
Lower case "Hello World!": hello world! %>
모범 사례
jsp 파일 내부에 자바 코드를 선언하는 것은 나쁜 개발 경험을 제공할 것이기 때문에 좋은 생각이 아닙니다. 따라서 jsp에서 java 클래스를 호출하여
scriptlet
및 declaration
태그 사용량을 줄일 수 있습니다.<%@ page import="<package-name>.<class-name>" %>
예시:
// java file
package com.imedjaberi.jspartile;
public class Utils {
public static String makeItLower (String str) {
return str.toLowerCase();
}
}
<!-- jsp file -->
<%@ page import="com.imedjaberi.jspartile.Utils" %>
<html>
<body>
Say: <%= Utils.makeItLower("Hello World!") %>
</body>
</html>
This is not the only way to call java method inside jsp file, we can also use the inline way;
<html> <body> Say: <%= com.imedjaberi.jspartile.Utils.makeItLower("Hello World!") %> </body> </html>
다른 패키지에서 가져오기 방법의 경우;
<%@ page import="com.imedjaberi.jspartile.*, java.utils.ArrayList" %>
암시적 객체
처음부터 언급했듯이 JSP는 서버 기술이므로 서버 기능과 상호 작용하는 몇 가지 암시적 객체로 설계되었습니다.
일반적으로 사용되는 JSP 객체 목록:
물체
유형
설명
요구
Http서블릿 요청
HTTP 요청 헤더 및 양식 데이터 포함
응답
HttpServlet 응답
응답 전송을 위한 HTTP 지원 제공
밖으로
JspWriter
HTML 페이지에 콘텐츠를 포함하기 위한 JspWriter
세션
HttpSession
웹 애플리케이션의 각 사용자에 대한 고유한 세션
신청
서블릿 컨텍스트
웹 애플리케이션의 모든 사용자를 위한 공유 데이터
UI 작성
프로젝트가 더 커지면 이 섹션이 성경이 될 것입니다.
10페이지가 있고 모두 동일한 머리글 및 바닥글 블록이 있다고 상상할 수 있습니다. 두 블록을 10번 다시 만드는 자신을 발견하게 될 것입니다. 더 많은 페이지 및/또는 더 많은 블록이 있는 경우 수학을 할 수 있습니다.
소프트웨어 엔지니어로서 우리는 가능한 한 DRY와 같은 엔지니어링 원칙을 따르려고 노력하며 이러한 관점에서 이러한 블록을 별도의 파일로 분할하고 재사용 가능한 블록으로 사용해야 합니다. 이는 include 태그를 통해 가능합니다.
<jsp:include page="<file-namle>.<extension[html|jsp]>" />
예시:
<!-- header.html -->
<header>
<h1>Welcome to header block!</h1>
</header>
<!-- footer.jsp -->
<footer>
<h1>Welcome to footer block (Last updated: <%= new java.util.Date() %>)!</h1>
</footer>
<!-- index.jsp -->
<html>
<body>
<jsp:include page="header.html" />
<main>
Blah blah blah ... <br />
Blah blah blah ... <br />
</main>
<jsp:include page="footer.jsp" />
</body>
</html>
양식
이 섹션에서는 페이지 간을 탐색하고 양식 데이터에 액세스하는 방법에 대한 간단한 예를 다룹니다.
<!-- index.jsp -->
<form action="board.jsp">
Full name: <input name="fullName" />
Country: <select name="country">
<option>Tunisia</option>
<option>UK</option>
<option>Spain</option>
<option>Germany</option>
<option>France</option>
</select>
Gender: <br />
<input type="radio" name="gender" value="Male" /> Male
<input type="radio" name="gender" value="Female" /> Female
Favorite programing language: <br />
<input type="radio" name="fPLang" value="JavaScript" /> JavaScript
<input type="radio" name="fPLang" value="Java" /> Java
<input type="radio" name="fPLang" value="Go" /> Go
<input type="radio" name="fPLang" value="Elixir" /> Elixir
<input type="radio" name="fPLang" value="Elm" /> Elm
<button type="submit">Submit</button>
</form>
<!-- board.jsp -->
The developer is confirmed: <%= request.getParameter("fullName") %>
The developer country: <%= request.getParameter("country") %>
The developer gender: <%= request.getParameter("gender") %>
The developer favorite programing language: <br/>
<ul>
<%
String[] langs = request.getParameterValues("fPLang");
for (String lang: langs) {
out.println("<li>" + lang + "</li>");
}
%>
</ul>
We have an alternative to
<%=request.getParameter("fullName")%>
is${param.fullName}
.
상태 관리
UI에 대해 이야기할 때 jsp의 쿠키session와 쿠키를 통해 처리되는 상태 관리에 대한 이야기를 무시할 수 없습니다.
This isn't covered in the current article but in the near future, will do through an article that talks about building an app based on the MVC pattern with Servlet, JSP, and JDBC.
📚 리소스:
내가 뭐 놓친 거 없니? 의견 섹션에서 알려주고 작업하겠습니다.
읽어 주셔서 감사합니다. 이것이 당신의 일에 도움이 되기를 바랍니다.
Reference
이 문제에 관하여(5분 안에 JSP 배우기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/3imed_jaberi/lean-jsp-in-less-than-2mins-5bgj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)