jsp05

제로·2022년 11월 27일
0

JSP

목록 보기
5/30

request & response

클라이언트 <===========> 서버
		   --request-->
		  <--response--
  1. 클라이언트에서 서버로 주는 내용
    1) 요청 query string ?key=value
    2) 쿠키정보
    3) 기타 클라이언트 관련 접속 정보
  2. 서버에서 클라이언트로 주는 내용
    1) 구성된 화면(웹화면)
    2) session 정보 전달
    3) 기타 서버 관련 정보

request 기본 객체

  1. 웹 브라우저가 웹 서버에 전송한 요청 관련 정보 제공
  2. 주요 기능
    1) 클라이언트(웹 브라우저)와 관련된 정보 읽기 기능
    2) 서버와 관련된 정보 읽기 기능
    3) 클라이언트가 전송한 요청 파라미터 읽기 기능
    4) 클라이언트가 전송한 쿠키 읽기 기능
    5) 속성 처리 기능
  3. request 기본 객체 - 주요 정보 제공 메소드
    1) getRemoteAddr()
    웹 서버에 연결한 클라이언트의 ip주소를 구한다.
    게시판이나 방명록 등에서 글 작성자의 ip 주소가 자동으로 입력될때
    입력되는 ip 주소가 바로 이 메서드를 사용하여 구현되는 것이다.
    2) getMethod()
    웹 브라우저가 정보를 전송할 때, 사용한 방식을 구한다.
    3) getRequestURI() : 웹 브라우저가 요청한 URL에서 경로를 구한다
    4) getContextPath() : JSP 페이지가 속한 웹 어플리케이션의 컨텍스트 경로를 구한다.
    5) getServerName() : 연결할 때 사용한 서버 이름을 구한다.
    6) getServerPort() : 서버가 실행중인 포트 번호를 구한다.
    ps) 위 정보들을 서버에서 LOG 파일이나 db로 저장해서 현재 서버의 부하량이나 접속 정보들을 파악해서 모니터링할 떄, 활용된다.
## 기준이 되는 서버 : http://localhost:7080/a02_jsp/a02_startJSP/a03_request.jsp
<h2>원격주소 : <%=request.getRemoteAddr() %></h2>
<h2>전송방식 : <%=request.getMethod()%></h2>
<h2>요청uri : <%=request.getRequestURI()%></h2>
<h2>기준 context : <%=request.getContextPath()%></h2>
<h2>서버명 : <%=request.getServerName()%></h2>
<h2>포트명 : <%=request.getServerPort()%></h2>

request 기본 객체 - 파라미터 읽기 메서드(요청값 처리 메서드)

  1. 기준 요청값
    ?key=value

  2. 기능메서드

    • request.getParameter(String name)
      이름이 name인 파라미터의 값을 구한다. 존재하지 않을 경우 null 리턴
      주로 하나의 요청 키와 하나의 요청값을 받는 경우 사용한다.
      ex) ?name=홍길동&age=25&loc=서울

    • request.getParameterValues(String name)
      이름이 name인 모든 파라미터의 값을 배열로 구한다. 존재하지 않을 경우 null리턴
      하나의 요청키에 여러개의 요청값을 받는 경우 사용한다.
      ex) ?names=홍길동&names=김길동&names=박길동

    • request.getParameterNames()
      웹 브라우저가 전송한 파라미터의 이름을 구한다.

    • request.getParameterMap()
      웹 브라우저가 전송한 파라미터의 맵을 구한다. 맵은 파라미터 이름과 값의 쌍으로 구성된다.

    cf) request.getParameterNames(), request.getParameterMap() :
    요청 key를 모르거나 변동이 있는 경우, 해당 요청 key과 값을 설정하여 처리할 떄 활용

<h2>name:<%=request.getParameter("name") %></h2>
<h2>age:<%=request.getParameter("age") %></h2>
<h2>loc:<%=request.getParameter("loc") %></h2>
<%
	String prices[] = request.getParameterValues("price");
	if(prices!=null){
%>
<h2>price[0]:<%=prices[0] %></h2>
<h2>price[1]:<%=prices[1] %></h2>
<h2>price[2]:<%=prices[2] %></h2>
<%} %>


<%
//요청값이 가변적일 때, 처리되는 객체로 요청 키들을 가지고 온다
Enumeration e = request.getParameterNames();
while(e.hasMoreElements()){ // 요청키가 있을 때까지 처리
	String key= (String)e.nextElement(); // 요청키를 가지고 온다.
	//String value = request.getParameter(key); // 요청값을 가지고 온다
	// 여러개가 단일 갯수가 섞여있는 경우
	String req[]= request.getParameterValues(key);
	for(String value:req){
		out.print("<h3>"+key+":"+value+"</h3>"); 
   // expression으로 받지 않고 out.print를 이용해서 간단하게 출력할 수 있다.
	}
}	
%>

<%
//숫자형 처리
Enumeration e1 = request.getParameterNames();
int tot=0;
while(e1.hasMoreElements()){ // 요청키가 있을 때까지 처리
	String key= (String)e1.nextElement(); // 요청키를 가지고 온다.
	String req[]= request.getParameterValues(key);
	for(String value:req){
		if(key.equals("price")){
			int price = 0;
			// null, 공백, 숫자형이 아닌 데이터를 모두 다 0으로 처리
			try{
				price = Integer.parseInt(value);
			}catch(Exception ex){}
	
			tot+=price;
		}
		out.print("<h3>"+key+":"+value+"</h3>"); // expression으로 받지 않고 out.print를 이용해서 간단하게 출력할 수 있다.
	}
}	
	out.print("<h3>총비용 합산"+tot+"</h3>");
%>
profile
아자아자 화이팅

0개의 댓글