ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 서블릿과 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");
    }
    %>

     

Designed by Tistory.