시작은 언제라도

request의 이동 본문

Web programming/web concepts

request의 이동

row_a_boat 2021. 4. 18. 16:52

request.setParameter() 와 request.getParameter()는 jsp와 servlet사이에서 정보 공유시 사용하는 명령어로,

String의 값 외에는 주고 받을 수 없다.

 

그럼 Form에서 Action으로 넘어온 값을 변경시킨후 JSP 페이지로 넘겨주기 위해서는 request.setAttribute() 를 써서 넘겨주고 JSP 페이지에서는 request.getAttribute()를 써서 받아야한다.

//findcar-form.jsp

<form action="FrontControllerServlet">
<input type="hidden" name="command" value="FindCar">
차번호 <input type="number" required="required" name="carNo">
<input type="submit" value="검색">
</form>

예를들어 위 폼에서 action으로 FrontControllerServlet으로 넘어간 number 형태의 carNo를

//FrontControllerServlet

public void handleRequest(est.getParameter("command");
		if(command.equals("FindCar")) {
			findCar(request, response);
		}else if(command.equals("RegisterCar")){
			RegisterCar(request, response);
		}
	}	
	//차 정보 검색 메서드
	public void findCar(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		String carNo = request.getParameter("carNo");
		 String carInfo = MockDAO.getInstance().findCarInfo(carNo);
		 String view = null;	
		 if(carInfo==null) {
		 		view= "findcar-fail.jsp";
		 	}else {
		 		view="findcar-ok.jsp";
		 		request.setAttribute("carInfo", carInfo);
		 	}
			request.getRequestDispatcher(view).forward(request, response);
	
	}
	public void RegisterCar(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		String carInfo = request.getParameter("carInfo");
		MockDAO.getInstance().registerCar(carInfo);
		response.sendRedirect("registercar-result.jsp");
		
	}

위 Servlet에서 String command = request.getParameter("command"); 이나  

String carNo = request.getParameter("carNo"); 해주지 않으면 findcar-fail.jsp 나 findcar-ok.jsp에서 String 값이 아닌 값 은 사용이 불가능하다. (여기에서 carNo 는 int 값이기 때문에 사용불가능)


이때 request.setAttribute() 를 통해 Servlet에서 넘겨준 값을 request.getParameter() 를 써서 jsp에서 받으려 해도 받지 못한다.

이때 type이 Object 이기 때문에 반드시 형변환을 해줘야 한다.


* action(여기에선 FrontControllerServlet)에서 객체를 request에 담아 보낼경우.

   request.setAttribute("객체명", 객체);

   ex) request.setAttribute("carinfo",carinfo);

 

   만약 form 의 hidden 값인 FindCar 를 넘겨받았다면 그 값을 변경하여 다시 보낼수 있다.

(위 서블릿에서는 조건에 의해 hidden인 FindCar가 command와 같다면 findCar메서드로 carNo를 보내주고, 

그 메서드에서 carNo값을 다시 carInfo로 변경하여 다시 보낼 수 있게 된다.)

   이때 사용하는 것이 request.setAttribute() 이다.

request.getAttribute() 는 요청된 이름의 Value 를 Object로 넘겨준다.


getAttribute는 특정 요소노드 내에 특정  한 속성값을 가져오는 메소드이다.


setAttribute는 메소드는 속성값을 변경시키는 메소드이다.


사용방법은 객체명.setAttribute("속성노드명",새로운속성값);


Object x = request.getAttribute("객체")


request.getParameter() 는 

-링크 <a href="a.jsp?command=java"> 에서 쿼리스트링의 형태로 설정해주거나

-폼 <form action="" > 에서 name,value의 형태로 설정해 놓고,

        <input type = "text" name="command" value="java"

 

servlet이나 jsp에서 request.getParameter("command")를 사용해서 사용자가 요청시에 보낸 정보를 받을 때 사용한다.

 

'Web programming > web concepts' 카테고리의 다른 글

Web Architecture  (0) 2021.04.19