-
서블릿과 JSP웹 Web/JSP & Servlet 2022. 1. 13. 12:58
교재 - 성윤정 <백견불여일타 JSP&Servlet : Oracle&Eclipse>
서블릿:
server + applet. 동적 데이터를 전달하는 것을 돕는다.
자바를 이용하여 웹에서 실행되는 프로그램을 작성하는 기술. 자바 코드 내부에 HTML 코드가 들어간다.
자바 클래스 형태의 웹 애플리케이션을 말하며, HttpServelet 클래스를 상속 받아 만든 서브 클래스를 서블릿 클래스라고 한다.
HttpServlet은 웹 서비스가 가능한 웹 애플리케이션을 제작할 수 있도록 자바를 확장해 놓은 클래스를 말하며, 톰캣을 설치하면 제공된다.
클라이언트는 서버에 get과 post 방식 중 하나로 전송 요청을 한다
get 방식: 주소창을 타고 넘어가므로 서버로 보내는 데이터를 사용자가 그대로 볼 수 있다. 보안에 취약하며 소용량의 데이터를 전송한다.
post 방식: html header을 타고 넘어가므로 보안에 강하다. 대용량 데이터를 전송한다.
서블릿 클래스에는 doGet()과 doPost()가 있으며 요청 방식에 따라 호출되는 메소드가 달라진다.
요청 방식에 따라 doGet() 혹은 doPost() 메소드 내부에 호출되었을 때 해야 할 일을 써넣어야 한다.
브라우저에 현재 시각 띄우기
TestServlet.java
public class TestServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html; charset=UTF-8"); PrintWriter out = resp.getWriter(); out.println(this.displayTime()); } public String displayTime() { String pattern = "yyyy-MM-dd HH:mm:ss"; SimpleDateFormat sdf = new SimpleDateFormat(pattern); String now = sdf.format(new Date()); System.out.println(now); return now; } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0"> <display-name>ServletWeb</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.jsp</welcome-file> <welcome-file>default.htm</welcome-file> </welcome-file-list> <servlet> <servlet-name>servlet</servlet-name> <servlet-class>bitedu.lesson.app.TestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>servlet</servlet-name> <url-pattern>/TestServlet</url-pattern> </servlet-mapping> </web-app>
두 수에 대한 합을 구하여 결과를 출력하는 서블릿 클래스
<FirstServlet.java> 파일을 dynamic project에서 new -> servlet으로 생성
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class FirstServlet */ @WebServlet("/FirstServlet") public class FirstServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public FirstServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub int num1 = 20; int num2 = 20; int add = num1 + num2; PrintWriter out = response.getWriter(); out.println("<html><head><title>Additon</title></head>"); out.println("<body>"); out.println(num1 + "+" + num2 + "=" + add); out.println("</body>"); out.println("</html>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
20+20=40
JSP:
Java Server Page의 줄임말로, 자바로 서버 페이지를 작성하기 위한 언어. HTML문서 내부에 자바 코드가 들어가는 구조.
JSP페이지에 기술한 내용은 HTML로 간주되므로 자바 코드를 기술하기 위해서는 <% %> 태그 내부에 기술해야 하며, 변수에 저장된 값이나 함수의 결과값 출력을 위해서는 <%= %> 태그를 사용
두 수에 대한 합을 구하여 결과를 출력하는 JSP
dynamic project -> src -> main -> webApp에 jsp파일 생성
<NewFile1.jsp>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% // 난 자바를 여기에 쓸거라는 뜻의 기호 스크립트릿 int num1 = 10; int num2 = 20; int sum = 0; sum = num1 + num2; %> <!-- 밑에는 표현식 --> <h1> sum: <%=sum %> </h1> </body> </html>
sum: 30
<% int age = 23; String result = ""; if(age >= 20) { result = "성인 인증 완료"; } else { result = "미성년자는 이용하실 수 없습니다."; } out.println("<h1>결과 확인 중..</h1>"); %> <h1> <%=result %></h1>
결과 확인 중..
성인 인증 완료
<% int dan = 4; for(int i = 1; i < 10; i++) { out.print(dan + "*" + i + "=" + (dan*i) + "\n"); } %>
'웹 Web > JSP & Servlet' 카테고리의 다른 글
JSP 내장객체 (0) - JSP로 설문조사폼 (0) 2022.01.17 JSP 기본 다루기 - 기본태그, 지시자 (0) 2022.01.16 doPost()와 URL Mapping과 쿼리 스트링 (0) 2022.01.16 doGet(), request를 이용한 정보 넘기기 (1) - 사용자로부터 데이터 입력받기 (0) 2022.01.14 테이블 활용하여 게시판 만들기, 이클립스 연결(톰캣) (0) 2022.01.13