[새싹] 현대IT&E 231113 기록 -JSP / Servlet

최정윤·2023년 11월 13일
0

새싹

목록 보기
20/67
post-custom-banner

😈 tomcat9 설치 및 실행하기

https://tomcat.apache.org/download-90.cgi

-> tar.gz 설치하기

https://earth-95.tistory.com/90

server.xml

69번째줄 수정
port = "80" URIEncoding="UTF-8"

포트번호 충돌로 인하여 포트번호 변경

😈 putty 설치 및 실행

https://velog.io/@nizi123/Mac-OS%EC%97%90-PuTTY-%EC%84%A4%EC%B9%98
https://investechnews.com/mac-putty-install-error/

[putty 설치 오류 해결 참고]

form.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>
<form action="process.jsp" method="get">
난 누구지? 내 이름을 불러봐~!!!<br/>
<input type="text" name="name" />
<button type="submit">확인</button>
</form>
</body>
</html>

process.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>
<%   // scriptlet
   String name = request.getParameter("name");
   out.println("<h1>그래, 난 " + name + ". 포기를 모르는 남자지</h1>");
%>
</body>
</html>

ASP - IIS - MS-SQL
PHP - Apache - MySQL

get 테스트
.
GET /index.jsp HTTP/1.1
Host: localhost:8888
.
GET /basic/process.jsp?name=jungdaeman HTTP/1.1
Host: localhost:8888

post 테스트
.
POST /basic/process.jsp HTTP/1.1
Host: localhost:8888
Content-type: application/x-www-form-urlencoded
User-agent:Mozilla/5.0
Content-Length: 15
.
name=jungdaeman


-> get 방식

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

-> 세션을 30분동안 유지

😈 postman 설치 및 실행

https://www.postman.com/downloads/


웹 응용 프로그램 개요

  • 여러 컴퓨터에 분산되어 있는 자료를 인터넷을 통해서 쉽게 이용할 수 있도록 지원하는 정보 시스템
  • 웹 서버와 웹 클라이언트로 구성
    • 웹 서버
      • 자료를 웹 클라이언트에게 제공하는 역할
    • 웹 클라이언트
      • 웹 서버의 자료를 받아 다양한 형태로 보여주는 역할

웹 응용 프로그램

  • 웹 서버에서 실행되는 응용 프로그램이다.
  • 클라이언트가 요청하는 자료를 가지고 있다.
  • 정적파일과 동적 파일로 구성된다.
    • 정적파일
      • HTML 파일 및 멀티미디어 파일
    • 동적파일
      • 실행이 필요한 코드를 가지고 있는 파일
      • Servlet, JSP, ASP, PHP, ASPX 파일
  • 하나의 웹 서버에는 여러 개의 웹 응용 프로그램들이 존재할 수 있다.

웹 사이트

  • 웹 사이트는 웹 서버의 위치와 관련된 용어이고, 웹 응용 프로그램은 웹 사이트에서 이용 가능한 기능과 관련된 용어라고 볼 수 있다.
  • 하나의 웹 응용 프로그램으로 구성될 수도 있고 여러 개의 웹 응용 프로그램으로 구성될 수도 있다.

URL

  • 웹 클라이언트가 웹 응용 프로그램의 자료를 요청하기위해 사용

HTTP

  • 웹 서버와 웹 클라이언트는 소켓 통신을 한다. TCP/IP 프로토콜로 데이터를 전달한다.
  • HTTP는 웹 클라이언트와 웹 서버가 통신할 때 사용하는 메시지의 표시 규약이다.
  • HTTP는 전송 프로토콜인 TCP에 의해 웹 클라이언트와 웹 서버에 전송된다.

Servlet 프로그래밍

Servlet 소개

  • 동적 파일이다.
  • 하나의 Java Class이다.
  • 서버에서 객체 생성후 사용된다.
  • URL로 클라이언트가 실행 요청한다.
  • 특정 메소드를 호출하여 응답을 생성한다.

Servlet 실행 및 개발 환경

  • 실행 환경
    • Java Runtime Environment
      • JDK 또는 JRE가 설치된 서버 PC
    • 웹 서버 + Servlet Container(Servlet Engine)
      • Tomcat
      • Resin
      • Application Server
  • 개발 환경
    • 실행 환경
    • J2EE API
      • 컴파일시 필요
    • 개발 도구
      • Eclipse

요청방식

  • 웹 클라이언트가 웹 서버로 자료를 요청할 때, 사용하는 방식
  • GET 방식
    • 요청 HTTP 시작라인의 URL에 입력 데이터가 포함된다.
    • 요청 HTTP의 바디가 없다.
    • 전송하는 자료량에 한계가 있다.
    • 주소 표시줄에 표시되므로 보안성이 Post 방식보다 약하다.
    • 문자만 전송가능하다.
  • POST 방식
    • 요청 HTTP 바디에 입력 데이터가 포함된다.
    • 바디의 데이터는 스트림으로 전송된다.
    • 스트림 형태로 입력 데이터가 전송되므로 전송 용량에 제한을 받지 않는다.
    • 문자 및 바이너리(파일)를 전송할 수 있다.

코드실습

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>cjyweb01</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>helloServlet2</servlet-name>
  	<servlet-class>basic.HelloServlet2</servlet-class>
  	<load-on-startup>20</load-on-startup>
<!--   	<init-param>
  		<param-name>load-on-startup</param-name>
  		<param-value>10</param-value>
  	</init-param> -->
  </servlet>
  
  <servlet-mapping>
	  <servlet-name>helloServlet2</servlet-name>
	  <url-pattern>/helloServlet2</url-pattern>
  </servlet-mapping>
</web-app>

form.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>
<form action="process.jsp" method="post">
난 누구지? 내 이름을 불러봐~!!!<br/>
<input type="text" name="name" />
<button type="submit">확인</button>
</form>
</body>
</html>

process.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>
<%   // scriptlet
   String name = request.getParameter("name");
   out.println("<h1>그래, 난 " + name + ". 포기를 모르는 여자지</h1>");
%>
</body>
</html>

HelloServlet.java

package basic;
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;

@WebServlet(urlPatterns = "/helloServlet")
public class HelloServlet extends HttpServlet{
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("helloServlet service() 수행");
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<head><title>first servlet</title></head>");
		out.println("<body><h1>Hello Servelet~</h1></body>");
		out.println("<html>");
		out.flush();
	}

}

HelloServlet2.java

package basic;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/HelloServelet2")
public class HelloServelet2 extends HttpServlet {
    public HelloServelet2() {
        System.out.println("HelloServlet2 생성자 수행");
        // TODO Auto-generated constructor stub
    }
    
    public void init(ServletConfig config) throws ServletException {
    	System.out.println("HelloServlet2 init() 수행");
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("HelloServlet2 doGet() 수행");
//		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("HelloServlet2 doPost() 수행");
//		doGet(request, response);
	}
	
	protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("HelloServlet2 doPut() 수행");
//		doGet(request, response);
	}
	
	protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("HelloServlet2 doDelete() 수행");
//		doGet(request, response);
	}

}

Cal.java

package basic;

import java.util.Calendar;

public class Cal {
	public static void main(String[] args) {
		Calendar c = Calendar.getInstance();
		
		int year = c.get(Calendar.YEAR);
		int month = c.get(Calendar.MONTH)+1;
		
		System.out.println(year + "," + month);
		c.set(year, month-1, 1);
		int week = c.get(Calendar.DAY_OF_WEEK);
		System.out.println(week);
		int endday=c.getActualMaximum(Calendar.DAY_OF_MONTH);
		System.out.println(endday);
		
		System.out.println("일 월 화 수 목 금 토");
		System.out.println("----------------");
		
		for(int w=1; w<week; w++) {
			System.out.print("   ");
		}
		for(int d=1, w=week; d<=endday; d++, w++) {
			System.out.print( d < 10 ? " " + d + " " : d + " ");
			if (w % 7 == 0) System.out.println();
		}
	}
}

cal.jsp

<%@page import="java.util.Calendar" %>
<%@ 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>
<% // scriptlet
	Calendar c = Calendar.getInstance();
	
	int year = c.get(Calendar.YEAR);
	int month = c.get(Calendar.MONTH)+1;
%>
<table border="1">
	<caption><%=year%>, <%=month%></caption>
	<tr>
		<th></th>
		<th></th>
		<th></th>
		<th></th>
		<th></th>
		<th></th>
		<th></th>
	</tr>
	<tr>
	<!-- <td colspan="7">-----------------------</td> -->
	</tr>
	<tr>
<%
	c.set(year, month-1, 1);
	int week = c.get(Calendar.DAY_OF_WEEK);
	System.out.println(week);
	int endday=c.getActualMaximum(Calendar.DAY_OF_MONTH);
	System.out.println(endday);

	for(int w=1; w<week; w++) {%>
		<td>   </td>
	<%}
	for(int d=1, w=week; d<=endday; d++, w++) {%>
		<td><%= d %></td>
		<% if (w % 7 == 0)%></tr>
	<%}%>
	<%for(int w=1; w<3; w++) {%>
		<td> </td>
	<%}%>
</table>
</body>
</html>

cal.jsp -> 이전달, 다음달 추가버전

<%@page import="java.util.Calendar" %>
<%@ 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>
<% // scriptlet
	Calendar c = Calendar.getInstance(); // 이번달
	Calendar c2 = Calendar.getInstance(); // 저번달
	Calendar c3 = Calendar.getInstance(); // 다음달

	int year = c.get(Calendar.YEAR);
	int month = c.get(Calendar.MONTH)+1;
%>
<table border="1">
	<caption><%=year%>, <%=month%></caption>
	<tr>
		<th></th>
		<th></th>
		<th></th>
		<th></th>
		<th></th>
		<th></th>
		<th></th>
	</tr>
	<tr>
	<!-- <td colspan="7">-----------------------</td> -->
	</tr>
	<tr>
	<%
	c.set(year, month-1, 1);
	c2.set(year, month-2,1);
    c3.set(year, month, 1);
    
	int week = c.get(Calendar.DAY_OF_WEEK);
	int nextMonthWeek = c3.get(Calendar.DAY_OF_WEEK);
	System.out.println(week);
	int endday=c.getActualMaximum(Calendar.DAY_OF_MONTH);
	int lastendday=c2.getActualMaximum(Calendar.DAY_OF_MONTH);
	System.out.println(endday);
	System.out.println(lastendday);

	for(int w=week-1; w > 0; w--) {%>
		<td><%= lastendday-w+1%></td>
	<%}
	for(int d=1, w=week; d<=endday; d++, w++) {%>
		<td><%= d %></td>
		<% if (w % 7 == 0)%></tr>
	<%}%>
	<%for(int w=1; w<3; w++) {%>
		<td><%= w%></td>
	<%}%>
</table>
</body>
</html>

profile
개발 기록장
post-custom-banner

0개의 댓글