사용된 파일
Model - SpringVO.java
, SpringDAO.java
, SpringDAO_SpringImpl.java
View - view_list.jsp
Controller - CtrlTest.java
디자인은 bootstrap과 css 를 사용했다.
CREATE TABLE micro_T(
no INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
content VARCHAR(500)
);
@Override
public List<SpringVO> findAll() throws Exception {
RowMapper<SpringVO> rm = new RowMapper<SpringVO>() {
@Override
public SpringVO mapRow(ResultSet rs, int arg1) throws SQLException {
SpringVO vo = new SpringVO();
vo.setNo( rs.getInt("no") );
vo.setContent( rs.getString("content") );
return vo;
}
};
List<SpringVO> rl = jdbcTemplate.query("SELECT * FROM micro_T", rm);
return rl;
}
@Override
public int add(SpringVO pvo) throws Exception {
int uc = 0;
PreparedStatementSetter pss = new PreparedStatementSetter() {
@Override
public void setValues(PreparedStatement stmt) throws SQLException {
// 한글문제를 해결하기위해 따로 함수를 만들어 사용. Controller 부분에서 설명한다.
stmt.setString( 1, Util.han(pvo.getContent()) );
}
};
jdbcTemplate.update("INSERT INTO micro_T VALUES(default, ?)", pss );
return uc;
}
@Override
public int del(SpringVO pvo) throws Exception {
int uc = 0;
PreparedStatementSetter pss = new PreparedStatementSetter() {
@Override
public void setValues(PreparedStatement stmt) throws SQLException {
stmt.setInt( 1, pvo.getNo() );
}
};
jdbcTemplate.update("DELETE FROM micro_T WHERE no=?", pss );
return uc;
}
@Controller
public class CtrlTest
클래스 이름 위에 @Controller 명시
@RequestMapping("/bangmyung.do")
public ModelAndView list() throws Exception {
List<SpringVO> rl = springDao.findAll();
ModelAndView mnv = new ModelAndView();
mnv.setViewName("view_list");
mnv.addObject("list", rl);
return mnv;
}
view_list.jsp
로 forward 시 테이블 내용을 list 에 담아 정보를 같이 보낸다.
@RequestMapping("/add.do")
public String add( @ModelAttribute SpringVO vo ) throws Exception {
if( vo.getContent() == null || vo.getContent().equals("") ) {
return "redirect:bangmyung.do?ecode=invalid_content";
}
else {
springDao.add( vo );
return "redirect:bangmyung.do";
}
}
textarea 의 내용을 POST 방식으로 넘겨받아 @ModelAttribute 시키려고 했더니 한글이 깨져서 해결하느라 시간을 엄청나게 보냈다..
public static String han( String a ) {
try {
byte[] bs = a.getBytes("8859_1");
a = new String( bs, "utf-8" );
}
catch( IOException e ) {}
return a;
}
따로 함수를 만들어 add() 메서드에서 INSERT 시에 사용했다.
@RequestMapping("/del.do")
public String del( @ModelAttribute SpringVO vo ) throws Exception {
springDao.del( vo );
return "redirect:bangmyung.do";
}
<table class="table table-hover table-bordered table-striped">
<thead>
<tr>
<th style="width:15%">번호</th>
<th>내용</th>
<th style="width:15%">삭제</th>
</tr>
</thead>
<q:forEach items="${list}" var="t">
<tr>
<td><span>${t.no}</span></td>
<td><span>${t.content}</span></td>
<!-- X 를 누르면 /del.do 로 이동한다. ( CtrlTest의 del() 함수 호출) -->
<td><a href="del.do?no=${t.no}">X</a></td>
</tr>
</q:forEach>
</table>
<form method="POST" action="add.do">
<div class="form-group">
<label for="abcd">내용을 적어주세요</label>
<textarea id="abcd" class="form-control bana" name="content" rows="5"></textarea>
</div>
<div class="form-group" style="margin-bottom:20px">
<input class="form-control bana nana" type="submit"/>
</div>
</form>
디자인에 사용한 코드는 따로 올리지 않는다.