session,application 영역의 값을 공유가능. 파라미터의 값도 저장/전달 가능하다(get 방식). 파라미터를 가져갈때 표현식이 아닌
1 2 3 4 5 6 7
<% //response.sendRedirect("이동할 페이지 주소"); response.sendRedirect("scopeProPro.jsp"); //파라메터 추가로 같이 공유하는 방법 response.sendRedirect("scopeProPro.jsp?id="+id+"&pw=1234"); %>
아이디가 한글일때는 왜 물음표가 나타날까요? response.sendRedirect()전까지는 한글이 안깨지다가 response.sendRedirect()명령어부터 한글이 깨진다. 데이터를 인코딩해서 보내야한다. 인코딩에는 여러 방식이 있는데 response.sendRedirect()는 한글데이터를 처리하지못하는 인코딩방식이다. response객체안에 전달되는 콘텐츠타입을 바꿔서 해야하는데 그걸 하려면 서블릿을 이용해야해서 서블릿배우면 알수있다.
2-4. 액션태그 forward 이동시(p222)
html태그이지만 jsp동작을 할수있게 만들어진 특수한 기능을 가지고 있다. 액션태그 : jsp페이지에서 자바, 스크립트코드없이 다른 페이지로 이동하는 기능이 있다. 서블릿, 객체(자바빈)에 접근할수있는 방법이 액션태그이다. 원래 페이지에 의해 생성된 request객체와 response객체가 그대로 넘어간다.
즉, session,application 그리고 request 영역 더불어 파라미터값까지 공유가능.
따라서 액션태그는 이동하는 페이지의 주소는 변경되지않고 페이지의 내용만 변경되는 희안한 태그이면서 request객체와 response객체를 가지고 이동한다.
그런데 주소를 변경안하는 기능이 왜 필요할까? MVC패턴개발방식에서 꼭 필요하다. 웹서핑중에 jsp파일명을 주소창에서 본 적이 있는가? 아마 없을 것이다. 보안을 위해서 .jsp파일을 절대 공개하지않는다. 따라서 가상주소를 사용해야하는데 그 가상주소를 사용할때 액션태그 forward가 필요하다
// 이전페이지에서 정보를 받아오기 System.out.println("입력숫자 : " + request.getParameter("num")); //콘솔에서 출력 out.println("입력하신 숫자는 " + request.getParameter("num")); //html화면에서출력
//form태그에서 get방식으로 정보를 전달할시 모든 데이터는 string타입으로 변경되어 전달되기때문에 //숫자데이터 출력을 원하면 형변환Integer.parseInt()해줘야한다 int num = Integer.parseInt(request.getParameter("num")); 정수형값 : <%=num %> <br>
3. 파라미터값 한글처리
form get방식과 달리 post방식을 사용하면 한글이 깨지는 문제가 발생한다. 따라서 body태그 바로 밑에 파라미터 한글처리 코드가 필요하다.
1 2 3 4
<!-- form post방식을 사용하면 한글이 깨지는 문제가 발생하기때문에 파라미터 한글처리 코드가 필요하다 --> <% request.setCharacterEncoding("UTF-8"); %>
4. 동일한 파라미터의 값을 변수로 가져오기
사용자가 radio박스를 클릭하면 해당 데이터를 변수로 가져올수있다.
request.getParameter("") : 큰따옴표안에 name속성을 넣으면된다.
정보를 입력하는 페이지는 아래와 같이 radio버튼을 만들어놓았다.
1 2 3 4 5 6 7
<formaction="정보출력페이지.jsp"method="post"name="fr"> <label>성별 : </label> <inputtype="radio"name="gender"value="womyn"> 여성 <inputtype="radio"name="gender"value="men"> 남성
<formaction="정보출력페이지.jsp"method="post"name="fr"> <label>취미 : </label> <inputtype="checkbox"name="hobby"value="game"> 게임 <inputtype="checkbox"name="hobby"value="movie"> 영화감상 <inputtype="checkbox"name="hobby"value="workout"> 운동