<script type="text/javascript">
$(document).ready(function() {
$("#btn").click(function() {
if ($("#title").val() != "") {
var cul_addr = $("input[name=bName]").val();
var cul_addr2 = $("input[name=bTitle]").val();
var cul_addr3 = $("textarea[name=bContent]").val();
var addr = escape(encodeURIComponent(cul_addr + " " + cul_addr2+" "+ cul_addr3)); //인코딩부분
$.ajax({
type : "POST",
url : "write1",
data : "addr=" + addr,
dataType : "xml",
async : false,
success :
location.href='/ex/qna'
});
/* $("#writeForm").attr({
action : 'write1',
method : 'get'
}).submit();*/
} else {
alert("빈칸 없이");
}
});
});
jsp에서 ajax로 인코딩해서 보낸다 write1이라는 이름으로 컨트롤러에서 받고
컨트롤러
@RequestMapping("/write1")
public String write(HttpServletRequest request, Model model) throws UnsupportedEncodingException {
model.addAttribute("request", request);
command = new com.javalec.command1.BWriteCommand1();
command.execute(model);
return "redirect:qna";
}
모델을 커맨드클래스로 넘겨준다
커맨드
public class BWriteCommand1 implements BCommand1 {
@Override
public void execute(Model model) {
// TODO Auto-generated method stub
Map<String, Object> map = model.asMap();
HttpServletRequest request = (HttpServletRequest) map.get("request");
try {
String[] deArray = URLDecoder.decode((String) request.getParameter("addr"), "utf-8").split(" ");
//디코딩부분
String bName = deArray[0];
String bTitle = deArray[1];
String bContent = deArray[2];
String bCode = request.getParameter("bCode");// 코드는 필요없음
com.javalec.dao1.BDao1 dao = new com.javalec.dao1.BDao1();
dao.write(bName, bTitle, bContent, bCode);
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
처음에 보내줄때 "이름 제목 내용" 이런식으로 보내줬다
커맨드에서 " "를 구분자로 디코딩해주면서 스플릿한다.
배열로받고 순서대로 변수에 넣어주면된다.
ajax로 보낼때 인코딩 디코딩하는이유는 한글깨짐을 방지하기위해서이다.