JSP 내부객체
객체 Object
1 |
|
test.jsp -> text_jsp.java -> test_jsp.class
근데 톰캣이 text_jsp.java -> test_jsp.class 과정을 해준다. (자동으로 만들어줌)
text_jsp.java 경로
D:\java0514\workspace.metadata.plugins \org.eclipse.wst.server.core\tmp1\work\Catalina\localhost
톰캣서버에 의해 자동으로 생성된 객체
개발자는 별도의 객체를 선언하지 않고 가져다 사용만 한다.
- out : 본문(<body>)를 가리키는 출력객체 -> JspWriter out
- request : 사용자가 요청한 정보를 관리 -> HttpServletRequest request (차지하는 비율이 큼, 제일 중요)
- response : 요청한 사용자에게 응답 -> HttpServletResponse response
- session : 요청한 사용자를 개발적으로 구분하기 위한 객체 -> HttpSession session
- application : 서버에 대한 정보를 관리하는 객체 -> ServletContext application
- pageContext : JSP, JSTL, EL등 동일한 페이지 내에서 서로 다른 문법과 데이터를 교류할 수 있다. -> PageContext pageContext
request 객체내부
계층구조
1 |
|
form 기초
1) 입력
-
<form></form> : 사용자가 입력한 정보를 서버로 전송하기 위한 양식
-
name : 폼 이름. 웹서버에서 접근
-
id : 폼 아이디. 주로 JavaScript, jQuery에서 사용
-
method : 폼 전송방식. get / post 방식
1
2
3
4
5
6
7
8
9
10
11
12[전송 방식] 1) method="get" 방식 : 사용자가 요청한 정보가 URL 노출 - 생략가능 - test.jsp?서버로전송되는값들 - test.jsp?변수1=값1&변수2=값2&변수3=값3 .. - 값이 그대로 노출되기 때문에 보안이 중요한 사이트는 사용하지 않음. - 예) 검색어 2) method="post" 방식 : 사용자가 요청한 정보가 URL에 노출되지 않고 패키지화 되어서 서버로 전송 - 한글이 깨짐 - 예) 비번, 주민번호, 계좌번호 등
-
action : 사용자가 요청한 정보를 서버가 받아서 처리할 결과페이지
-
enctype : 폼에서 파일을 첨부해서 서버로 전송하고자 할 때
- enctype 속성은 method=”post”인 경우에만 사용할 수 있다.
- 속성 : “multipart/form-data” 추가
06_form기초.jsp -> 부모, 결과입력 폼
주소 : localhost:8090/basicWeb/basic/06_form기초.jsp
1 |
|
2) 결과
-
request 내부 객체 : 사용자가 요청한 정보를 관리하는 객체
- request.getParameter(“”) : 요청한 정보를 개별적으로 가져올 때
1
2
3예) <input type="number" name="kor"> request.getParameter("kor") -> id가 아니라 name값 -> 리턴형은 String
06_formok.jsp -> 자식, 결과출력
결과확인하려면 부모페이지를 run해야함
주소 : localhost:8090/basicWeb/basic/06_formok.jsp?uname=가나다&kor=10&eng=80&mat=50
-> 06_formok.jsp?uname(변수1)=가나다(값1)&kor(변수2)=10(값2)&eng(변수3)=80(값1)&mat(변수4)=50(값4) -> method=”get” 방식!!
주소 :localhost:8090/basicWeb/basic/06_formok.jsp -> 패키지화 되어서 값이 보이지 않음 -> “post” 방식
에러 [HTTP Status 404] : action에 있는 파일명이 다를 때
1 |
|
이렇게 하면 method=”post” 방식일 때는 한글이 깨짐 -> 다시 조합해야함
1) 한글 UTF-8 인코딩
1 |
|
2) 사용자가 입력 요청한 정보를 개별적으로 가져오기
<input type=”text” name=”uname”> 에서 가져오는 것
getParameter() 리턴형이 String이라서 아무리 숫자를 입력해도 String으로 오기 때문에 재가공이 필요하다
1 |
|
계산기 실습을 통한 form 연습
1) 계산기 입력폼 (07_calc.jsp)
form은 여러개 있어도 submit이 있는 form만 전송
1 |
|
2) 계산기 출력 폼 (07_calcok.jsp)
사칙연산+나머지 연산자
1 |
|
테이블에 출력하는 다른 방식
1 |
|
다양한 컨트롤 요소들
1) 입력
1 |
|
2) 입력 결과
1 |
|
request객체에 존재하지 않는 정보를 가져오면 어떤 결과가 나오는지 확인하기.
null값이 반환
<%
out.print(request.getParameter("kor"));
%>
a) name이 동일한 경우
getParameterValues() 은 리턴형이 String[] 1차 String 배열
1 |
|
b) 라디오 버튼
동시에 선택하지 않으려면 name을 동일하게 준다.
대체적으로 value값은 고정값으로 넘긴다.(사용자가 쓰는게 아니니까, 개발자가 설정하는 것)
남자를 클릭하면 성별:M / 여자를 클릭하면 성별:F 로 넘어온다
1 |
|
c) 체크 박스
value값이 Y여서 체크하면 “Y” / 체크하지 않으면 null 값이 넘어온다
체크박스도 대체적으로 value값을 넣는다.
1 |
|
value값이 없는 체크 박스
체크하면 on / 체크하지 않으면 null값이 넘어온다.
1 |
|
d) 목록 상자
출력값은 value값으로 출력되는데, 되도록 선택하는 방식으로 자료를 넘겨야 쓰레기값을 덜 수 있다.
1 |
|
e) hidden 속성
폼 요소지만 본문에 출력되지 않음. value값이 넘어온다.
개발자는 많이 사용한다고 함
1 |
|
f) 파일첨부에 관한 속성
첨부파일 선택하면 파일명이 전송됨.
파일이 전송된 것이 아니라 파일명!이 전송된 것임
첨부된 파일을 가져오려면 다른 방식으로 request객체에 접근해야 한다!!!
request.getParameter(“attach”)는 실제 파일을 가지고 있는 것이 아니라 파일명이 출력된 것이다.
1 |
|