my sql 연결
<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.41</version>
</dependency>
@RequestMapping("/tour") << 요론식으로 앞에 적을 경로를 미리 지정해둘수 있는데
@Controller
public class GongjiController {

	@RequestMapping("/write") << RequestMapping 시에는 위에 미리 적어둔 경로를 생략해도 되지만
	public String write()
	{
		return "/tour/write"; << return 받을때는 경로를 다 적어줘야한다 (헷갈릴수있다)
	}

	@RequestMapping("/list")
	public String list()
	{
		return "/tour/list";
	}

	@RequestMapping("/content")
	public String content()
	{
		return "/tour/content";
	}
}

폴더간 경로 이동은 여태 하던거와 같다 ../ << 폴더 뒤로이동 <예) ../board/list

Dao 부분 list

public void list(Model model) throws Exception
{
	String sql = "select *from board order by id desc";
	
	PreparedStatement pstmt = conn.prepareStatement(sql);
	
	ResultSet rs = pstmt.executeQuery();
	
	// rs 를 dto >> ArrayList에 담기
	ArrayList<BoardDto> blist = new ArrayList<BoardDto>();
	while(rs.next())
	{
		BoardDto bdto = new BoardDto();
		bdto.setTitle(rs.getString("title"));
		bdto.setName(rs.getString("name"));
		bdto.setPwd(rs.getString("pwd"));
		bdto.setId(rs.getInt("id"));
		bdto.setWriteday(rs.getString("writeday"));
		
		blist.add(bdto);
	}
	model.addAttribute("blist",blist);
}

Controller부분 list

@RequestMapping("/list")
public String list(Model model) throws Exception
{
	BoardDao bdao = new BoardDao();
	bdao.list(model);
	return "/list";
}

write_ok 에서 할일을 다하고 문서이동을 list로 갈때 list 함수를 실행하고 이동 할 수 있게
redirect를 사용한다 ( 문서 자체를 요청할때 사용 )

예) return "redirect:/list";

한글인코딩 관련 코드는 수정 해야보임

encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encodingFilter /*

mapping 되는것과 return 보내는 값이 다를때 보통 "redirect:/이름";
하지만 같은 문서에서 redirect 하면 안돼요 무한루프여요

Controller 부분 readnum
@RequestMapping("/readnum")
	public String readnum(BoardDto bdto) throws Exception
	{
		BoardDao bdao = new BoardDao();
		bdao.readnum(bdto);
		//bdao.readnum(bdto.getId()); << 한개의 값만 필요할땐 하나만 보내도 된다.
	
		return "redirect:/content?id="+bdto.getId();
	}
}

한개의 값만 가져와서 쓸때는

public void readnum(BoardDto bdto) throws Exception
{
	String sql = "update board set readnum=readnum+1 where id=?";
	
	PreparedStatement pstmt = conn.prepareStatement(sql);
	pstmt.setInt(1, bdto.getId());
	
	pstmt.executeUpdate();
	
	pstmt.close();
	conn.close();
}

Controller 부분 delete

@RequestMapping("/delete")
public String delete(HttpServletRequest request) throws Exception
{
	String id = request.getParameter("id");
	BoardDao bdao = new BoardDao();
	bdao.delete(id);
	
	return "redirect:/list";
}

Dao 부분 delete

public void delete(String id) throws Exception
{
	String sql = "delete from board where id=?";
	
	PreparedStatement pstmt = conn.prepareStatement(sql);
	pstmt.setString(1, id);
	pstmt.executeUpdate();
	
	pstmt.close();
	conn.close();
}  

Controller 부분 update_ok 비밀번호체크

@RequestMapping("/update_ok")
	public String update_ok(BoardDto bdto) throws Exception
	{
		BoardDao bdao = new BoardDao();
		int chk = bdao.update_ok(bdto);
	
		if(chk==0)
			return "redirect:/content?id="+bdto.getId();
		else
			return "redirect:/update?id="+bdto.getId();
	}

Dao 부분 update_ok

public int update_ok(BoardDto bdto) throws Exception
	{
		String sql ="update board set title=?,name=?,content=? where id=?";
	
		if(isPwdCheck(bdto.getId(),bdto.getPwd()))
		{
			PreparedStatement pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, bdto.getTitle());
			pstmt.setString(2, bdto.getName());
			pstmt.setString(3, bdto.getContent());
			pstmt.setInt(4, bdto.getId());
		
			pstmt.executeUpdate();
		
			pstmt.close();
			conn.close();

			return 0;
			리턴으로 0,1 보내주고 Controller에서 return부분에서 if(imsi==0,1)문으로 이동 할 곳을 처리
		}
		else
		{
			conn.close();
			return 1;
		}
	}

딜리트도 위와 같음

혹시 까먹었을까봐 ispwdCheck적어둠

public boolean isPwdCheck(int id, String pwd) throws Exception
{
	String sql = "select pwd from board where id=?";
	
	PreparedStatement pstmt = conn.prepareStatement(sql);
	pstmt.setInt(1, id);
	
	ResultSet rs = pstmt.executeQuery();
	rs.next();
	
	if(pwd.equals(rs.getString("pwd")))
		return true;
	else
		return false;
}

그럼 이만 아디오스

profile
국비 코딩

0개의 댓글