Daily coding
Servlet : servlet 과 jsp 연결하기 본문
server 코드를 작성하는 servlet에서 클라이언트의 요청을 받아 처리할 때,
servlet 내부에서 html 코드를 작성하여 내보낼 수 있으나 매우 귀찮다.
그러나 html은 서블릿의 데이터를 받아서 처리하는 작업이 매우 까다롭기 때문에
서버와 클라이언트의 역할을 모두 수행할 수 있는 jsp로 작업 진행이 가능하다
Java 클래스 파일에서 html 코드를 작성하는 것은 작성 자체나 디버깅이나 매우 불편하기 때문에
Servlet에서 요청 받은 데이터를 처리 후 그것을 가지고 jsp로 이동하여 클라이언트 코드(html)와
서버의 코드를 모두 처리한다.
( 현재 추세는 jsp의 사용을 줄이는 것이라고 한다. 또한 Node.js 처럼 DB와 직접 연결하는 방식을 많이 사용한다)
< Servlet에서 jsp로 데이터 보내기 >
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("SampleServlet doPost");
String name = "성춘향";
int age = 25;
// form으로 가기위한 포장
Member member = new Member(name, age);
// 패키징
req.setAttribute("member", member);
// 이동할 페이지 + 짐 챙기기
req.getRequestDispatcher("detail.jsp").forward(req, resp);;
}
< jsp 코드 >
<%@page import="dto.Member"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
// scriptlet : 자바영역
Member mem = (Member)request.getAttribute("member");
System.out.println(mem.toString());
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>Detail.jsp</h3>
<p>이름: <%=mem.getName() %></p>
나이: <input type="text" value="<%=mem.getAge() %>">
</body>
</html>
* jsp 파일은 Java 코드와 html 코드를 모두 작성할 수 있다.
기본 html 구조를 가지고 있고, java 코드는 <% %> 주석문을 달고 안쪽에 작성하면 된다.
* jsp에서 데이터를 받아오는 형식은 servlet과 동일하게
HttpServletRequest 소속의 getParameter 메소드를 사용한다. ( 배열은 getParameterValues() )
jsp는 servlet의 플러그인이기 때문에 기본적인 요소들은 모두 같고
특히, 필수적인 변수들 ( request (HttpServletRequest) , response(HttpServletResponse), out (PrintWriter)) 는 기본으로 지정됨
* html 에서 데이터를 사용할 때
: 마찬가지로, <% %> 주석문 안쪽에 데이터를 넣을 수 있는데, 데이터를 밖으로 내보내야하는 경우는 = 을 붙인다
ex> 이름: <%=mem.getName() %>
'Front-end > 비동기통신' 카테고리의 다른 글
Servlet : include 방식과 forward방식 (0) | 2020.01.18 |
---|---|
Servlet : 정리 (0) | 2020.01.18 |
Servlet : Java에서 데이터 보내는방식 2 ( forward ) (0) | 2020.01.18 |
Servlet : Java에서 데이터 보내는방식 1 ( sendRedirect ) (1) | 2020.01.17 |
Servlet : 에러 만들기 및 xml <init- parameter> (0) | 2020.01.16 |