백엔드 과정/Servlet

Servlet 문제 풀이

mim 2022. 3. 15. 21:12
반응형

 

문제1. msg가 화면에 출력되지 않는 이유?

<%--
  msg가 화면에 출력되지 않는 이유?
  : JSP 페이지 내에 msg라는 변수는 선언되지 않았고 이전 Servlet에서 request에 setAttribute() 된 값은 
  request로부터 getAttribute() 메소드를 이용해서 가져와야 한다.
		  
  msg가 화면에 출력 되게 하려면?
  : <% String msg = (String)request.getAttribute("msg"); %> 와 같이 
  scriptlet을 이용해서 미리 변수 선언 후 출력하거나
  <%= request.getAttribute("msg") %> 와 같이 출력식에서 직접 값을 가져와서 출력하는 방법이 있다.
 --%>

 

=> 출력식에서 직접 값을 가져와서 출력하기

<%= request.getAttribute("msg") %>

 


문제2 예제.

<%--
아래 코드에서 NullPointerException 오류가 발생하는 이유는?
: Servlet에서 forward 하기 이전 List<NoticeDTO> 타입의 객체를 request에 setAttribute() 하지 않았다.
		
NullPointerException 오류가 발생하지 않도록 하려면?
: Servlet에서 if(list != null) 블럭에 request.setAttribute("list", list); 코드를 추가한 뒤 forward 한다.
--%>

<%= list.get(0).toString() %>

 

if ( list != null ) {

  request.setAttribute("list", list); => 추가하기

}

 

아래 코드 확인 )

@WebServlet("/test2")
public class TestTwoServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    	throws ServletException, IOException {
		
		List<NoticeDTO> list = new NoticeService().selectList();
		
		String page = null;
		if(list != null) {
			page = "/WEB-INF/views/notice/noticeList.jsp";
			
			request.setAttribute("list", list);
			
		} else {
			page = "/WEB-INF/views/common/errorPage.jsp";
			request.setAttribute("msg", "공지사항 조회에 실패하였습니다.");
		}
		
		request.getRequestDispatcher(page).forward(request, response);
		
	}

 


문제3 예제.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" import="com.kh.model.dto.MemberDTO" %>
<%
	MemberDTO loginUser = (MemberDTO)session.getAttribute("loginUser");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div>
		<label><%= loginUser.getName() %>님</label>
		<div>
			<button>정보수정</button>
			<button id="logoutBtn" onclick="logout();">로그아웃</button>
		</div>
	</div>

	<%--
	로그아웃 버튼 클릭시 logout을 요청할 script 구문을 작성한다면? 
	: 아래 코드 참조
	전송 받은 서블릿("/logout")에서 Session을 통해 관리되고 있는 
	loginUser 속성을 만료시킨 뒤 index로 보내는 구문을 작성한다면?
	: com.kh.controller.LogoutServlet 참조
	 --%>
	<script>
 		function logout(){
 			location.href = '<%=request.getContextPath()%>/logout';
		}
	</script>
</body>
</html>

 


문제4 예제.

public class JDBCTemplate {

public static Connection getConnection() {

	Connection conn = null;

	try {
			
		Class.forName("oracle.jdbc.driver.OracleDriver");
		conn = DriverManager.getConnection
        				("jdbc:oracle:thin:@127.0.0.1:1521:xe", "student", "student");
		conn.setAutoCommit(false);
			
	} catch (Exception e) {
		e.printStackTrace();
	}
		
	return conn;

}

 

반응형