본문 바로가기

JSP

JSP/1일차/

# 공부 블로그로, 틀린 부분이 있을 수 있습니다. 

 

 

 

화면에 출력되는 myInfo.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>정보 입력</title>
</head>
<body>
 
<!--   
    html 은 spacebar 를 여러 번 눌러도 한 칸 밖에 떨어지지 않고 enter 를 여러번 눌러도 줄이 변경되지 않는다.
    2칸 이상 띄우려면 &nbsp;를 띄울 칸의 개수만큼 입력하고 줄을 변경하려면 <br> 를 사용하면 된다.
 
    현재 페이지에 입력한 데이터를 특정 페이지로 전송하려면 전송할 데이터를 입력하는 코드를 <form> ~ </form> 태그 내부에 작성한다.
    action 속성에는 전송(submit) 버튼이 클릭되면 form 에 입력한 데이터가 전송될 페이지 이름을 적는다. => "?"는 현재 페이지를 의미한다.
    method 속성에는 action 페이지로 데이터가 전송될 때 정보가 url 창에 표시되는 여부를 지정한다.
    => "get" 이 기본값이며 전송되는 데이터가 url 창에 표시되고, "post" 로 변경하면 전송되는 정보가 url 창에 표시되지 않니다.
-->
 
<form action="myInfoOk.jsp" method="post">
 
    <label>이&nbsp;&nbsp;름 : <input type="text" name = "name"></label><br>
    <!--type="text" name = ""  => 필수 정보-->>
    <label>아이디 : <input type="text" name = "id"></label><br>
    <!-- type="password"일 경우 한글이 불가능하다. -->
    <label>비밀번호 : <input type="password" name = "password"></label><br> 
    <label>나이 : <input type="text" name = "age"></label><br>
    <!-- 
    radio 와 checkbox 는 같은 그룹끼리는 반드시 같은 이름의 name 속성을 지정해야 한다. 그래야 여러 개 중 한 개만 선택 가능해짐.
    radio 와 checkbox 는 컨트롤 자체를 브라우저에 표시하는 기능밖에 없기 때문에 다음 페이지로 넘겨줄 데이터를 value 속성을 사용해서 넣어줘야 한다.      
    => value 속성을 사용하지 않을 경우 "on" 이 넘어간다. -> boolean 처리도 가능함
     -->
     <fieldset style="width: 120px">
    <legend>성별</legend>
    <input type= "radio" name = "gender" value= "남자">남자
    <input type= "radio" name= "gender" value= "여자">여자        
    </fieldset><br>
    <input type="submit" value = "회원가입">
     <fieldset style="width: 280px">
    <legend>취미 </legend>
    <input type= "checkbox" name = "hobbies" value= "늦잠자기">늦잠자기
    <input type= "checkbox" name= "hobbies" value= "지각하기">지각하기    
    <input type= "checkbox" name= "hobbies" value= "게임하기">게임하기    
    </fieldset><br>
    <input type="submit" value = "회원가입">
    
    
</form>
 
</body>
</html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cs

 

데이터를 받는 myInfoOk.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>myInfo.jsp 에서 전송된 데이터 확인하기</title>
 
<style type="text/css">
 
    a:link { color: #579B6B; text-decoration: none; }  /* 한 번도 방문하지 않은 하이퍼링크 */ 
    a:visited {color: #579B6B; text-decoration: none;} /* 한 번 이상 방문한 하이퍼링크 */
    a:hover {color: black; text-decoration: none;} /* 하이퍼링크 위에 마우스를 올렸을 때 */
    a:active {color: red; text-decoration: none;} /* 하이퍼링크를 마우스로 누르고 있을 때 */
 
</style>
 
</head>
<body>
 
myInfoOk.jsp 입니다.<br>
<!-- myInfo.jsp 에서 전송된 데이터를 받는다. -->
 
<%  // <= jsp 
// form 에 입력된 데이터가 post 방식으로 전송될 때 한글이 깨지는 현상을 방지한다.
// 한글 깨짐을 방지하려면 request.setCharacterEncoding("UTF-8")를 최초의 request.getParameter() 가 실행되기 전에 코딩해야 한다.
    request.setCharacterEncoding("UTF-8");
 
// tomcat server 7.0 이전 버전은 get 방식을 사용할 때도 한글이 깨진다.
// get 방식을 사용하는데 한글이 깨질 경우 Servers 폴더의 server.xml 파일을 열고 64번 줄의 Connector 태그에 URIEncoding="UTF-8" 넣어줘야함.
// 속성을 추가하면 get 방식을 사용할 때 한글이 깨지지 않는다. => 서버를 설치하고 딱 1번만 하면 된다.
    
// request.getParameter("name 속성값") : 이전 페이지에서 넘어오는 데이터를 받는다 => 넘어오는 데이터는 무조건 문자열로 넘어온다.
    String name = request.getParameter("name");
    out.println(name + " 님 어서오세요.<br>");
    String id = request.getParameter("id");
    out.println(name + "(" + id + ")" + " 님 어서오세요.<br>");
    String password = request.getParameter("password");
    out.println(name + "("+ id + ")" + " 비밀번호는 " + password + " 입니다.<br>" );
    
    
    try {
    int age = Integer.parseInt(request.getParameter("age"));
    out.println(name + " 님은 " + age + "살 입니다.<br>" );
    out.println(name + " 님은 내년에" + (age + 1+ "살 입니다.<br>" );        
    } catch(NumberFormatException e) {
        out.println("잘못 입력하셨습니다. 숫자만 입력하세요.<br>");
        out.println("<script>");
        out.println("alert('잘못된 나이가 입력되었습니다.')");
        out.println("</script>");
    }
    String gender = request.getParameter("gender");
    out.println(name + "님은 " + gender + " 입니다.<br>" );
    // boolean gender = Boolean.parseBoolean(request.getParameter("gender")); => boolean 으로 처리할 경우.
    //out.println(name + "님은" + (gender ? "남자" : "여자") + "입니다.<br>");
    // checkbox 는 여러 항목을  선택할 수 있는데 getParameter() 메소드를 이용해서 받으면 맨 처음 선택한 값 한 개만 받을 수 있다.
    // String hobbies = request.getParameter("hobbies");
    // checkbox 만!! 이걸로 받는다.
    // checkbox 에서 넘어오는 데이터를 받을 때는 넘어오는 항목이 여러개 일 수 있기 때문에 getParameterValues() 메소드로 받아서 배열에 저장해서 처리해야 한다.
    
 
    String[] hobbies = request.getParameterValues("hobbies");     
    out.println(name + " 님의 취미는 " );
    try{
        for(int i = 0; i < hobbies.length; i++) {
            if(i > 0) {
                out.println(" , ");
            }
            out.println(hobbies[i]);
        }
        out.println("입니다.<br>");
    }catch(NullPointerException e){
        out.println("글쎄여어ㅓ,,, 저는...공부 밖에 안해서요...<br>");
    }    
%>
<a href="myInfo.jsp">돌아가기</a>
 
</body>
</html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cs

 

Chrome 출력 화면