<a href="<%=request.getContextPath()%>/include/top.jsp">from root/프로젝트/include/top.jsp</a><br>
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)로 요청을 위임할 수 있는 방법이다.
요청데이터파싱, 데이터처리 응답처리 코드 없이 응답처리를 다른 servlet, jsp에 위임
사용 예) 같은 화면을 나타내는 중복되는 코드가 있으면 요청위임을 이용해서 중복제거하고 적은 코드로 처리할 수 있다.
Requestdispatcher dis=
request.getRequestDispatcher("target.jsp");
dis.forward(request, response);
forward메소드의 객체로 request, response가 전달되므로 request, response가 함께 유지되어 위임된다.
워크샵 34
List<String>)을 jsp에서 반복문을 통해 태그를 출력해준다.워크샵 35
문제 : 삭제 버튼 클릭시 삭제
1. 버튼 클릭시 해당 열의 아이디가 선택되어야함.
2. form -> submit 이벤트 활용 - 대신 input에 해당하는 값들만 전달이 됨<%@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