반응형

˙ 포매팅 태그 라이브러리 종류

분류 태그 설명
포매팅 fmt:timeZone 둘 다 지정한 국가의 시간을 지정하는 태그
단, <fmt:timeZone>은 태그를 열고 닫는 영역 안에서만 적용됨
fmt:setTimeZone
fmt:formatNumber 표시할 숫자의 형식을 지정
fmt:formatDate 지정한 형식의 날짜를 표시

 

 

 

˙<formatNumber> 태그의 여러가지 속성

속성 설명
value 출력될 숫자를 지정
type 출력된 타입을 지정(percent → % , number → 숫자,
currency → 통화형식)
dateStyle 날짜의 출력 형식을 지정 full, long, medium, short 등
groupingUsed 콤마( , ) 등 기호로 구분 여부를 지정 속성이 true이면
50000 → 50,000으로 표시되고 기본값은 true
currencyCode 통화 코드를 지정 ( 한국 원화는 KRW)
currenctSimbol 통화를 표시할 때 사용할 기호를 표시
var <formatNumber> 태그 결과를 저장할 변수의 이름 지정
scope 변수의 접근 범위를 지정
pattern 숫자가 출력될 양식을 지정 (자바의 DecimalFormat 클래스에 정의된 형식을 따름)

 

 

 

˙<formatDate> 태그의 여러가지 속성

속성 설명
value 포맷될 날짜를 지정
type 포매팅할 날짜를 지정 date인 경우 날짜만, time인 경우 시간만,
both인 경우는 모두 지정
dateStyle 날짜의 출력 형식을 지정
DateFormat클래스의 full, long, medium, short 등이
저장되어 있음
timeStyle 시간 출력 형식을 지정
자바 클래스 DateFormat 에 정의된 형식을 사용
pattern 직접 출력 형식을 지정
자바 클래스 SimpleDateFormat에 지정된 패턴을 사용
timeZone 특정 나라 시간대로 시간을 설정

 

※ 포매팅 태그 라이브러리 예제가 궁금하다면 ?

 

https://maxtime1004.tistory.com/74

 

[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 40 <%@ page language="java" contentType="text/html; charset=UTF-8"     import="jav..

maxtime1004.tistory.com

 

반응형
반응형

▶ 사전 준비 

 

① jstl jar 파일을 WEB-INF > lib 안에 넣어줍니다.

 

② 코어 태그 라이브러리를 사용하려면 반드시 JSP 페이지 상단에 다음과 같이 taglib 디렉티브 태그를 추가해서 톰캣에게 알려주어야 합니다.

 

1
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
cs

 

 

 

▶ 코어 태그 라이브러리 기능 

 

기능 태그 설명
변수지원 c:set JSP 페이지에서 변수를 지정합니다.
c:remove 지정된 변수를 제거합니다.
흐름제어 c:if 조건문을 사용합니다.
c:choose switch문을 사용합니다.
c:forEach 반복문을 사용합니다.
c:forTokens 구분자로 분리된 각각의 토큰을 처리할 때 사용합니다.
URL 처리 c:import URL을 이용해 다른 자원을 JSP 페이지에 추가합니다.
c:redirect response.sendRedirect( ) 기능을 수행합니다.
c:url 요청 매개변수로부터 URL을 생성합니다.
기타 태그 c:catch 예외 처리에 사용합니다.
c:out JspWriter에 내용을 처리한 후 출력합니다.

 

˙ <c:set> 태그를 이용한 변수 선언 형식

 

1
<c:set var="변수 이름" value="변수값" [scope="scope 속성 중 하나"] />
cs

 

 

 

▶ 예제 - 변수 선언 후 값 출력해보기 

 

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
    request.setCharacterEncoding("utf-8");
%>
<c:set var="id" value="hong" scope="page" />
<c:set var="pwd" value="1234" scope="page" />
<c:set var="name" value="${'홍길동'}" scope="page" />
<c:set var="age" value="${22}" scope="page" />
<c:set var="height" value="${177}" scope="page" />
<!DOCTYPE html>
<html>
<head>
<style>
th,td{
    padding : 10px;
}
th{
    background-color: yellow;
}
</style>
<meta charset="UTF-8">
<title>회원 정보 출력창</title>
</head>
<body>
<table border=1>
    <tr>
        <th>아이디</th>
        <th>비밀번호</th>
        <th>이름</th>
        <th>나이</th>
        <th></th>
    </tr>
    <tr>
        <td>${id}</td>
        <td>${pwd}</td>
        <td>${name}</td>
        <td>${age}</td>
        <td>${height}</td>
    </tr>
 
</table>
 
</body>
</html>
cs
 

 

 

반응형
반응형

· 유즈빈의 사용형식

 

1
<jsp:useBean id="빈 이름" class="패키지 이름을 포함한 자바 빈 클래스 [scope="접근범위"]/>
cs

 

id는 JSP 페이지에서 자바 빈 객체에 접근할 때 사용할 이름을 의미합니다.

class는 패키지 이름을 포함한 자바 빈 이름을 의미합니다.

scope는 자바 빈에 대한 접근 범위를 지정하는 역할을 합니다. (page, reqeust, session, application을 가지며 기본값은 page)

 

 

 

테이블 생성

 

1
2
3
4
5
6
7
create table t_member(
    id varchar2(10primary key,
    pwd varchar2(10),
    name varchar2(50),
    email varchar2(50),
    joinDate date default sysdate
);
cs

 

 

※ 커넥션 풀 연결방법을 알고싶다면?

maxtime1004.tistory.com/57

 

[JSP] 커넥션풀(Connection Pool) 데이터베이스 연동하기

▶ 커넥션풀(ConnectionPool) 기존 데이터베이스 연동 방법은 애플리케이션에서 데이터베이스에 연결하는 과정에서 시간이 많이 걸리는데, 이 문제를 해결하기 위해 나온 방법이 커넥션풀(ConnectionPo

maxtime1004.tistory.com

 

 

 

memberForm.html

 

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!DOCTYPE html>
<html>
<head>
<style>
h1{
    text-align: center;
}
table{
    text-align: center;
}
.td1{
    width: 200px;
}
.td2{
    width: 400px;
}
p{
    text-align: right;
}
 
</style>
<meta charset="UTF-8">
<title>회원 가입창</title>
</head>
<body>
<form method="post" action="member.jsp">
    <h1>회원 가입창</h1>
    <table>
    <tr>
        <td class="td1">
            <p>아이디</p>
        </td>
        <td class="td2">
            <input type="text" name="id">
        </td>
    </tr>
    
    <tr>
        <td class="td1">
            <p>비밀번호</p>
        </td>
        <td class="td2">
            <input type="password" name="pwd">
        </td>
    </tr>
    
    <tr>
        <td class="td1">
            <p>이름</p>
        </td>
        <td class="td2">
            <input type="text" name="name">
        </td>
    </tr>
    
    <tr>
        <td class="td1">
            <p>이메일</p>
        </td>
        <td class="td2">
            <input type="text" name="email">
        </td>
    </tr>
    
    <tr>
        <td class="td1">
            <p>&nbsp;</p>
        </td>
        <td class="td2">
            <input type="submit" value="가입하기">
            <input type="reset" value="다시입력">
        </td>
    </tr>
    
    </table>
 
 
</form>
 
</body>
</html>
cs

 

아이디, 비밀번호, 이름, 이메일을 입력하고 가입하기 버튼을 클릭하면 member.jsp로 파라미터를 전송합니다.

 

 

 

member.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<%@ page language="java" contentType="text/html; charset=UTF-8"
    import="java.util.*, sec01.ex01.*" pageEncoding="UTF-8"%>
<%
    request.setCharacterEncoding("UTF-8");
%>
 
<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page" />
 
<%
    String id = request.getParameter("id");
    String pwd = request.getParameter("pwd");
    String name = request.getParameter("name");
    String email = request.getParameter("email");
    
    m.setId(id);
    m.setPwd(pwd);
    m.setName(name);
    m.setEmail(email);
    
    MemberDAO memberDAO = new MemberDAO();
    
    memberDAO.addMember(m);
    List memberList = memberDAO.listMembers();
    
%>
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
table{
    border : 1px solid black;
    text-align: center;
}
tr{
    text-align: center;
    padding: 2px;
}
.tr1{
    background-color: yellow;
}
td{
    width: 100px;
}
p{
    text-align: center;
}
 
</style>
<meta charset="UTF-8">
<title>회원 목록창</title>
</head>
<body>
<table border="1">
    <tr class="tr1">
        <td>아이디</td>
        <td>비밀번호</td>
        <td>이름</td>
        <td>이메일</td>
        <td>가입일</td>
    
    </tr>
    <%
        if(memberList.size()==0){
            
    %>
    <tr>
        <td colspan="5">등록된 회원이 없습니다.</td>
    </tr>
    <% 
        }else{
            for(int i=0; i<memberList.size(); i++){
                MemberBean bean = (MemberBean) memberList.get(i);
    %>
            <tr>
                <td><%=bean.getId() %></td>
                <td><%=bean.getPwd() %></td>
                <td><%=bean.getName() %></td>
                <td><%=bean.getEmail() %></td>
                <td><%=bean.getJoinDate() %></td>
            </tr>
            
    
    <%        
            }
        }
    %>
</table>
 
</body>
</html>
cs

 

useBean의 아이디를 m으로 설정하고 sec01 > ex01 > MemberBean 경로에 있다고 class를 지정해줍니다.

파라미터를 변수에 세팅하고 useBean에도 세팅해줍니다.

그리고 memberDAO.addmember로 이동합니다.

 

 

 

④ memberDAO.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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package sec01.ex01;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
 
public class MemberDAO {
    private Connection con;
    private PreparedStatement pstmt;
    private DataSource dataFactory;
 
    public MemberDAO() {
        try {
            Context ctx = new InitialContext();
            Context envContext = (Context) ctx.lookup("java:/comp/env");
            dataFactory = (DataSource) envContext.lookup("jdbc/oracle");
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public List listMembers() {
        List list = new ArrayList();
        try {
            con = dataFactory.getConnection();
            String query = "select * from t_member order by joinDate desc ";
            System.out.println("prepareStatment: " + query);
            pstmt = con.prepareStatement(query);
            ResultSet rs = pstmt.executeQuery();
            while(rs.next()) {
                String id = rs.getString("id");
                String pwd = rs.getString("pwd");
                String name = rs.getString("name");
                String email = rs.getString("email");
                Date joinDate = rs.getDate("joinDate");
                
                MemberBean vo = new MemberBean();
                vo.setId(id);
                vo.setPwd(pwd);
                vo.setName(name);
                vo.setEmail(email);
                vo.setJoinDate(joinDate);
                list.add(vo);
            }
            rs.close();
            pstmt.close();
            con.close();
        }catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }
    public void addMember(MemberBean memberBean) {
        try {
            Connection con = dataFactory.getConnection();
            
            String id = memberBean.getId();
            String pwd = memberBean.getPwd();
            String name = memberBean.getName();
            String email = memberBean.getEmail();
            
            String query = "insert into t_member";
            query += "(id, pwd, name, email)";
            query += " values(?,?,?,?)";
            System.out.println("prepareStatment : " + query);
            pstmt = con.prepareStatement(query);
            pstmt.setString(1, id);
            pstmt.setString(2, pwd);
            pstmt.setString(3, name);
            pstmt.setString(4, email);
            
            pstmt.executeUpdate();
            pstmt.close();
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}
 
cs

 

addmember 메소드를 통해 DB에 정보를 추가합니다.

다시 member.jsp로 돌아가 다시 dao의 listMembers 메소드를 통해 학생의 정보들을 조회하여 list로 return 합니다.

최종적으로 member.jsp에서 학생 list를 출력합니다.

 

 

만약 학생이 한명도 없다면 다음과 같은 문구가 뜨게 됩니다.

 

반응형
반응형

서블릿에서 다른 서블릿으로 포워딩 할 때 RequestDispatcher를 이용하는 방법이 있지만,

포워드 액션 태그를 사용하면 자바코드 없이도 포워딩이 가능합니다.

또한 포워딩 시 다른 서블릿이나 JSP로 값을 전달할 수 도 있습니다.

 

 

 

˙ 포워드 액션 태그 형식

 

1
2
3
<jsp:forward page="포워딩할 JSP 페이지">
        ...
</jsp:forward>
cs

 

 

 

① login.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
<%@ 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>로그인창</title>
</head>
<body>
<%
    String msg = request.getParameter("msg");
    if(msg != null){
%>
        <h1><%=msg %></h1>
<%
    }
%>
    <form action="result.jsp" method="post">
    아이디 : <input type="text" name="userID"><br>
    비밀번호 : <input type="password" name="userPw"><br>
    <input type="submit" value="로그인">
    <input type="reset" value="다시 입력">
    </form>
</body>
</html>
cs

 

form 태그를 통해 로그인 버튼을 클릭하면 result.jsp로 파라미터가 전송됩니다.

 

 

 

② result.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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    request.setCharacterEncoding("utf-8");
%>
<%!
    String msg = "아이디와 비밀번호 모두 입력해 주세요.";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과창</title>
</head>
<body>
<%
String userID = request.getParameter("userID");
String userPw = request.getParameter("userPw");
 
if(userID.length()==0 || userPw.length() == 0){
%>
    <jsp:forward page="login.jsp">
    <jsp:param name="msg" value="<%=msg %>"/>
    </jsp:forward>
<%    
}else{
%>
    <script type="text/javascript">
    alert("로그인 되었습니다.");
    location.href="login.jsp";
    </script>
<%     
}
 
%>
 
</body>
</html>
cs

 

파라미터인 userID의 길이가 0일 때 또는 userPW 길이가 0일때,

즉 아이디와 비밀번호 둘 중 하나라도 입력되지 않았을 때는 forward 태그를 통해 파라미터인 msg가 전달됩니다. 

파라미터를 전달받은 login.jsp 에서는 해당 파라미터인 msg를 출력합니다.

 

 

 

 

아이디와 비밀번호를 모두 입력한 후 로그인 버튼을누르면 alert창이 뜨고 다시 처음 화면으로 돌아옵니다.

 

 

반응형
반응형

JSP의 여러가지 액션 태그 

 

이름 형식 설명
인클루드 액션 태그 jsp:include 이미 있는 JSP를 현재 JSP에 포함하는 태그
포워드 액션 태그 jsp:forward 서블릿에서 RequestDispatcher 클래스의 포워딩 기능을 대신하는 태그
유즈빈 액션 태그 jsp:useBean 객체를 생성하기 위한 new 연산자를 대신하는 태그
셋프로퍼티 액션 태그 jsp:setProperty setter를 대신하는 태그
겟프로퍼티 액션 태그 jsp:getProperty getter를 대신하는 태그

 

 

 

▶ 인클루드 액션 태그 사용하기 

 

˙ 인클루드 액션 태그 형식

 

1
2
3
<jsp:include page="jsp페이지" flush="true 또는 false">
            ...
</jsp:include>
cs

 

 

▶ 인클루드 액션 태그 VS 인클루드 디렉티브 태그 

 

항목 인클루드 액션 태그 인클루드 디렉티브 태그
기능 JSP 레이아웃 모듈화 JSP 레이아웃 모듈화
처리 시간 요청 시간에 처리 JSP를 자바 코드로 변환 시 처리
데이터 처리 방법 param 액션 태그를 이용해 동적 처리 가능 정적 처리만 가능
포함된 JSP
자바 파일 변환 여부
포함되는 JSP가 각각 자바 파일로 생성 포함되는 JSP가 포함하는 JSP에 합쳐져
자바 파일로 생성

 

※ 인클루드 디렉티브 태그가 궁금하다면?

maxtime1004.tistory.com/66

 

[JSP] 인클루드 디렉티브 태그(include directive tag) 사용하기

▶ 인클루드 디렉티브 태그 ( Include Directive Tag) → 여러 JSP 페이지에서 사용되는 공통 JSP 페이지를 만든 후 다른 JSP 페이지에서 공통 JSP 페이지를 포함시켜 사용하는 기능 웹페이지의 제목 / 로고

maxtime1004.tistory.com

 

 

 

▶ 예제 

 

① Webcontent > main.jsp 를 생성하고 코드를 작성합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    request.setCharacterEncoding("utf-8");
    String name = request.getParameter("name");
    String imgName = request.getParameter("imgName");
%>
 
 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>이미지</title>
</head>
<body>
<br><br>
<h1>이름은 <%=name %> 입니다.</h1><br><br>
<img src="./image/<%=imgName %>">
 
</body>
</html>
cs

 

이 jsp 파일은 공통으로 들어가게 하고 싶은 내용을 적어줍니다.

형태는 같지만 이름과 사진이 달라지기 때문에 이 부분은 파라미터로 처리해줍니다.

 

 

 

WebContent > image 경로에 원하는 이미지를 2개 넣어줍니다.

 

 

 

Webcontent > include1.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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<style>
img{
    width: 300px;
    height: 300px;
}
</style>
<meta charset="UTF-8">
<title>include1.jsp</title>
</head>
<body>
안녕하세요 JSP 시작 입니다!!!<br>
<jsp:include page="main.jsp" flush="true">
    <jsp:param value="사진1" name="name"/>
    <jsp:param value="image1.jpg" name="imgName"/>
</jsp:include>
<br>
안녕하세요 JSP 끝 부분 입니다!!!
 
</body>
</html>
cs

 

원하는 내용을 적고 중간은 include 하는데, name과 imgName을 파라미터로 보냅니다.

 

 

 

 

Webcontent > include2.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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<style>
img{
    width: 300px;
    height: 300px;
}
 
</style>
<meta charset="UTF-8">
<title>include2.jsp</title>
</head>
<body>
안녕하세요 JSP 시작 입니다!!!<br>
<jsp:include page="main.jsp" flush="true">
    <jsp:param value="사진2" name="name"/>
    <jsp:param value="image2.jpg" name="imgName"/>
</jsp:include>
<br>
안녕하세요 JSP 끝 부분 입니다!!!
 
</body>
</html>
cs

 

마찬가지로 원하는 내용을 적고 중간은 include 하는데 name과, imgName을 파라미터로 보냅니다.

 

반응형
반응형

① memberVO.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
package sec04.ex01;
 
import java.util.Date;
 
public class MemberVO {
    private String id;
    private String pwd;
    private String name;
    private String email;
    private Date joinDate;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public Date getJoinDate() {
        return joinDate;
    }
    public void setJoinDate(Date joinDate) {
        this.joinDate = joinDate;
    }
    
    
}
 
cs

 

 

② search.jsp

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 검색창</title>
</head>
<body>
    <form method="post" action="member.jsp">
        이름 : <input type="text" name="name"><br><br>
        <input type="submit" value="조회하기">
    </form>
</body>
</html>
cs

 

 

회원 이름 입력 후 조회하기 버튼을 클릭하면 form 태그를 통해 member.jsp로 파라미터를 전송합니다.

 

 

 

③ member.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<%@ page language="java" contentType="text/html; charset=UTF-8"
    import="java.util.*"
    import="sec04.ex01.*"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<style>
h1{
    text-align: center;
}
 
</style>
<meta charset="UTF-8">
<title>회원 정보 조회 페이지</title>
</head>
<body>
<h1>회원 정보 출력</h1>
<%
    request.setCharacterEncoding("utf-8");
    String name_1 = request.getParameter("name");
    MemberVO memberVO = new MemberVO();
    memberVO.setName(name_1);
    MemberDAO dao = new MemberDAO();
    List membersList = dao.listmembers(memberVO);
%>
<table border=1 style="width:800px;align:center">
    <tr align=center bgcolor="#FFFF66">
        <th>아이디</th>
        <th>비밀번호</th>
        <th>이름</th>
        <th>이메일</th>
        <th>가입일자</th>
    </tr>
    <%
        for(int i=0; i<membersList.size(); i++){
            MemberVO vo = (MemberVO) membersList.get(i);
            String id=vo.getId();
            String pwd = vo.getPwd();
            String name = vo.getName();
            String email = vo.getEmail();
            Date joinDate = vo.getJoinDate();
        
    %>
    
    <tr align="center">
        <td><%= id %></td>
        <td><%= pwd %></td>
        <td><%= name %></td>
        <td><%= email %></td>
        <td><%= joinDate %></td>
    </tr>
    <%    
        }
    %>
</table>
 
</body>
</html>
cs

 

파라미터로 받은 이름을 MemberVO 객체에 저장하고 dao.listmembers에 갑니다.

 

 

 

④ MemberDAO.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
60
61
62
63
64
65
66
67
68
69
package sec04.ex01;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
 
public class MemberDAO {
    private PreparedStatement pstmt;
    private Connection con;
    private DataSource dataFactory;
    public MemberDAO() {
        try {
            Context ctx = new InitialContext();
            Context envContext = (Context) ctx.lookup("java:/comp/env");
            dataFactory = (DataSource) envContext.lookup("jdbc/oracle");
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public List listmembers(MemberVO memberVO) {
        List<MemberVO> membersList = new ArrayList<MemberVO>();
        String name_1 = memberVO.getName();
        try {
            con = dataFactory.getConnection();
            String query = "select * from t_member";
            
            if((name_1 != null && name_1.length() != 0)) {
                query += " where name=?";
                pstmt = con.prepareStatement(query);
                pstmt.setString(1, name_1);
            }else {
                pstmt = con.prepareStatement(query);
            }
            ResultSet rs = pstmt.executeQuery();
            while(rs.next()) {
                String id = rs.getString("id");
                String pwd = rs.getString("pwd");
                String name = rs.getString("name");
                String email = rs.getString("email");
                Date joinDate = rs.getDate("joinDate");
                
                MemberVO vo = new MemberVO();
                vo.setId(id);
                vo.setPwd(pwd);
                vo.setName(name);
                vo.setEmail(email);
                vo.setJoinDate(joinDate);
                
                membersList.add(vo);
            }
            rs.close();
            pstmt.close();
            con.close();
        }catch (Exception e) {
            e.printStackTrace();
        }
        return membersList;
    }
}
 
cs

 

파라미터로 받은 memberVO 객체의 이름을 통해 sql문을 실행하고 받은 회원의 정보를 memberList에 저장하여 반환합니다.

member.jsp 에서는 받은 memberList의 정보를 출력합니다.

동명이인이 있을 경우에는 여러명이 출력됩니다.

 

 

만약 이름을 입력하지 않고 조회하기 버튼을 클릭하면 전체 목록이 출력됩니다.

 

 

 

반응형
반응형

웹 애플리케이션 첫화면에 해당하는 홈페이지를 다음과 같이 web.xml에 등록해 두면,

브라우저에서는 컨텍스트 이름만으로 요청하여 간단하게 표시 가능합니다.

따라서 JSP 또는 Servlet을 일일이 브라우저에 요청하지 않아도 됩니다.

홈페이지로 사용되는 welcome 페이지는 JSP나 HTML 파일이 될 수도 있고 여러개를 등록할 수도 있습니다.

여러개를 등록하면 요청 시 첫번째로 지정한 welcome 파일부터 차례로 찾아 홈페이지로 보여줍니다.

 

 

 

① WebContent > test01 > main.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>
<img src="./imgage/flower.jpg"/><br>
<h1>안녕하세요</h1>
<h1>홈페이지에 방문하신 것을 환영합니다!!</h1>
</body>
</html>
cs

 

 

② web.xml 다음과 같이 수정

 

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>proc3</display-name>
  <welcome-file-list>
   <welcome-file>/test01/main.jsp</welcome-file>
  </welcome-file-list>
</web-app>
cs

 

 

③ http://localhost:70/proc3/ 으로 실행

 

반응형
반응형

▶ 인클루드 디렉티브 태그 ( Include Directive Tag) 

 

→ 여러 JSP 페이지에서 사용되는 공통 JSP 페이지를 만든 후 다른 JSP 페이지에서 공통 JSP 페이지를 포함시켜 사용하는 기능

 

웹페이지의 제목 / 로고를 표시하는 상단, 메뉴를 표시하는 왼쪽은 화면이 바뀌더라도 일정하게 유지되는 경우가 많습니다.

공통된 화면을 일일이 페이지마다 만들어야 한다면 불편할 것입니다.

따라서 JSP에서는 공통으로 사용되는 JSP 페이지를 미리 만들어 놓고 다른 JSP 페이지 요청 시 인클루드 디렉티브 태그를 사용합니다.

 

 

˙ 인클루드 디렉티브 태그의 특징

       - 재사용성이 높다

       - JSP 페이지의 유지관리가 쉽다.

 

 

˙인클루드 디렉티브 태그의 형식

 

1
<%@ include file="공통기능.jsp" %>
cs

 

 

인클루드 디렉티브 태그 이용해 이미지 삽입 

 

① WebContent > image 경로에 원하는 이미지를 삽입합니다.

 

② WebContent 에 flower_image.jsp를 생성하고 실행합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>flower_image</title>
</head>
<body>
    <img src="./image/flower.jpg">
</body>
</html>
cs

 

 

 

 

 WebContent 에 include.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>include directive</title>
</head>
<body>
<h1>Hello JSP!!! START!!</h1><br>
<%@ include file="flower_image.jsp" %><br>
<h1>Good Bye JSP!!! END!!</h1>
</body>
</html>
cs

 

 

인클루드 디렉티브를 통해 전에 만든 flower_image.jsp 를 include 하고 위, 아래는 원하는 문구를 적어줍니다.

 

반응형

+ Recent posts