Acorn academy 01/04

Bae Seong Jun·2024년 1월 4일

Acorn academy

목록 보기
30/70

정적, 동적 JSP 활용

directive tag 지시어의 inclide를 사용

현재경로를 이용해서 이동하는 방법 (잘 이용되는 방법)

request.ContextPath() 이용

<a href="<%=request.getContextPath()%>/include/top.jsp">from root/프로젝트/include/top.jsp</a><br>

동적 JSP 활용

	first.jsp<br>
	아래화면은 top.jsp를 jsp:include 시킨 내용입니다.
	<hr>
		<jsp:include page="include/top.jsp" flush="true" /> <!-- end tag주의 -->
	<hr>
	다시 first.jsp 내용입니다.

주의사항 (필수 숙지)

  • flush : true -> 변경시 즉각반영. 꼭 true를 달아주기.

  • 자체 /> 닫는 태그 필수. 부재시 오류발생

  • 동적으로 추가될시 <html><body>까지 전부 적용되기 때문에, 동적으로 추가될 파일은 해당 불필요한 태그들이 필요없다.

  • 원본 파일과 동적으로 추가된 파일은 똑같은 request를 공유한다.

  • 원본 파일에서 동적 파일을 선택해서 css를 부여할 수 있다.

  • 링크로 상대주소를 작성할 때도 원본 위치 기준으로 작성.

  • 동적파일 작성시 원본파일이라고 생각하고 작성하면 될 것 같다.

  • 단 변수명은 별개 처리된다.

first.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
	h1{color:red;}
</style>
</head>
<body>
<%=request.getContextPath()%><br>
	<a href="include/top.jsp">top.jsp</a><br>
	<a href="/include/top.jsp">from root/include/top.jsp</a><br>

	<a href="/07_JSP2_include_action_chul/include/top.jsp">from root/프로젝트/include/top.jsp</a><br>
	<a href="<%=request.getContextPath()%>/include/top.jsp">from root/프로젝트/include/top.jsp</a><br>
	<a href="test.jsp">test.jsp</a><br>
	
	<%
		request.setAttribute("xxx", "홍길동");
		String userid = request.getParameter("userid");
	%>
	first.jsp   userid=<%=userid %><br>
	아래화면은 top.jsp를 jsp:include 시킨 내용입니다.
	<hr>
		<jsp:include page="include/top.jsp" flush="true" /> <!-- end tag주의 -->
	<hr>
	다시 first.jsp 내용입니다.
	
</body>
</html>

top.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%!int num=10; %>
<%
//main.jsp에서 사용한 request를 재사용함
String mesg = (String)request.getAttribute("xxx");
String userid = request.getParameter("userid");
%>
<h1>top.jsp
안녕하세요 mesg= <%=mesg%>
userid==<%=userid %>
</h1>
<a href="../test.jsp">test.jsp</a><br>
<a href="test.jsp">test.jsp</a><br>
<a href="<%=request.getContextPath()%>/test.jsp">from root/프로젝트/test.jsp</a><br>

요청위임

사용자의 요청을 받은 서블릿 또는 JSP에서 다른 컴포넌트(서블릿/JSP)로 요청을 위임할 수 있는 방법이다.

방법 1) response.sendRedirect 방식

response.sendRedirect(target)

요청데이터파싱, 데이터처리 응답처리 코드 없이 응답처리를 다른 servlet, jsp에 위임

  • 최종응답 주소는 요청위임된 주소다.
  • 최초 요청된 곳과 위임된 곳의 request는 서로 다르다.

사용 예) 같은 화면을 나타내는 중복되는 코드가 있으면 요청위임을 이용해서 중복제거하고 적은 코드로 처리할 수 있다.

방법 2) Requestdispatcher.forward 방식

Requestdispatcher dis=
request.getRequestDispatcher("target.jsp");

dis.forward(request, response);

forward메소드의 객체로 request, response가 전달되므로 request, response가 함께 유지되어 위임된다.


워크샵 34

  1. jsp에서 Mybatis 구조를 통해 db에서 select 의 결과를 뽑아온다.
  2. 반환받은 결과(List<String>)을 jsp에서 반복문을 통해 태그를 출력해준다.

워크샵 35
문제 : 삭제 버튼 클릭시 삭제
1. 버튼 클릭시 해당 열의 아이디가 선택되어야함.

  • onclick="", <%= %> 를 이용
  1. 버튼 클릭시 처리를 담당한 jsp로 이동과 데이터 전달이 이루어져야함
    1. location.href="" 설정
    - submit 이벤트와 별개로 작동. 변경시 해당경로로 이동
    - 만약 submit 이벤트가 있다면 event.preventDefault()로 submit 이벤트가 취소되어야한다. 정확히는 href이동후 submit이 추가로 발생하므로 작업이 겹치게 되는 것이다.
    - submit 이벤트의 get방식과 동일하다.
    2. form -> submit 이벤트 활용
    - 대신 input에 해당하는 값들만 전달이 됨
    location.href 이용한 방식
<%@page import="com.dto.MyproductDTO"%>
<%@page import="java.util.List"%>
<%@page import="com.service.MyproductService"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
	MyproductService service = new MyproductService();
	List<MyproductDTO> list = service.select();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
	function deleteP(id){

		/* event.preventDefault(); */
		location.href= "deleteProduct.jsp?prodid="+id;
	}
</script>
</head>
<body>
	<table border=1>
		<tr>
			<td>상품아이디</td>
			<td>상품명</td>
			<td>가격</td>
			<td>갯수</td>
			<td>삭제</td>
		</tr>
			<%
			for(MyproductDTO dto:list){
		%>
			<tr>
				<td><%=dto.getProdId() %></td>
				<td><%=dto.getProdName() %></td>
				<td><%=dto.getPrice() %></td>
				<td><%=dto.getQuantity() %></td>
				<td>
					<%-- <button onclick="location.href='deleteProduct.jsp?prodid=<%=dto.getProdId() %>'">삭제</button> --%>
					<button onclick="deleteP('<%= dto.getProdId()%>')">삭제</button>
				</td>
			</tr>
		<%} %>
	</table>

</body>
</html>

워크샵 36

  1. 전체선택 구현
  2. 버튼 클릭시 delete처리해주는 jsp로 이동 및 선택된 열의 id 전달


profile
코딩 프로?

0개의 댓글