문제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;
}
'백엔드 과정 > Servlet' 카테고리의 다른 글
[Servlet/JSP] 프로젝트 실습 (Servlet 수업 정리하기) (0) | 2022.03.19 |
---|---|
[Servlet] MIME-TYPE ? (0) | 2022.03.17 |
[Servlet] file.io (0) | 2022.03.07 |
[Servlet] cookie와 session (0) | 2022.03.07 |
[Servlet] sendRedirect VS RequestDispatcher (0) | 2022.03.06 |