221229스프링

조이연·2022년 12월 29일
0

JSP

목록 보기
7/19
  1. callback : 작성한 함수를 맡겨서 실행
  2. 웹 서버는 콜백으로 동작한다 : 프로그래머가 작성한 함수를 웹서버에 위탁해서 실행

WebServer.기능실행(login);
WebServer.기능실행(list);

자바스크립트는 그냥 작업
자바는 설계또를 만들고 작업

  • 전통적인 방식은 form을 사용하고 프론트 주소가 바뀐다
    백은 html + 데이터를 보내준다

  • REST 방식은 ajax를 사용하고 프론트가 이동하지 않는다
    백은 데이터만 보내준다

전통적인 방식은 form을 사용하고 프론트 주소가 바뀐다.
백은 html+데이터를 보내준다.

REST방식은 ajax를 사용하고 프론트가 이동하지 않는다.
백은 데이터만 보내준다.

package com.example.demo;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;


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("/time2")
public class Example02 extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	//매개변수
    //request: 사용자가 요청을 담고있는 객체
	//response: 사용자에게 보내줄 정보를 담는 객체
		//문서 형식(MIME)을 지정하자 -> 백에서 해야할 가장 중요한 일
		resp.setContentType("text/html");
		resp.setCharacterEncoding("utf-8");
		
		String ip = req.getRemoteAddr();
		Date now= new Date();
		SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
		String dateStr = sdf.format(now);
		
		//html 문자열로 출력하기위해 출력 객체가 필요 . response에 준비된 객체를 꺼낸다...안중요
		PrintWriter out = resp.getWriter();
		out.print("<html><head><title>현재시각</title></head>");
		out.print("<body><p>당신의 ip 주소: "+ip+"</p>");
		out.print("<p style='color: orange;'>현재 시간: "+dateStr+ "</p>");
		out.print("</body></html>");
		
	}
}
package com.example.demo;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

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

//html 없이 내용만 출력하는 서블릿(REST방식)
@WebServlet("/time3")
public class Example03 extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	
		Date now= new Date();
		SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
		String dateStr = sdf.format(now);
		
		PrintWriter out= resp.getWriter();
		out.print(dateStr);
		

	}

}
  • 백과 프론트를 함께
    ex)쇼핑몰에서 백과 프론트를 함께->작성 용이, 일관성, 보안 유리 /백과 프론트가 서로 믿을 수 있다.
  • 백 따로, 프론트 따로
    ex)날씨앱, 버스앱 -> 모든 프론트(앱,웹...)을 지원할 수 있다./ 백과 프론트가 서로 신뢰가 없다.
    ->주소가 다르면 접근이 막힌다(CORS)
    프론트 주소 www.naver.com, 백주소 www.naver.comm(접근 허용)
    프론트 주소 www.naver.com, 백주소 ad.naver.com(접근 불가)

<MVC방식(CORS X)>
:백과 프론트를 같은 프로젝트에 집어넣고 화면이동없이 처리한다(AJAX)

글쓰기 -> 로그인 -> 글쓰기
이동하는 작업(form)과 이동하지 않는 작업(ajax)

MVC : 결과가 html이고 이동한다.
AJAX : 결과는 데이터(파일,int,사진...)고 이동하지 x

<더하기>
자바

package com.example.demo;
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;

//숫자 2개를 입력받아 덧셈 결과를 출력하는 MVC 서블릿

@WebServlet("/example6")
public class Example6 extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setContentType("text/html");
		resp.setCharacterEncoding("utf-8");
		
		String value1 = req.getParameter("value1");
		String value2 = req.getParameter("value2");
		int val1= Integer.parseInt(value1);
		int val2= Integer.parseInt(value2);
		int result= val1+val2;
		
		String html = "<html><head><title>덧셈결과</title></head>";
		html="<body><p>" + "덧셈 결과 : "+ result + "</p></body><html>";
		resp.getWriter().print(html);
		
	}
}

html

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<!-- 
	화면을 이동하고 아니고는 백이 아니라 프론트가 정한다
	프론트에서 폼으로 작업하면 화면은 이동한다
	프론트에서 ajax로 작업하면 화면은 이동하지 않는다
	 -->
	<form action="/sample02/example6">
			값1: <input type="text" name="value1" value="10"><br>
			값2: <input type="text" name="value2" value="20"><br>
			<button>더하기</button>
	</form>
	
</body>
</html>

결과:

profile
안녕하세요

0개의 댓글