Daily coding

Servlet : servlet 과 jsp 연결하기 본문

Front-end/비동기통신

Servlet : servlet 과 jsp 연결하기

sunnnkim 2020. 1. 18. 15:26

 

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() %>