인클루드 액션 태그
<jsp:include page="jsp페이지" flush="true 또는 false"> ... </jsp:include>
형식은 위와 같으며 page는 포함할 jsp 페이지를 뜻하고, flush는 지정한 jsp를 실행하기 전 출력 버퍼 비움 여부를 지정
<gorani_image.jsp>
부모 jsp 페이지로부터 응답받아서 결과를 출력할 자식 jsp 페이지 만들어줌
<include1.jsp>
인클루드 액션 태그와 파람 액션 태그로 가져올 페이지와 원하는 정보를 가져오기 위한 값을 자식 페이지로 보낸 후 그 결과를 출력하도록 함
<include2.jsp>
결과는 이렇게 다른 정보가 출력되도록 함
인클루드 액션 태그는 위처럼 포함되는 자식 jsp에 데이터를 동적으로 전달해서 원하는 결과를 출력할 수 있다.
포워드 액션 태그
포워드 액션 태그를 사용하면 서블릿에서 다른 서블릿으로 포워딩 할 때 RequestDispatcher과 같이 자바 코드 없이도 포워딩할 수 있으며, 포워딩 시 다른 서블릿이나 jsp로 값을 전달할 수도 있다.
<jsp:forward page="포워딩할 jsp 페이지"> ... </jsp:forward>
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
|
//login.jsp
<%@ 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>
<%
//브라우저에서 접속 시 msg값을 가져와서 표시하고, 최초 접속시에는 null이기 때문에 아무것도 표시하지 않음
String msg = request.getParameter("msg");
if(msg!=null){
%>
<h1><%=msg%></h1>
<%
}
%>
<form action="result2.jsp" method="post">
아이디 : <input type="text" name="user_id"><br>
비밀번호 : <input type="password" name="user_pw"><br>
<input type="submit" value="로그인">
<input type="reset" value="다시입력">
</form>
</body>
</html>
//result.jsp
<%@ 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>Insert title here</title>
</head>
<body>
<%
String user_id = request.getParameter("user_id");
if(user_id.length()==0){
//아이디를 입력하지 않았으면 다시 <jsp:forward>태그를 사용해 로그인 창으로 포워딩
//또한 <jsp:param> 액션 태그를 사용해 오류 메시지를 login2.jsp로 전달
%>
<jsp:forward page="login2.jsp">
<jsp:param value="<%=msg %>" name="msg"/>
</jsp:forward>
<%
}
%>
<h1>환영합니다 <%=user_id %></h1>
</body>
</html>
|
cs |
처음 접속하면 오류 메시지 없이 로그인 창만 출력되며, 여기에서 아이디를 적지 않고 로그인 버튼을 누르면
다시 로드인 페이지로 포워딩 되면서 오류메시지가 출력됨
useBean, setProperty, getProperty 액션 태그
자바 빈을 이용한 회원 정보 조회
위와 같은 폼을 가지는 memberForm.html을 만든다.
<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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
//MemberBean.java
public class MemberBean {
private String id;
private String pwd;
private String name;
private String email;
private Date joindate;
//인자가 없는 생성자
public MemberBean() {}
//인자가 4개인 생성자
public MemberBean(String id, String pwd, String name, String email) {
super();
this.id = id;
this.pwd = pwd;
this.name = name;
this.email = email;
}
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;
}
}
//MemberDAO.java
public class MemberDAO {
private static MemberDAO instance = new MemberDAO();
//객체 리턴
public static MemberDAO getInstance() {
return instance;
}
//DBCP객체 리턴
public Connection getConnection() throws Exception {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/oracle");
return ds.getConnection();
}
//가장 최근 가입일 순으로 회원 정보 정렬해서 조회
public ArrayList<MemberBean> listMember(){
ArrayList<MemberBean> list = new ArrayList<MemberBean>();
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select * from t_member order by joindate desc";
try {
con = getConnection();
pstmt = con.prepareStatement(sql);
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 memberBean = new MemberBean();
memberBean.setId(id);
memberBean.setPwd(pwd);
memberBean.setName(name);
memberBean.setEmail(email);
memberBean.setJoindate(joindate);
list.add(memberBean);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
//회원 추가
public void addMember(MemberBean memberBean) {
Connection con = null;
PreparedStatement pstmt = null;
String sql = "insert into t_member (id, pwd, name, email) values(?,?,?,?)";
try {
String id = memberBean.getId();
String pwd = memberBean.getPwd();
String name = memberBean.getName();
String email = memberBean.getEmail();
con = getConnection();
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pwd);
pstmt.setString(3, name);
pstmt.setString(4, email);
pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}
}
|
cs |
<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
|
<%@page import="java.util.ArrayList"%>
<%@page import="sec01.ex01.MemberDAO"%>
<%@page import="sec01.ex01.MemberBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
//html에서 전송한 정보 받아옴
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
String email = request.getParameter("email");
//멤버빈 객체를 생성한 후 회원 정보를 속성에 저장
MemberBean memberBean = new MemberBean(id, pwd, name, email);
MemberDAO memberDAO = MemberDAO.getInstance();
//회원 정보를 테이블에 추가
memberDAO.addMember(memberBean);
//전체 회원정보 조회
ArrayList<MemberBean> list = memberDAO.listMember();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table align=center width=100%>
<tr align="center" bgcolor="#99ccff">
<td width="7%">아이디</td>
<td width="7%">비밀번호</td>
<td width="5%">이름</td>
<td width="11%">이메일</td>
<td width="5%">가입일</td>
</tr>
<%
if(list.size()==0){
%>
<tr>
<td colspan="5">
등록된 회원이 없습니다.
</td>
</tr>
<%
}else{
for(int i=0;i<list.size();i++){
MemberBean bean = list.get(i);
%>
<tr align="center">
<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 |
유즈빈 액션 태그 이용한 회원 정보 조회
자바 빈을 사용하면 위와 같은 형식으로 회원 정보를 조회한다면 유즈빈을 사용하면 아래와 같은 형식으로 회원 정보를 조회할 수 있다.
member.jsp 페이지에서 위의 내용으로만 설정하면 유즈빈 액션 태그를 이용해서 회원 정보를 조회
setProperty / getProperty 액션 태그 사용
위에서 useBean 액션 태그로 자바 코드를 사용하지 않고 자바 빈을 생성했지만, 여전히 빈의 속성에 값을 설정할 때는 자바 코드 setter를 사용한다.
set/get Property 액션 태그를 사용하면 자바 코드를 사용하지 않고 빈 속성에 값을 설정할 수 있다.
<member3.jsp>
폼에서 전송된 정보를 setter를 사용해서 일일히 설정하지 않고 세팅
<member4.jsp>
param 속성을 이용해서 회원 가입창에서 전달된 매개변수 이름으로 해당 useBean의 속성에 자동으로 값을 설정
전달된 매개변수의 이름과 속성 이름이 같으면 같은 이름을 값을 설정하게 됨
<member5.jsp>
위의 예제에서 param 속성을 생략하고 property 속성 이름만 지정하면 전달받은 매개변수 중 같은 매개변수 값을 자동으로 설정해 줌
<member6.jsp>
property 속성에 *을 지정하면 jsp 페이지에서 자동으로 매개변수 이름과 속성 이름을 비교한 후 전달된 값을 같은 이름의 속성 이름에 알아서 설정해줌
따라서 jsp나 html 페이지에서 전달된 데이터를 처리할 때 미리 매개변수 이름과 속성 이름을 동일하게 설정하면 편리하게 사용할 수 있다.
<member7.jsp>
setProperty 액션 태그로 useBean 속성에 전달받은 정보를 저장하고 getProperty 액션 태그를 이용해서 useBean의 속성에 점근하여 값을 출력
위와 같이 자바 코드 없이 액션 태그만 사용해서 전달 받은 값을 출력할 수 있다.
*
<jsp:param> 액션 태그는 <include> 액션 태그와 <forward> 액션 태그 사용 시 다른 jsp로 매개변수 값을 전송할 때 사용
'자바 웹 > jsp' 카테고리의 다른 글
JSP에서 파일 업로드, 다운로드 (0) | 2022.06.19 |
---|---|
JSP 표준 태그 라이브러리(JSTL) (0) | 2022.06.19 |
표현 언어 (0) | 2022.06.18 |
JSP 스크립트 요소 기능 (0) | 2022.05.14 |
JSP 정의와 구성요소 (0) | 2022.05.14 |