반응형

· 유즈빈의 사용형식

 

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 하고 위, 아래는 원하는 문구를 적어줍니다.

 

반응형
반응형

▶ 디렉티브 태그 

 

→ JSP 페이지에 대한 전반적인 설정 정보를 지정할 때 사용하는 태그

 

˙ 디렉티브 태그의 종류

      페이지 디렉티브 태그(Page Directive Tag) : JSP 페이지의 전반적인 정보를 설정할 때 사용      

      인클루드 디렉티브 태그(Include Directive Tag) : 공통으로 사용하는 JSP 페이지를 다른 JSP 페이지에 추가할 때 사용

      태그라이브 디렉티브 태그(Taglib Directive Tag) : 개발자나 프레임워크에서 제공하는 태그를 사용할 때 사용

 

 

 

▶ 페이지 디렉티브 태그 

 

속성 기본값 설명
info 없음 페이지를 설명해주는 문자열을 지정
language "java" JSP 페이지에서 사용할 언어를 지정
contentType "text/html" JSP 페이지 출력 형식을 지정
import 없음 JSP 페이지에서 다른 패키지의 클래스를 임포트할 때 지정
session "true" JSP페이지에서 HttpSession 객체의 사용 여부를 지정
buffer "8kb" JSP 페이지 출력 시 사용할 버퍼 크기를 지정
autoFlush "true" JSP 페이지의 내용이 출력되기 전 버퍼가 다 채워질 경우 동작을 지정
errorPage "false" JSP 페이지 처리 도중 예외가 발생할 경우 예외처리 담당 JSP  페이지 지정
isErrorPage "false" 현재 JSP 페이지가 예외 처리 담당 JSP 페이지 인지 지정
pageEncoding "ISO-8859-1" JSP 페이지에서 사용하는 문자열 인코딩을 지정
isELIgnored "true" JSP 2.0 버전에서 추가된 기능으로 EL 사용 유무를 지정

 

 

페이지 디렉티브 형식은 <%@page %> 안에 속성과 값을 나열하면 됩니다.

이클립스에서 JSP 페이지를 만들면 다음과 같이 페이지 디렉티브가 자동으로 생성됩니다.

 

 

 

 

위의 표를 참고하여 자신이 원하는 대로 페이지 디렉티브를 변경할 수 있습니다.

 

반응형
반응형

① login3.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>login3</title>
</head>
<body>
<form name="frmLogin" method="post" action="login" encType="UTF-8">
아이디 : <input type="text" name="user_id"><br>
비밀번호 : <input type="password" name="user_pwd"><br>
<input type="submit" value="로그인">
<input type="reset" value="초기화">
</form>
 
</body>
</html>
cs

 

 

아이디와 비밀번호를 입력하고 로그인 버튼을 누르면 form 태그를 통해 LoginServlet으로 파라미터를 전송한다.

 

 

 

② LoginServlet.java

 

http://colorscripter.com/s/FtJrmDH

 

공유된 코드 - Color Scripter

저작권자 : jung_ye_jin@naver.com 삭제 요청 코드 설명 : LoginServlet

colorscripter.com

 

form 태그로 보낸 파라미터(아이디, 비밀번호)를 받는다. MemberVO를 세팅한 후 dao.isExisted로 간다.

 

 

 

③ 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package sec03.ex04;
 
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<MemberVO> listmembers(){
        List<MemberVO> list = new ArrayList<MemberVO>();
        try {
            connDB();
            String query = "select * from t_member";
            System.out.println(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");
                
                MemberVO vo = new MemberVO();
                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;
    }
    
    private void connDB() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            System.out.println("Oracle 드라이버 로딩 성공");
 
            con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe""jyj""java");
            System.out.println("Connection 생성 성공");
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    
    
    public boolean isExisted(MemberVO memberVO) {
        boolean result = false;
        String id = memberVO.getId();
        String pwd = memberVO.getPwd();
        try {
            con = dataFactory.getConnection();
            
            String query="select decode(count(*),1,'true','false') as result from t_member";
            query += " where id=? and pwd=?";
            
            pstmt = con.prepareStatement(query);
            pstmt.setString(1, id);
            pstmt.setString(2, pwd);
            ResultSet rs = pstmt.executeQuery();
            
            rs.next();
            result = Boolean.parseBoolean(rs.getString("result"));
            System.out.println("result = " + result);
        }catch(Exception e) {
            e.printStackTrace();
        }
        return result;
    }
}
 
cs

 

isExisted 메소드에서 해당 아이디와 비밀번호를 가지고 있는 회원이 있는지 확인 후 있으면 true, 없으면 false를 반환한다.

 

 

 

 

LoginServlet.java로 반환된 값이 true이면 아래의 화면을 띄운다. 

회원정보 보기를 클릭하면 ShowMemeber.java로 넘어간다.

 

 

 

ShowMemeber.java 

 

http://colorscripter.com/s/0rPQnMj

 

공유된 코드 - Color Scripter

저작권자 : jung_ye_jin@naver.com 삭제 요청 코드 설명 : ShowMember

colorscripter.com

 

 

 

 

⑥  ③번에서 false가 반환 되면 아래의 화면을 띄운다.

 

 

반응형

+ Recent posts