[220126]プロジェクト3日目
ルームリストの作成
使用するファイル
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)
);
Model
SpringVO.java
SpringDAO.java
SpringDAO_SpringImpl.java
@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
CtrlTest
@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
に転送すると、表の内容をリストに入れて一緒に情報を送信する.テキストボックスの内容をテーブルに配置
@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";
}
}
POST方式でtextareaのコンテンツを受信して@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";
}
View
view_list.jsp
EL実装テーブルを使用
<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タグを使用してテキストボックスとコミットボタンを実装
<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>
設計で使用したコードは単独でアップロードされません.Reference
この問題について([220126]プロジェクト3日目), 我々は、より多くの情報をここで見つけました https://velog.io/@choiyezz/220126-프로젝트-3일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol