JSP Servlet 기초(2)

이번엔 JSP 에서 form 태그를 이용해 데이터를 넣고 그 데이터를 java로  

가져가 보는것을 해보겠습니다


먼저 JSP Servlet 기초 (1) 에서 처럼 패키지와 서블릿 , jsp파일을 

만들어줍니다 


저는 Form.java 와 form.jsp 로 만들었습니다.

다음 form.jsp 파일에 body 태그를

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<body>
 
    <form action="Form" method="post">
        이름 :<input type="text" name="name" size="10"><br>
        아이디 :<input type="text" name="id" size="10"><br>
        비밀번호 :<input type="password" name="pw" size="10"><br>
        
        취미 :<input type="checkbox" name="hobby" value="read">독서
        <input type="checkbox" name="hobby" value="cook">요리
        <input type="checkbox" name="hobby" value="run">조깅
        <input type="checkbox" name="hobby" value="swim">수영
        <input type="checkbox" name="hobby" value="sleep">취침<br>
        
        <input type="radio" name="major" value="kor">국어
        <input type="radio" name="major" value="eng">영어
        <input type="radio" name="major" value="math">수학
        <input type="radio" name="major" value="des">디자인
        
        <input type="submit" value="전송">
    </form>
 
</body>
cs


위와같이 만들어 줍니다. 먼저 form 태그안의 아이디와 비밀번호를 보면


아이디 :<input type="text" name="id" size="10">

비밀번호 :<input type="password" name="pw" size="10">


input 태그는 보통 화면에서 글씨를 입력해줄수 있게 해줍니다. 

type을 text로 하게되면 그냥 텍스를 입력할수 있고 password를 하게되면 

비밀번호 입력시 보안을위해 아래와 같이 보이지 않게 됩니다.


다음 name 은 각각의 input 태그의 이름을 정한다고 생각하면 좋습니다.


취미 :<input type="checkbox" name="hobby" value="read">독서
        <input type="checkbox" name="hobby" value="cook">요리
        <input type="checkbox" name="hobby" value="run">조깅
        <input type="checkbox" name="hobby" value="swim">수영
        <input type="checkbox" name="hobby" value="sleep">취침

취미에서는 input 타입을 checkbox 로하여 체크박스를 만들어줍니다.
value 는 체크박스 클릭시 입력되는 데이터입니다.
체크박스는 여러개를 클릭할수 있습니다.

<input type="radio" name="major" value="kor">국어
        <input type="radio" name="major" value="eng">영어
        <input type="radio" name="major" value="math">수학
        <input type="radio" name="major" value="des">디자인

다음 input 타입을 type="radio" 하게되면 라디오 버튼이 생성됩니다.
라디오 버튼은 하나만 체크 가능합니다.

다만들어진 jsp 화면을 보게되면

위와 같이 만들어집니다.


이름과 아이디 비밀번호와 체크박스 라디오 버튼을 입력하고 전송을

하면 <form action="Form" method="post"> 에따라 post 방식으로 Form.java

로 데이터들이 보내지게 됩니다.


이제 Form.java 를보겠습니다.


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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package com.jsp.ex;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
@WebServlet("/Form")
public class Form extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public Form() {
        super();
    }
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        actionDo(request, response);
    }
 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        actionDo(request, response);
    }
    
    protected void actionDo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        request.setCharacterEncoding("UTF-8");
        
        String name = request.getParameter("name");
        String id = request.getParameter("id");
        String pw = request.getParameter("pw");
        
        String[] hobbys = request.getParameterValues("hobby");
        String major = request.getParameter("major");
        
        response.setContentType("text/html; charset=euc-kr");
        PrintWriter writer = response.getWriter();
        
        writer.println("<html>");
        writer.println("<head>");
        writer.println("</head>");
        writer.println("<body>");
        writer.println("이름 : " + name + "<br/>");
        writer.println("아이디 : " + id + "<br/>");
        writer.println("비밀번호 : " + pw + "<br/>");
        writer.println("취미 : " + Arrays.toString(hobbys) + "<br/>");
        writer.println("전공 : " + major + "<br/>");
        writer.println("</body>");
        writer.println("<html>");
        
        writer.close();
    }
 
}
 
cs


Form.java 를 위처럼 만들어 줍니다.

중간에 


위 처럼 오류가 나는부분은 Ctrl+Shift +O 를 이용해

 import 해주어야 합니다. 


 doGet 메소드와 doPost메소드안에 

actionDo(request, response)를 넣어주게 되면 jsp 에서 데이터가 

get방식으로 오던 post방식으로 오던 actionDo 메소드를 실행시켜줍니다.

29line 에 HttpServletRequest request, HttpServletResponse responsed 에서

HttpServletRequest 는 요청처리객체, HttpServletResponse 는 응답처리 객체입니다

데이터를 요청하고 응답할때 사용됩니다.

31line 에 request.setCharacterEncoding("UTF-8"); 는 한글처리에 사용되며

화면에 한글이 깨지지 않게 해줍니다.


String name = request.getParameter("name");
String id = request.getParameter("id");

은 jsp input 태그안에 name="name",name="id" 값들을 요청하는 것입니다.
getParameter를 이용해 데이터를 가저올수있고getParameter를 이용해

데이터를 가저오면 반환값이 String이기 때문에
String name 와 같이 데이터를 다시String형태로 저장해야합니다.

String[] hobbys = request.getParameterValues("hobby");
에서는 jsp 에서 취미 체크박스는 여러개를 체크 할수 있기때문에
String[] 을 사용하여 배열 형태로 값을 가저옵니다 또한 반환되어
오는 데이터들이 여러개 이기때문에 getParameterValues 로
값을 가져옵니다.

40,41line 은 java파일에서는 jsp 파일처럼 화면에 데이터를 출력해줄수 없기 때문에
웹브라우저에 값을 출력하기 위한 스트림으로 사용됩니다.
사용시 43line 처럼 사용할수있습니다.

50line에 Arrays.toString(hobbys) 는 배열로 받아온 hobbys 를
toString 를이용해 문자열의 형태로 반환할수있게해줍니다.

이제 jsp를 실행시키면


위처럼 데이터를 넣어주고 전송을하게 되면

아래와 같이 내가 입력한 데이터들의 값을 확인할수 있습니다.




'JSP' 카테고리의 다른 글

JSP Servlet 기초(6) 쿠키생성  (2) 2018.01.29
JSP Servlet 기초(5) response  (0) 2018.01.29
JSP Servlet 기초(4) request + tag  (2) 2018.01.29
JSP Servlet 기초(3) 태그  (0) 2018.01.29
JSP Servlet 기초(1)  (0) 2018.01.29

댓글

Designed by JB FACTORY