# 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 |