JSP 내부객체
JSP 내부객체란?
- 톰캣서버에 의해 자동으로 생성된 객체
- 내부객체 확인방법 : test_jsp.class/ .java 소스 저장 루트를 통해 원하는 .java파일을 sublime에 복사한 후 코드 확인
1) out |
본문(<body>)를 가리키는 출력객체 JspWriter out |
2) request |
사용자가 요청한 정보를 관리하는 객체 HttpServletRequest request |
3) response |
요청한 사용자에게 응답을 관리하는 객체 HttpServletResponse response |
4) session |
요청한 사용자를 개별적으로 구분하기 위한 객체 HttpSession session |
5) application |
서버에 대한 정보를 관리하는 객체 ServletContext application |
6) pageContext |
JSP, JSTL, EL 등 동일한 페이지 내에서 서로 다른 문법과의 데이터를 교류할 수 있음 PageContext pageContext |
- request interface
Interface HttpServletRequest{} Interface HttpServletRequest extends ServletRequest{} - 부모를 받아오는 extends class HttpServlestRequestWrapper implements HttpServletRequest{} - 클래스가 인터페이스를 부모로 할때 implement HttpServletRequest request =new HttpServlestRequestWrapper() - 다형성 |
객체 object
Sungjuk sj-new Sungjuk()
-> 클래스 : Sungjuk
-> 객체 : new Sungjuk()
-> 참조변수 : sj
-> 사용법 : sj.disp()
test_jsp.class/ .java 소스 저장 경로
D:\java0514\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\basicWeb\org\apache\jsp\basic
https://docs.oracle.com/javaee/7/api/
interface : 추상메소드로만 있는 것 .
추상메소드란 ,선언만 해놓은 몸통 body만 남은거. 함수를 선언만 함 void test();
일반메소드 : void test(){};
인터페이스와 추상클래스로 객체생성할 수 없다.
FORM을 JSP로 전송하기
* 다시 복습하기
Form?
- 사용자가 입력한 정보를 서버로 전송하기 위한 양식
기본 폼
- name : 폼 이름. 서버에서 접근
- id : 폼 아이디. 주로 JavaScript, jQery에서 사용
- method : 폼 전송방식. get | post방식. 생략시 기본은 get방식
- action : 사용자가 요청한 정보를 서버가 받아서 처리할 결과페이지명
- enctype : 폼에서 파일을 첨부해서 서버로 전송하고자 할 때
enctype="multipart/form-data"
1) form 생성하기
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>06_form기초.jsp</title>
</head>
<body>
<h1>* 성적입력 *</h1>
<form name="sungjukfrm" id="sungjukfrm" method="get" action="06_formok.jsp">
이름 : <input type="text" name="uname" id="uname"
size="10" maxlength="10" required>
<!-- required : length가 0인건 액션을 취하지 않는다. 반드시 입력하라는 명령어 -->
<hr>
국어 : <input type="number" name="kor" id="kor"
size="5" min="0" max="100">
<hr>
영어 : <input type="number" name="eng" id="eng"
size="5" min="0" max="100">
<hr>
수학 : <input type="number" name="mat" id="mat"
size="5" min="0" max="100">
<hr>
<input type="submit" value="전송">
<input type="reset" value="취소">
</form>
</body>
</html>
- form name에 action을 "06_formok.jsp" 얘로 줘서 jsp로 전송해서 결과값을 확인한다.
2) "06_formok.jsp" 파일 생성하기
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>06_formok.jsp</title>
</head>
<body>
<h1>* 성적결과 *</h1>
<%
//request 내부 객체
//-> 사용자가 요청한 정보를 관리하는 객체
//request.getParameter("")
//-> 요청한 정보를 개별적으로 가져올때
//-> 예) <input type=text name=kor>
// request.getParameter("kor")
out.print(request.getParameter("uname"));
out.print("<hr>");
out.print(request.getParameter("kor"));
out.print("<hr>");
out.print(request.getParameter("eng"));
out.print("<hr>");
out.print(request.getParameter("mat"));
out.print("<hr>");
%>
</body>
</html>
3) 만든 Form에서 jsp로 전송해서 결과 확인하기
- 404에러가 떴다.
- 그 이유는 action에 준 jsp이름을 잘못입력해서 전송이 실패한것.
- 404에러는 존재하지 않는 파일명을 적었을 때, 발생하는 것이다. 조심하기!

- 정상적으로 오류 수정 후 결과를 출력했다.


계산기 만들기
form여러개여도 submit이 있는 form만 전송가능함.
1) 계산기 form 생성하기
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>07_calc.jsp</title>
</head>
<body>
<h1>* 계산연습 *</h1>
<form name="calcfrm" method="get" action="07_calcok.jsp">
첫번째 수 : <input type="number" name="num1" min="0" max="100" required>
<hr>
연산자 : <input type="text" name="op" size="3" required>
<hr>
두번째 수 : <input type="number" name="num2" min="0" max="100" required>
<hr>
<input type="submit" value="계산">
<input type="reset" value="취소">
</form>
</body>
</html>
2) "07_calcok.jsp" 생성하기
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>07_calcok.jsp</title>
</head>
<body>
<%
int num1=Integer.parseInt(request.getParameter("num1"));
int num2=Integer.parseInt(request.getParameter("num2"));
String op=request.getParameter("op");
int result1=0;
double result2=0.0;
if(op.equals("+")){
result1=num1+num2;
}else if(op.equals("-")){
result1=num1-num2;
}else if(op.equals("*")){
result1=num1*num2;
}else if(op.equals("/")){
result2=(double)num1/num2;
}else if(op.equals("%")){
result1=num1%num2;
}//if end
%>
<table border='1'>
<tr>
<td><%=num1 %></td>
<td><%=op %></td>
<td><%=num2 %></td>
<td>=</td>
<td>
<%
if(op.equals("/")){
out.print(result2);
}else{
out.print(result1);
}
%>
</table>
</body>
</html>
3) 계산기 폼 결과확인하기
- 연산기호 '/'에서 자꾸 값이 소수점이 나오지 않았다. 처음엔 (double)(num1/num2) 로 해놓았더니 3/5=0.0이 계속 나왔다. 결론은 double뒤의 계산식에는 괄호를 치면 안되는 것이다.
- 왜냐, / 기호만 할 시에는 몫만 나오는데 거기서 괄호를 쳐버리면 double로 묶는다하더라도 이미 몫처리가 된 것이기 때문에 소수점이 나오지 않는다 그래서 계산식에 괄호를 빼면, 소수점이 도출된다.


다양한 컨트롤 요소들
1) 컨트롤 요소 form 생성하기
기본 타이핑 상자 | text |
password | |
radio | |
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>08_다양한컨트롤요소들.jsp</title>
</head>
<body>
<h1>다양한컨트롤요소들</h1>
<form action="08_ok.jsp">
아이디 : <input type="text" name="uid">
<hr>
비번 : <input type="password" name="upw">
<hr>
이름 : <input type="text" name="uname">
<hr>
내용 : <textarea rows="5" cols="20" name="content"></textarea>
<hr>
숫자1 : <input type="text" name="num"> <br> <!-- 이름이 같으면 배열로 정렬 -->
숫자2 : <input type="text" name="num"> <br>
숫자3 : <input type="text" name="num"> <br>
<hr>
성별 : <input type="radio" name="gender" value="M"> 남 <!-- radio속성은 한번에 전부다 선택불가능 -->
<input type="radio" name="gender" value="F"> 여
<hr>
약관동의
<input type="checkbox" name="agree" value="y"> 동의함
<input type="checkbox" name="agree" value="n"> 동의안함
<hr>
SMS
<input type="checkbox" name="sms">
<hr>
통신회사 : <select name="telecom">
<option value="sk">SK
<option value="kt">KT
<option value="lg">LG U+
</select>
<!-- hidden : 폼요소지만 본문에 출력은 안되는 요소 -->
<input type="hidden" name="page" value="7">
<!-- <form enctype=""> 속성 추가해야함 -->
<!-- 첨부파일을 보내는 형식은 아직 미완성이다. 폼에 나오는 결과는 파일의 이름만 나온다. -->
<input type="file" name="attach">
<input type="submit" value="전송">
</form>
</body>
</html>
'공부 > JSP' 카테고리의 다른 글
8월26일 - JSP 4 : 성적테이블 (0) | 2019.08.26 |
---|---|
8월22일 - JSP 2 : 기본문법 (배열, 메소드) (0) | 2019.08.22 |
8월21일 - JSP 1 (0) | 2019.08.21 |