web.xml -> 서버의 문지기를 설정하는 페이지

30초 간 소식이 없으면 세션종료

 

 

server.xml -> 서버자체를 설정하는 페이지

8005번으로 서버를 셧다운 할 수 있음

 

연결 타임아웃과 포트를 설정 할 수 있다

 

컨텍스트 명 설정 가능

 

----------------------------------------

 

'Web > Jsp' 카테고리의 다른 글

서버 내부에서 web.xml 세팅하기  (0) 2020.05.27
SSL  (0) 2020.05.27
200527  (0) 2020.05.27
서블릿 특정 페이지 포워딩(이동) 방식  (0) 2020.05.26
서블릿에서 세션 session 살펴보기  (0) 2020.05.26

 

JSP파일은 카멜표기법

-------------------------------------

데이터 저장소

로컬스토리지 - 노출되도 되는 데이터들 저장
쿠키 - 중요한 데이터들 저장

-------------------------------------

서블릿 -> JSP(모델1) -> 서블릿 + JSP(모델2)

---------------------------------------

현재 진행중이지 않은 프로젝트는 close해주자

-------------------------------------

최근에는 이모티콘 등을 사용하기 때문에

UTF-8 -> UTF-8 MB4

---------------------------------------

HTML의 submit은

form태그 내용의 모든 값을 전송할 때 사용한다.

태그내의 input 태그의 name을 기준으로 저장하여 전송.

---------------------------------------

JSP안에 자바 코드 DB로직 HTML CSS Javascript 등이 들어가기 때문에 협업이 힘들고 유지보수가 어렵다

---------------------------------------

서블릿을 디스패쳐 용도로 사용(FrontController)

페이지 이동할 때 서블릿파일을 경유해서 이동하게 되는 방식

MVC패턴, MVC패턴2

https://hyoje420.tistory.com/36

 

[JSP]MVC 패턴(MVC Pattern)

MVC 패턴(Model-View-Controller Pattern) MVC 패턴은 여러가지 디자인 패턴 중에 하나이다. 즉, 건축으로 비유하자면 공법이며, 소프트웨어에 빗대어 말하자면 어떻게 소프트웨어를 개발할 것인지의 개발

hyoje420.tistory.com

모델과 뷰는 컨트롤러를 무조건 경유 해야한다(MVC2)

------------------------------------------

 

 

 

 

서버가 자기 자신에게 request 할 수 있다 - redirect , dispatcher

세션은 인증 정보 같은 것만 담아야한다.

다른 데이터 들은 req, resp 에 담아야하는데 redirect 리다이렉트를 하면 유저정보를 다른페이지에 넘길 방법이 없다.

그럴 때 dispatcher 디스패쳐를 사용한다 .

 dispatcher 디스패쳐는 req, resp 객체를 유지한다.

ex)

A페이지가 유저정보를 들고 있는데

B페이지로 이동할 때 유저정보가 필요없다면 redirect

B페이지로 이동할 때 유저정보가 필요하다면 dispatcher

 

--------------------------------------

 

1) Dispatcher 방식

주소가 바뀌지 않는다.

같은 request 영역을 공유한다.


import java.io.IOException;

import javax.servlet.RequestDispatcher;
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 DispatcherServlet
 */
@WebServlet("/DispatcherServlet")
public class DispatcherServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public DispatcherServlet() {
        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
		RequestDispatcher dispatcher = request.getRequestDispatcher("dispatcher.jsp");
		request.setAttribute("request", "requestValue");
		dispatcher.forward(request, response);
	}

}

 

<%@ 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>
	request 속성 값: <%= request.getAttribute("request") %>
</body>
</html>

 

 

 

 

2) Redirect 방식

주소가 바뀐다.

request 영역에 공유한 속성 값에 접근 할 수 없다.


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 RedirectServlet
 */
@WebServlet("/RedirectServlet")
public class RedirectServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RedirectServlet() {
        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
		request.setAttribute("request", "requestValue");
		response.sendRedirect("redirect.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>
	request 속성 값 :<%= request.getAttribute("request") %>
</body>
</html>

 

 

 

세션ID값은 처음부터 (최초에 요청했을 때) 만들어진다.

세션에는 user오브젝트 등을 저장한다. (변수를 저장하는게 아니라 값들을 묶는다는 의미)

 

이름 저장

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;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class SetNameServlet
 */
@WebServlet("/SetNameServlet")
public class SetNameServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SetNameServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
		session.setAttribute("name", "오정원");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.println("<h1>이름저장</h1>");
	}

}

 

이름 가져오기


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;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class GetNameServlet
 */
@WebServlet("/GetNameServlet")
public class GetNameServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public GetNameServlet() {
        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
		HttpSession session = request.getSession();
		String name = (String)session.getAttribute("name");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.println("<h1>name="+name+"</h1>");
	}

}

 

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>당신이 좋아하는 강아지를 선택 하세요</h1>
	<form action="choiceDog" method="post">
		<input type="checkbox" name="dog" value="pu.jpg"/>푸들
		<input type="checkbox" name="dog" value="jin.jpg"/>진돗개
		<input type="checkbox" name="dog" value="pung.jpg"/>풍산개
		<input type="checkbox" name="dog" value="sap.jpg"/>삽살개
		<input type="submit" value="선택">
	</form>
</body>
</html>

 


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

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=euc-kr");
		PrintWriter out = response.getWriter();
		String[] dog =request.getParameterValues("dog");
		out.println("<!DOCTYPE html>\r\n" + 
				"<html lang=\"en\">\r\n" + 
				"<head>\r\n" + 
				"    <meta charset=\"UTF-8\">\r\n" + 
				"    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n" + 
				"    <title>Document</title>\r\n" + 
				"</head>\r\n" + 
				"<body bgcolor=\"black\">\r\n" + 
				"    <table align=\"center\" bgcolor=\"yellow\">\r\n" + 
				"        <tr>\r\n");
		for (int i = 0; i < dog.length; i++) {
			out.println("<td>");
			out.println("<imgsrc='"+dog[i]+"'/>");
			out.println("</td>");
		}
		out.println("        </tr>\r\n" + 
				"    </table>\r\n" + 
				"    \r\n" + 
				"</body>\r\n" + 
				"</html>");
	}

}

 

 

(이미지가 없어서 테이블만 테두리만 보임)

 

postman 다운로드

 

 

설치완료 화면

 

 

+를 클릭하여 새 테스트를 추가하자

 

 

콤보박스에서 원하는 전송방식을 선택하자

 

 

주소를 입력하고 send를 보내 테스트 해보자

put post 등을 테스트 할 때 유용하다

 

 

Params 또는 헤더와 바디를 이용해서 값을 전달 할 수 있다.

 

 

form-data 는 key:value 뿐만아니라 이미지 등 다른 데이터를 보낼 때 사용(나중에 배움)

 

 

바디에서 x-www-form-urlencoded를 선택하고 key:value를 입력하자

x-www-form-urlencoded 는 ( = 등호기호 ) 를 구분해서 파싱한다 + MIME타입(application/x-www-form-urlencoded)

자동으로 설정된다

 

 

바디에서 raw 타입으로 설정하고 MIME를 Text로 설정하자

 

 

BufferedReader br = request.getReader(); 를 이용하면 데이터 자체를 파싱하지 않고 받아온다

 

바디에서 JSON타입으로 데이터를 보내보자

 

버퍼드리더와 와일문으로 출력

 

 

바디에서 x-www-form-urlencoded 타입으로 보내본다

 

 

 

MIME 타입 - 클라이언트가 서버에 전송한 데이터가 어떤 타입인지 알려주기 위한 것

형태 - type/subtype
ex) image/png
ex) text/html

 

*문자는 inputStreamReader // 이미지 영상 오디오 등은 바이트이기 때문에 inputStream

*application데이터는 바이너리(json 등)

 

get 은 key:value 밖에 없기 때문에 타입이 필요없다 ( + 본문이 없다)

post 는 보낼 수 있는 데이터가 다양하기 때문에 타입을 지정해줘야한다

 

 

한글 입력

1번방식 web.xml(배포서술자) - 아이피 차단이나 문자형식 등 서버 입구에서 처리할 내용을 설정

더보기
	<!-- 입력문자 utf-8로 인코딩 -->
	<filter>
		<filter-name>setCharacterEncodingFilter</filter-name>
		<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>utf-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>setCharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

--------------------------------------------

-----------------------------------

 

 

2번방식 서블릿에서 request.setCharacterEncoding("utf-8");

--

'Web > Jsp' 카테고리의 다른 글

Postman 프로그램을 이용한 서블릿 테스트  (0) 2020.05.26
MIME 타입  (0) 2020.05.26
서블릿 servlet - get / post / put / delete 전달 가능 방식  (0) 2020.05.26
200526  (0) 2020.05.26
버퍼드라이터 / 프린트라이터  (0) 2020.05.25

+ Recent posts