일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- pattern
- ERD
- Agile
- backend
- FrontController
- setAttribute
- usecasediagram
- controller
- App
- HTTP
- getAttribute
- 내장객체
- getParameter
- NOTE
- jsp
- UML
- handlerMapping
- mybatis
- command
- system developer
- Framework
- MVC
- Cloud
- 맥린이
- Program
- tiles
- DevOps
- classdiagram
- 프롬프트
- Spring
- Today
- Total
시작은 언제라도
request의 이동 본문
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 |
---|