JSP 2일 (23.03.24)

Jane·2023년 3월 24일
0

IT 수업 정리

목록 보기
86/124

1. 웹 프로젝트 설정

  • 톰캣, 웹서버, WAS(Web Application Server)
  • JSP는 서블릿(Servlet)
  • 톰캣이 서블릿 클래스를 담고 있는 컨테이너를 생성한다.
  • 웹 프로그래밍을 표현하는 방식 : 서블릿, JSP

  • jsp 뿐만 아니라, html도 할 수 있다.

  • 반영이 안되면 Publish to the server로 반영을 갱신하거나, 다시 서버를 껐다가 켠다.

2. 서블릿

2-1. 서블릿 페이지 만들기

서블릿 파일은 src에 있다.

src 안에 있는 edu.global.ex > HelloWorld.java

package edu.global.ex;

import java.io.IOException;
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 HelloWorld
 */
@WebServlet("/HelloWorld") // 접속하는 주소를 알려준다.
public class HelloWorld extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloWorld() {
        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
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @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);
	}

}

2-2. 서블릿 수정하기

HelloWorld.java의 doGet()을 수정한다.

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
		response.getWriter().append("hello world append");
		
		System.out.println("Hello World~ test");
	}

  • append하는 문자를 html 코드로도 고쳐 문자열 형식으로도 쓸 수 있다.
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		response.getWriter().append("<h1>hello world append</h1><br>");
		response.getWriter().append("i am a boy you are a girl");
		
		System.out.println("Hello World~ test");
	}

  • @WebServlet("/HelloWorld")
    어노테이션의 내용을 바꿔서 접속 경로를 바꿀 수 있다.

2-3. WEB-INF 밑에 web.xml 만들기

  • 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>servet_example</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>
  • index.html, index.htm, index.jsp, default.html, default.htm, default.jsp 를 만들게 되면
    파일 경로를 지정하지 않아도 자동 생성

3. 폼 태그 실습

3-1. 폼 태그의 내용 주고 받기

WebContent > formex.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Form Example</title>
</head>
<body>
	<form action="FormEx" method="get">
		<span>이름</span> : <input type="text" name="uname" size="10" /><br>
		<span>ID</span> : <input type="text" name="uid" size="10" /><br>
		<input type="submit" value="전송" />
		<input type="reset" value="리셋" />
	</form>
</body>
</html>

(Servlet) FormEx.java

package edu.global.ex;

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 HelloWorld
 */
@WebServlet("/FormEx") // form의 action과 같이 맞춰준다.
public class FormEx extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FormEx() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
    
    // request : 요청하는 객체, response : 응답하는 객체
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet() 실행"); // method = get
		
		/* 접속한 주소 */
		System.out.println(request.getRemoteAddr());
		System.out.println(request.getRemoteHost());
		
		request.setCharacterEncoding("UTF-8"); // 작업하는 html과 charset을 맞춘다.
		
		/* 내용 받아오기 */
		String name = request.getParameter("uname"); // uname에 해당하는 input을 불러온다.
		System.out.println(name);
		
		String id = request.getParameter("uid");
		System.out.println(id);
		
		/* html로 내용 출력하기 */
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter writer = response.getWriter();
		
	    writer.println("<html><head></head><body>");
	    writer.println("id = " + id + "<br>");
	    writer.println("name = " + name + "<br>");
	    writer.println("</body></html>");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doPost() 실행"); // method = post
		
		/* 접속한 주소 */
		System.out.println(request.getRemoteAddr());
		System.out.println(request.getRemoteHost());
		
		request.setCharacterEncoding("UTF-8"); // 작업하는 html과 charset을 맞춘다.
		
		/* 내용 받아오기 */
		String name = request.getParameter("uname"); // uname에 해당하는 input을 불러온다.
		System.out.println(name);
		
		String id = request.getParameter("uid");
		System.out.println(id);
		
		/* html로 내용 출력하기 */
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter writer = response.getWriter();
		
	    writer.println("<html><head></head><body>");
	    writer.println("id = " + id + "<br>");
	    writer.println("name = " + name + "<br>");
	    writer.println("</body></html>");
	}

}
  • html의 method를 post로 바꾼 다음, post 방식도 실행해본다.

3-2. 한글 깨짐 처리

  • 해당 위치에 선언을 해준다. 잘못하면 에러 날 수 있으므로 주의. (기본적으로 UTF-8로 작업한다.)
    • get 방식 : (Servers > server.xml) 포트 번호가 적혀있는 곳에 Connecter URlEncoding="EUC-KR" 선언해준다.
    • post 방식 : (작업하는 servlet에) request.setCharacterEncoding("EUC-KR");

profile
velog, GitHub, Notion 등에 작업물을 정리하고 있습니다.

0개의 댓글