국비학원/공부

27일차 jsp(2)

mikan- 2023. 7. 3. 14:00

# Servelet

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

import javax.servlet.*;
import javax.servlet.annotation.WebServlet; // url 경로
import javax.servlet.http.*;

/**
 * Servlet implementation class GetDate
 */
@WebServlet("/GetDate")
public class GetDate extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * get방식 or post방식이든 상관없이 다 처리해주는 메소드(자동)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=utf-8");

		// 2. PrintWriter out = new PrintWriter();
		PrintWriter out = response.getWriter();

		// 3. html문서 만들어서 전송 (끝)
		out.println("<html><head></head>");
		out.println("<body>");
		// 접속자에게 보여줄 내용
		//<% 
		request.setCharacterEncoding("utf-8");
		String name = request.getParameter("name");
		String address = request.getParameter("address");
		out.print("name : " + name + ", address : " + address);
		//%>
		out.println("</body>");
		out.println("</html>");

	}

}

 

# Servlet (2)

/*
 * 서블릿 : 웹상에서 요청에 따라 결과를 만들어서 보내주는 웹프로그램(text/html 문서형태)
 * 서블릿을 만드는 조건 : 
 * 1. 2개의 임포트를 적기
 *    import javax.servlet.*; -> 서블릿클래스 사용 (*은 파일만, 폴더는 따로 지정)
 *    import javax.servlet.http.*; -> 웹상에서 실행
 * 
 * 2. public class로 작성해야 된다.
 *  = 외부에서 접근이 가능하다. (누구나 접속이 가능하게 만들기 위해)
 * 
 * 3. 반드시 HttpServlet 클래스를 상속 받아야 한다.
 *  = doGet(), doPost() 때문에 상속 받아야한다. -> 내용을 변경해서 메소드 작성 해야한다.
 */

// 데이터를 전송해주기 때문에 입출력은 필수
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Servlet;
// 서블릿 환경 -> 서블릿의 초기환경설정 떄문에
import javax.servlet.ServletConfig;
// 서블릿의 오류발생시 처리하기위해
import javax.servlet.ServletException;
// 웹상에서 접근방법
import javax.servlet.annotation.WebServlet;
// 상속을 받을 클래스
import javax.servlet.http.HttpServlet;
// 요청객체 = 요청을 받아서 처리해주는 객체 (Request)
import javax.servlet.http.HttpServletRequest;
// 응답객체 = 응답을 받아서 처리해주는 객체 (Response)
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HelloTest
 */
@WebServlet("/HelloTest")
public class HelloTest extends HttpServlet {

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		
		System.out.println("서블릿이 실행시 제일 먼저 호출되는 메소드(init)");
		System.out.println("생성자와 같은 역활(서블릿의 초기값을 설정)");
	}

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("소스코드를 변경해서 다시 새로고침할 때(reload)");
		System.out.println("서블릿이 종료할 때(메모리 해제할때 사용");
	}

	/**
	 * 요청을 받아서 처리해주는 메소드(get방식 -> 웹쇼핑)
	 * (request, response) 매개변수로 전달 받아서 처리
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("웹상에서 get방식으로 접속할 때 마다 자동호출");
		// 1. 어떤 형태의 문서를 보내줄지 결정(html + 한글)
		response.setContentType("text/html;charset=utf-8");
		
		// 2. PrintWriter out = new PrintWriter();
		PrintWriter out = response.getWriter();
		
		// 3. html문서 만들어서 전송 (끝)
		out.println("<html><head></head>");
		out.println("<body>");
		// 접속자에게 보여줄 내용
		out.println("<h2>우리 사이트에 잘 오셨습니다.</h2>");
		
		// 추가
		out.println("<table border = 1>");
		for (int i = 2; i <= 9; i++) {
			out.print("<tr>");
			for (int j = 1; j <= 9; j++) {
				out.println("<td>");
				out.println(i + " * " + j + " = " + i * j);
				out.println("</td>");
			}
			out.println("</tr>");
		}
		out.println("</table>");
		out.println("");
		out.println("</body>");
		out.println("</html>");
	}

	/**
	 * 사용자가 외부에서 post방식으로 서블릿을 요청시 자동으로 호출되는 서블릿 메소드 (callback)
	 * ex) 회원가입, 회원수정, 로그인.....
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

 

# Servlet (3)

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;

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 Notice
 */
@WebServlet("/Notice")
public class Notice extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=utf-8");

		// 2. PrintWriter out = new PrintWriter();
		PrintWriter out = response.getWriter();

		// 3. html문서 만들어서 전송 (끝)
		out.println("<html><head></head>");
		out.println("<body>");
		// 접속자에게 보여줄 내용
		// 공지사항
		out.println("<h2>오늘의 공지사항</h2>");
		// notice/2023530.txt
		String fileName = ""; // 불러올 파일명을 저장
		
		Calendar cal = Calendar.getInstance(); // Date d = new Date();
		
		// 형식) 날짜객체명.get(정적상수명) -> 년, 월, 일, 시, 분, 초
		fileName += cal.get(Calendar.YEAR); // "2023"
		fileName += cal.get(Calendar.MONTH)+1; // 0 ~ 11까지만 얻어올 수 있어서 +1 해줘야된다
		fileName += cal.get(Calendar.DATE); // 윤년 자동계산 (30)
		fileName += ".txt"; // "2023530" + ".txt" = "2023530.txt";
		
		System.out.println("fileName : " + fileName);
		
		String realPath = "C:\\webtest\\4.jsp\\sou\\ServletStudy\\src\\main\\webapp\\notice\\" + fileName;
		
		try {
			// FileInputStream(영문) or FileReader(한글);
			BufferedReader br = new BufferedReader(new FileReader(realPath));
			String line = ""; // 한 줄 씩 읽어들여서 저장할 변수
			
			// 계속 읽어들일수 있는 상태라면
			while((line = br.readLine()) != null ) {
				out.println(line + "<br>"); // 클라이언트의 브라우저 전송
			}
			br.close();
		} catch (IOException e) {
			System.out.println("불러올 파일의 경로와 파일명을 확인하세요." + e);
		} catch (Exception e) {
			System.out.println("오늘 공지사항이 없습니다." + e);
		}
		out.println("<p align = center>");
		out.println("<hr>"); // 경계선
		out.println("<input type = 'submit' value = '창닫기' onclick = 'window.close()'>");
		//-----------------------------------
		out.println("</body>");
		out.println("</html>");
	}

}

'국비학원 > 공부' 카테고리의 다른 글

29일차 jap(4) 메인페이지 + 자바빈즈 + 쿠키  (0) 2023.07.03
28일차 jsp(3)  (0) 2023.07.03
26일차 jsp(1)  (0) 2023.07.03
25일차 java(last) - ChatGUI make  (0) 2023.07.03
25일차 java(13)  (0) 2023.07.03