jsp02

제로·2022년 11월 20일
0

JSP

목록 보기
2/30

요청객체 request

  1. jsp는 servelet이라는 java로 감싸는 코드이기에 객체의 참조변수를 활용하는 경우가 많다.
  2. request : HttpServeletRequest의 참조 변수의 내용이다
  3. 요청객체는 요청값을 처리할 때 주로 사용된다.
    1) 요청값 : client를 통해서 server로 전송된 데이터
    - query string(key=value), 쿠키값, 기타 브라우저에서 서버로 전달 header 등
    2) 기본 요청값 처리
    - request.getParameter("요청값(name)") ==> name을 key로 value 값을 문자열로 가져온다
    - 값이 없으면 null(객체 메모리 없음)
  4. 요청값을 변수 할당
    요청값 : ?name=사과&price=3000&cnt=2
    변수를 지정해서 할당하면 기본 문자열로 할당된다
  5. 요청값이 없을 때 defualt 데이터 처리
    1) if 조건을 통해서 null인 경우 문자열="", 숫자형="0"으로 처리
    2) 문자열 형식으로 된 숫자형 문자열을 정수로 변환한다. 입력없이 submit을 누르면 데이터가 넘어갈 때 null이 아니고 ""으로 처리되기에 Integer.parseInt("") 에러가 발생한다. 자바는 NumberFormatException 발생해서 수행이 중단된다. (js에서는 parseInt("")==> NaN으로 수행은 계속된다)
<%
 	String sname=request.getParameter("sname");
 	if(sname==null) sname="없음";
 	String kor=request.getParameter("kor");
 	if(kor==null || kor.equals("")) kor="0";
 	String eng=request.getParameter("eng");
 	if(eng==null || eng.equals("")) eng="0";
 	String math=request.getParameter("math");
 	if(math==null || math.equals("")) math="0";
    	int korInt = Integer.parseInt(kor);
 	int engInt = Integer.parseInt(eng);
 	int mathInt = Integer.parseInt(math);
 	int tot=korInt+engInt+mathInt;
 
 %>
 <table>
 <tr><th>이름</th><th>국어</th><th>영어</th><th>수학</th><th>총점</th></tr>
 <tr><td><%=sname %></td><td><%=kor %></td><td><%=eng %></td><td><%=math %></td><td><%=tot %></td></tr>
 
 
 </table>	
    

form과 request

  1. 요청값 형식
    페이지명?요청키=요청값&요청키=요청값...
  2. 숫자형 데이터 요청값 처리
    1) default 변수 선언
    int num=0;
    2) 요청값 설정
    String numS = request.getParameter("num01");
    3) 해당 요청 데이터가 있을 때, 형변환 처리
    if(numS!=null) num=Integer.pareInt("numS");
  3. 함수형 처리
int chInt(String req){
	int num = 0;
    // 가져온 값이 null이 아니거나 공백이 아닐 때 숫자로 형변환
	if(req!=null || !req.equals("")) num=Integer.parseInt(req);
	return num;
}

int num01 = chInt(request.getParameter("num01"));	
int num02 = chInt(request.getParameter("num02"));	
<form action="페이지명">
		<input name="요청키" value="요청값">
		<input type="submit">
	submit 버튼을 클릭시, 클라이언트는 서버로 위 url 형식을 전송하고 
	서버에서 request.getParameter("요청키") : 요청값 을 받는다.
    
    
ex) 
<form> jsp파일에서 action을 설정하지 않으면 현재 페이지에서 실행된다
	이름 : <input type="text" name="name"><br>
	나이 : <input type="text" name="age"><br>
	사는 곳 : <input type="text" name="loc"><br>
	<input type="submit">
	</form>
	
	<%
	String name=request.getParameter("name");
	if(name==null) name=""; // 데이터를 입력하지 않았을 때 사용자에게 보여주는 것
	String age=request.getParameter("age");
	if(age==null) age="0";
	String loc=request.getParameter("loc");
	if(loc==null) loc="";
	%>
	<table>
	<tr><th>이름</th><th>나이</th><th>사는곳</th></tr>
	<tr><td><%=name %></td><td><%=age %></td><td><%=loc %></td></tr>
	</table>


ex) 영화 티켓 계산

<form>
 영화명 : <input type="text" name="mname">
 가격 : <select name="price">
		<option value="10000">일반(10000)</option>
		<option value="13000">3D(13000)</option>
		<option value="17000">4D(17000)</option>
</select> 

관람인원 : <select name="cnt">
	<%for (int cnt=1;cnt<=10;cnt++){%>  // 1~10까지 option으로 넣기
	<option><%=cnt %></option>
	<%} %>
	</select>
	<input type="submit" value="등록">
 </form>

 <%
 String mname= request.getParameter("mname");
 
 // 요청값이 없는 초기화면에는 출력 내용이 보이지 않게 처리 null이 아닐때만 보이게 처리
 if(mname!=null){
	 // 물건가격 ==>
	 String price= request.getParameter("price");
	 if(price==null) price="0";
	 String cnt= request.getParameter("cnt");
	 if(cnt==null) cnt="0";	 
	 // 자바에서는 자동형변환이 안되기 때문에
     // 가져온 price, cnt를 숫자로 형변환 후, 연산처리(*) tot에 할당
	 int tot =Integer.parseInt(price)*Integer.parseInt(cnt);
 %>
<table>
<tr><th>영화명</th><th>티켓 총 비용</th></tr>
<tr><td><%=mname %></td><td><%=tot %></td></tr>
</table>
<%} %>

profile
아자아자 화이팅

0개의 댓글