JS 시험으로 구현한 회원등록 폼에 서블릿과 JSP를 적용해 컨트롤러에서 자바객체를 받아와 화면에 표현해 보았다.👀
request
를 파악하고 처리response
+ 데이터ajax
등장자바 객체가 html에서 처리가 안되니 동적 처리를 위해 servlet 기술이 나옴
- 클라이언트에서 데이터를 보낼 때 데이터를 꺼내는 법
- 데이터를 처리한 다음 결과를 클라이언트에 보내는 법(by. Jsp)
key - value 방식으로 정보가 주고받아짐
html에서 key값을 나타내는 것은 name
속성
명령 : get
데이터 보내기: post
서블릿 페이지를 web.xml에서 정의하여 URL확인한다
get방식은 get에 대응되는 method를 override해야하고, post도 post에 맞는 method를 override해야한다.
클라이언트에서 데이터 보낼땐 key-value방식으로 처리애햐 한다.
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//...
resp.sendRedirect("member/view_update.jsp");
}
request
라는 내장 객체로 사용 가능데이터 동적으로 처리하기 위해 AJAX
여러개의 데이터를 보내고 싶고 & 외부에 데이터 내용을 알리고 싶지 않을 때
→ 객체 자체를 보내야함(데이터 객체)
page1 → request → servlet → res → page2
여러개의 데이터를 보낼 때는 데이터를 보낼수 잇는 방법이 없기 떄문에
page2에 servelet에서 데이터 객체를 보냄(JSON 형태로 ..?)
컨트롤러 → 다른 페이지로 데이터 보내기 (객체)
public class MemberController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("hello");
String userId = req.getParameter("userId");
String pwd = req.getParameter("pwd1");
String name = req.getParameter("userName");
String zipCode = req.getParameter("zipCode");
String addr1 = req.getParameter("addr1");
String addr2 = req.getParameter("addr2");
String year = req.getParameter("year");
String month = req.getParameter("month");
String day = req.getParameter("day");
String gender = req.getParameter("gender");
String[] interests = req.getParameterValues("interests");
String introduce = req.getParameter("introduce");
TestVO test = new TestVO(userId, pwd, name, zipCode, addr1, addr2,
year,month, day, gender, interests, introduce);
req.setAttribute("test", test);
// resp.sendRedirect("member/view_update.jsp?user_id="+userId);
// resp.sendRedirect("member/view_update.jsp"); //새로운 req가 생성되서 날라가기 때문에 여기서 매개변수로 받은 req는 적용되지 않음
RequestDispatcher rd= req.getRequestDispatcher("./member/view_update.jsp"); // 서블릿의 주소로 이동됨
rd.forward(req, resp);
}
JSP에서 객체 받기
<%
// scriptlet : 여기에서 자바 사용가능
// 서블릿에는 문자열로 일일이 태그 다 적어줘야하므로s 서블릿 안쓰게 되었음 -> JSP 만들어짐
// 클래스를 통해 확장이 가능함
// String id = request.getParameter("userId");
// out.print("<h1>" + id + "</h1>"); // out: 브라우저
TestVO test = (TestVO)request.getAttribute("test");
String id = test.getId();
String pwd = test.getPwd1();
String name = test.getName();
String zipCode = test.getZipCode();
String addr1 = test.getAddr1();
String addr2 = test.getAddr2();
String year = test.getYear();
String month = test.getMonth();
String day = test.getDay();
String gender = test.getGender();
String[] interests = test.getInterests();
String introduce = test.getIntroduce();
%>
<script type="text/javascript">
// 라디오버튼 성별 체크
if (<%=gender%>.value == "male"){
$("#male").prop("checked", true);
} else {
$("#female").prop("checked", true);
};
let arr = [<% for (int i = 0; i < interests.length; i++) { %>
'<%= interests[i] %>'
<% if (i < interests.length - 1) { %>
,<% } %>
<% } %>];
// 취미 체크 박스
for(let i of arr){
$('#'+i).prop("checked", true)
}
// 홈으로 버튼 클릭시 페이지 이동
$("#home").click(function(e){
e.preventDefault();
location.href = "./member/user_regist_ex.html";
})
</script>