컨트롤러.jsp 코드
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="error/error.jsp" import="java.util.ArrayList,model.vo.BoardVO" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="bDAO" class="model.dao.BoardDAO" />
<jsp:useBean id="bVO" class="model.vo.BoardVO" />
<jsp:setProperty property="*" name="bVO" />
<%
// 어떤 요청을 받았는지 파악
// -> 해당 요청을 수행
String action=request.getParameter("action");
System.out.println("로그: "+action);
if(action.equals("main")){
ArrayList<BoardVO> datas=bDAO.selectAll(bVO);
request.setAttribute("datas", datas);
pageContext.forward("main.jsp"); // forward 액션
}
else if(action.equals("insert")){
if(bDAO.insert(bVO)){
response.sendRedirect("controller.jsp?action=main");
}
else{
throw new Exception("insert 오류");
}
}
else{
out.println("<script>alert('action 파라미터 값이 올바르지 않습니다...');location.href='controller.jsp?action=main'</script>");
}
%>
1. 1~2번 라인 = 페이지 지시어 isError / ErrorPage / import 가 중요
2. request.setCharacterEncoding("UTF-8") 상단에 있도록 배치한다.
3. <jsp:useBean id="bDAO" class="model.dao.BoardDAO" />
<jsp:useBean id="bVO" class="model.vo.BoardVO" />
-> 기본 생성자를 호출하여 new 진행한 것과 같음, 기본 생성자이기 때문에 멤버변수 초기화가 진행되지 않아있음
4. <jsp:setProperty property="*" name="bVO" />
-> bvo.setXxx(reqeust.getParamater("xxx"));
useBean 기본생성자로 진행하지 못한 멤버변수 초기화를 진행
요청정보(request 내장객체)에 포함된 파라미터와 이름이 동일한 멤버변수를 초기화
5. String action=request.getParameter("action");
-> request 로 넘어온 action 파라미터값에 대한 로직을 수행하기 위해 변수선언
index(표지페이지) . jsp 코드
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 표지페이지 -->
<!-- main.jsp에서 datas를 출력하려면 C를 방문해야하기때문 -->
<jsp:forward page="controller.jsp?action=main" />
<%
// pageContext.forward("controller.jsp?action=main");
%>
컨트롤러에 있는 sellectAll(bVO); 된 데이터를 가지고 메인화면을 띄워줘야 하기 때문에 인덱스는 컨트롤러에
main이라는 액션 파라미터값을 보내줘야함
메인 페이지 . jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="model.vo.BoardVO,java.util.ArrayList" %>
<jsp:useBean id="datas" class="java.util.ArrayList" scope="request" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>메인페이지</title>
</head>
<body>
<table border="2">
<tr>
<th>번 호</th><th>제 목</th><th>작성자</th>
</tr>
<%
for(BoardVO v:(ArrayList<BoardVO>)datas){
%>
<tr>
<th><a href="board.jsp"><%=v.getBid()%></a></th>
<td><%=v.getTitle()%></td>
<td><%=v.getWriter()%></td>
</tr>
<%
}
%>
</table>
<hr>
<a href="form.jsp">새로운 글 작성하기</a>
</body>
</html>
컨트롤러에서 sellectAll 되어진 datas를 출력하기 위해 jsp:useBean을 이용해 request 스코프에 있는 datas를 AL로 받아옴
그 후 for each 문을 통해 데이터 출력
form ( 데이터 추가 ) .jsp
<%@ 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 action="controller.jsp" method="post">
<input type="hidden" name="action" value="insert">
<table border="1">
<tr>
<td>제목</td>
<td><input type="text" name="title" required></td>
</tr>
<tr>
<td>내용</td>
<td><input type="text" name="content" required></td>
</tr>
<tr>
<td>작성자</td>
<td><input type="text" name="writer" required></td>
</tr>
<tr>
<td colspan="2" align="right">
<input type="submit" value="글 작성하기">
</td>
</tr>
</table>
</form>
<hr>
<a href="controller.jsp?action=main">메인으로 돌아가기</a>
</body>
</html>
1. <form action="controller.jsp" method="post"> -> controller.jsp 로 post 방식으로 정보를 보냄
2. <input type="hidden" name="action" value="insert"> -> atction 파라미터값에 insert라는 이름으로 보내는데,
hidden 속성으로 POST방식으로 전달할 요청 무엇인지 가려줄 수 있음
3. 메인으로 돌아 갈 때 역시, controller를 통해 datas를 받은 후 main으로 돌아가야한다는 것을 유의!
'개발자노트 > 웹' 카테고리의 다른 글
HTML - JSP - EL 표현식 사용예제 (0) | 2022.08.12 |
---|---|
HTML - jsp - tag - 표현언어 EL표현식 기본설명, 연산자 (0) | 2022.08.12 |
HTML - JSP - Java Beans를 이용한 게시판 예제 (0) | 2022.08.03 |
HTML- JSP - JavaBeans를 이용한 로그인 페이지 예제 (0) | 2022.08.03 |
HTML - JSP - request 사용 예제 ( 회원가입 정보 넘기기 ) request UTF-8 인코딩 (0) | 2022.08.02 |