문제1.
JSP를 이용해서
한페이지 안에서 올림차순 버튼을 누르면 -> 버튼 바로 밑에 "order by 저렴한 순입니다" 라고 뜸.
내림차순을 버튼을 누르면 -> 마찬가지로 버튼 밑에 "order by 비싼 순입니다"라고 뜸
번호순 버튼을 누르면 -> 버튼밑에 "order by 번호순입니다"라고 뜨게 만들기.
답.
한 페이지 안에서 데이터송신 -> 수신해서
버튼을 누르면 페이지 이동없이 한 페이지 안에서 누른 버튼에 따라, 출력하는 문구가 다르게 하는 코드를 짰다.
복잡한 JSP문법을 사용하는 대신 IF문을 이용했다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %>
<!-- 보내고 받을때 꼭 인코딩해줘야 함. 꼭 필요함. 안그러면 송신시 값이 안맞음. -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="#" method="post">
<input type="submit" name="btn" value="올림차순">
<input type="submit" name="btn" value="내림차순">
<input type="submit" name="btn" value="번호순">
</form>
<br>
<%
String order = request.getParameter("btn");
if("올림차순".equals(order)){
out.println("order by 저렴한순입니다");
}else if("내림차순".equals(order)){
out.println("order by 비싼순입니다");
}else if("번호순".equals(order)){
out.println("order by 번호순입니다");
}else {
out.println("버튼을 눌러주세요");
}%>
</body>
</html>
출력결과
아래는 코딩 리뷰 ---------------------
<% request.setCharacterEncoding("UTF-8"); %>
-> 데이터를 보내고 받을때 꼭 UTF-8로 인코딩해줘야 함. 꼭 필요함.
안 그러면 데이터가 깨져서 아무리 문법이 정확하다고 해도 송신,수신시 값이 안맞음.
<form action="#" method="post">
<input type="submit" name="btn" value="올림차순">
<input type="submit" name="btn" value="내림차순">
<input type="submit" name="btn" value="번호순">
</form>
->form으로 sumit버튼들 다 묶어버리기.
action은 송신처의 파일명을 쓰는 곳이다.
같은 페이지 송신, 수신일 경우, action="#" 혹은 action="" 혹은 action="같은 페이지의 파일명"으로 써준다.
포스트 송신이므로 post라고 써준다.(method="post")
<input type="submit" name="btn" value="번호순">
-> 버튼타입을 만들경우 input type ="submit"으로 설정 (이건 문법으로서 정해진것)
이 버튼의 이름은 "btn"이고, 이 버튼에 띄울 글자는 "번호순"
<-요런 느낌
여기서 변수는 btn임.
String order = request.getParameter("btn");
->btn을 문자열 order로서 전부 받는다는 뜻.
if("올림차순".equals(order)){
out.println("order by 저렴한 순입니다");
}
->만약 올림차순이라는 글자와 btn에서 받은 문자열 order가 같으면
"order by 저렴한 순입니다"를 출력.
다른 else if도 마찬가지 원리.
else {
out.println("버튼을 눌러주세요");
}
-> 그 밖에 아무것도 받은게 없을 경우, 뜨는 "버튼을 입력해주세요"
버튼을 클릭하지 않으면 아무것도 받은게 없는 상태이므로 처음 페이지가 떴을때부터 나오는 문구라고 보면 됨.
문제2.
입력창에 숫자를 입력하고 버튼을 누르면 그 입력치를 받아서 +10을 해서 한 페이지 안에서 출력하기
답.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="#" method="post">
<p><input type="text" name="formBox"></p>
<p><input type="submit" value="송신"></p>
</form>
<%
String box = request.getParameter("formBox");
if(box == null){
out.print("값을 입력해주세요");
}
else if(box != null && box.length() !=0){
int a = Integer.parseInt(box);
out.print("+10한 결과=>" + (a + 10) );
}
else {
out.print("값을 입력해주세요");
}
%>
</body>
</html>
출력결과
포인트는 "request.getParameter("")"로 받은 데이터는 "문자열"이 되어 버리기때문에,
int형의 숫자계산하는 경우는, "int a = Integer.parseInt(문자열의 변수); 의 문법을 써서
문자열 -> int로 변환해야 함.
또 다른 포인트는 문자열을 입력했을때, 안했을때,
송신버튼을 눌렀을때, 안 눌렀을때를 나눠서 생각해 if문을 짜는 것이다.
숫자을 입력하고 -> 송신버튼을 눌렀을때만 생각할것이 아니라,
아무것도 입력 안하고 -> 송신버튼을 눌렀을때,
송신버튼을 누르지도 않았을때도 생각을 해놔야, 보다 에러없는 프로그램을 만들 수 있다.
아래는 코딩 리뷰 ---------------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
->숫자입력이므로 인코딩은 입력안해도 됨.
다만 문자열 입력했을때 에러가 남. (문자를 입력은 논외로 생각하고 코딩함)
<form action="#" method="post">
<p><input type="text" name="formBox"></p>
<p><input type="submit" value="송신"></p>
</form>
->입력창과 송신버튼을 폼으로 묶음.
입력창을 넣을때는 input type="text"를 넣어주고 버튼의 경우는 input type="submit"
입력창의 이름은 formbox ,
버튼은 변수로 사용할 일이 없기때문에 따로 이름을 지정해주는 대신, 버튼위에 쓰여지게될 "송신"문자열을 지정
<- 요런 느낌
String box = request.getParameter("formBox");
->입력창 formbox에 입력된 값을 문자열 box로 받아줌.
if(box == null){
out.print("값을 입력해주세요");
}
-> 박스에 아무것도 입력 안 할 경우, (송신버튼을 안누른 상태) "값을 입력해주세요"가 출력
else if(box != null && box.length() !=0){
int a = Integer.parseInt(box);
out.print("+10한 결과=>" + (a + 10) );
}
->값은 입력했고(box.length() !=0), 송신버튼을 누른경우 (box != null)
문자열 처리된 box를 숫자형 a로 변환, 치환하고,
a에 +10을해서 출력
else {
out.print("값을 입력해주세요");
}
->송신버튼은 눌렀는데, 값은 입력 안한경우,
"값을 입력해주세요"가 출력.
・옵션 문제로서, 미입력으로 submit를 클릭했을 때도 에러가 되므로, if문에 조건을 추가해 대응한다.
미입력은 문자수가 0이 되므로, 「length()」메소드를 사용해 문자수가 0인가를 조사하면 좋다.
※ null과의 비교에 대해서는, SQL에서는 「where 열명 is null」라고 기재한다. Java는 「box == null」이라고 한다.
변수 box의 내용과 비교할 때는 「box.equals(문자열 등)」라고 기재한다. 이 세 가지 패턴을 혼동하지 않도록 합시다.
<form action="?????" method="post">
<p><input type="text" name="formBox"></p>
<p><input type="submit" value="제출"></p>
</form>
<%
String box = request.getParameter("?????");
if(????? == null){
box = "?????"; // 더하기에 무해한 값을 문자열로 설정합니다.
}
?????????? // 여기서 문자열에서 숫자로 변환
out.print("+10 결과 =>" + (????? + 10) ); // 50을 입력하면 60이 표시됩니다.
%>
'코딩 > JSP' 카테고리의 다른 글
session.setattribute request.setattribute 차이,다른점 (0) | 2021.11.25 |
---|---|
JDBC 자바빈즈를 사용해 데이터베이스 호출, 정렬, 검색기능 붙이기 (0) | 2021.11.16 |
JSP] GET으로 데이터를 보낼경우 문법과 GET의 인코딩, 글자깨짐 현상 해결법 (0) | 2021.11.09 |
JSP의 정의부터 설정, 기본적인 문법으로 간단한 퀴즈 프로그램 만들기 (0) | 2021.11.02 |
댓글