이번에는 show, 글을 클릭했을 때에 글을 보여주는 부분을 설명하겠습니다.

우선 list.do를 실행하게 되면 글목록이 나오는데 여기서 글을 클릭하는 링크는 "show.do?id=숫자" 입니다.
해당 글의 id를 요청하게 됩니다.

show의 액션매핑의 액션을 보도록합시다.
<action path="/show"
    type="simpleboard.actions.showAction"
    scope="request">
   <forward name="success" path="/show.jsp"/>
  </action>

showAction클래스를 실행하게 됩니다.
showAction클래스를 보도록 합시다.

showAction.java
[code]
package simpleboard.actions;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import simpleboard.model.Board;
import simpleboard.model.BoardDAO;

public class showAction extends Action{
    public ActionForward execute(   ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response) throws Exception{
       
        BoardDAO dao = new BoardDAO();
        Board board = new Board();
        HttpSession session = request.getSession();
       
        int id = Integer.parseInt(request.getParameter("id"));
        board = dao.findBoard(id);
        board.setContent(dao.convertHtmlBr(board.getContent()));
       
        session.setAttribute("board", board);
       
        return mapping.findForward("success");
    }
}
[/code]
id를 파라메터로 받고 그것을 dao에 있는 findBoard메소드에 넘겨줍니다. 이 메소드는 해당 id에 있는 글, 제목 등을 리턴시켜줍니다.

그리고 중요한 것이 converHtmlBr이라는 메소드를 실행하게 되는데 이것은 content에 있는 내용에 "\n"을 모두 <br>로 바꿔주는 메소드입니다. 이것을 안해주면 html에서는 \n을 인식못하므로 <br>로 바꿔줘야합니다.

바꾼다음에 현재글을 세션에 저장합니다.

이제 show.jsp소스코드를 보도록 합시다.

show.jsp
[code]
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld"  prefix="bean" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>심플보드에 오신 것을 환영합니다</title>
</head>
<body>
<center>
<table border="1" width="500" height="50">
    <tr>
        <td align="center" bgcolor="dddddd">
        간단한 게시판 (Simple Board)
        </td>
    </tr>
</table>
<table width="500" border="1">
    <tr>
        <td width="100" bgcolor="#7eaee9">등록자</td>
        <td width="400" align="left">
        <bean:write name="board" property="name"/>
        </td>
    </tr>
    <tr>
        <td bgcolor="#7eaee9">제 목</td>
        <td align="left">
        <bean:write name="board" property="title"/>
        </td>
    </tr>
    <tr>
        <td bgcolor="#7eaee9">내용</td>
        <td align="left">
        <bean:define id="content" name="board" property="content"/>
        <%= content %>
        </td>
    </tr>
    <tr>
        <td colspan="2" align="right">
        <html:link page="/modifyConfirm.do" paramId="id"
                        paramName="board" paramProperty="id">
        수정</html:link>
        <html:link page="/deleteForm.do" paramId="id"
                        paramName="board" paramProperty="id">
        삭제</html:link> 
        <html:link page="/list.do">목록보기</html:link></td>
    </tr>
</table>
<table border="1" width="500" height="28">
    <tr>
        <td align="center" bgcolor="dddddd">
        제작자 : 성종천(mudchobo@nate.com)
        </td>
    </tr>
</table>
</center>
</body>
</html>
[/code]
여기서 board에 있는 값을 bean:write태그를 통해서 출력을 합니다.
중간쯤 보면 <bean:define id="content" name="board" property="content"/><%= content %>
content부분은 define으로 정의를 해서 jsp코드를 사용합니다. 이것은 왜그런지는 잘 모르겠지만 그냥 bean:write해버리면 <br>이 그냥 나타나버립니다-_-;
그래서 저렇게 정의를 한 뒤 jsp코드로 사용해야 합니다.

그리고 수정이나 링크부분은 param으로 id번호를 넘겨줘서 링크를 시킵니다.

오늘은 여기까지!-_-;

 
Posted by 머드초보
,