본문 바로가기

공부/JSP

8월23일 - JSP 3 : 기본문법

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에서 전송하기

 

jsp로 결과확인하기

 


계산기 만들기

 

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