쉽게 배우는 JSP 웹 프로그래밍 4장 연습문제

songB·2022년 3월 15일
0

JSP

목록 보기
12/13

1. forward와 include 액션 태그의 차이점을 간단히 설명하시오.

외부 파일을 포함한다는 점이 비슷하지만, include 액션 태그는 외부 파일이 실행된 후 현재 페이지로 제어를 반환한다. 또한, include 태그의 실행 내용이 현재 JSP 페이지의 출력 버퍼에 추가 저장되어 출력된다.

2. include 액션 태그와 디렉티브 태그의 차이점을 설명하시오.

구분include 액션 태그include 디렉티브 태그
처리 시간요청 시 자원을 포함번역 시 자원을 포함
기능별도의 파일로 요청 처리 흐름을 이동현재 페이지에 삽입
데이터 전달 방법request 기본 내장 객체나 param 액션 태그를 이용하여 파라미터를 전달페이지 내의 변수를 선언한 후 변수에 값을 저장
용도화면 에리아웃의 일부분을 모듈화할 때 주로 사용다수의 JSP 웹 페이지에서 공통으로 사용되는 코드나 저작권과 같은 문장을 포함하는 경우에 사용
기타동적 페이지에 사용정적 페이지에 사용

3. 자바빈즈를 작성하는 기법을 예를 들어 설명하시오.

package com.dto;
import java.io.Serializable;

public class MemberBean implements java.io.Serializable {
	private int id;
    private String name;
    public MemberBean(){
    }
    public int getId(){
    	return id;
    }
    public void setId(int id){
    	this.id=id;
    }
    public String getName(){
    	return name;
    }
    public void setId(String name){
    	this.name=name;
    }

4. forward 액션 태그를 이용하여 조건에 맞게 JSP 애플리케이션을 만들고 실행 결과를 확인하시오.

forward.jsp

<h4>구구단 출력하기</h4>
<jsp:forward page="forward_data.jsp">
	<jsp:param value="5" name="num"/>
</jsp:forward>

forward_data.jsp

<% 
	int num=Integer.parseInt(request.getParameter("num"));
	for(int i=1;i<=9;i++){
		out.println(num+" * "+i+" = "+num*i+"<br>");
	}
%>

실행 결과

5. include 액션 태그를 이용하여 조건에 맞게 JSP 애플리케이션을 만들고 실행 결과를 확인하시오.

include.jsp

<h4>구구단 출력하기</h4>
<jsp:include page="include_data.jsp" flush="false">
	<jsp:param value="5" name="num"/>
</jsp:include>

include_data.jsp(forward_data.jsp와 같다)

<% 
	int num=Integer.parseInt(request.getParameter("num"));
	for(int i=1;i<=9;i++){
		out.println(num+" * "+i+" = "+num*i+"<br>");
	}
%>

실행 결과

6. 조건에 맞게 JSP 애플리케이션을 만들고 실행 결과를 확인하시오.

GuGuDan 클래스

package ch04_ex.com.dao;

public class GuGuDan {
	public int process(int num1, int num2){
		return num1*num2;
	}
}

useBean.jsp

<h4>구구단 출력하기</h4>
<jsp:useBean id="gugu" class="ch04_ex.com.dao.GuGuDan"/>
<%
	for(int i=1;i<=9;i++){
		out.println(5+"*"+(i)+"="+gugu.process(5,i)+"<br>");
	}
%>

실행 결과

7. 조건에 맞게 도서 웹 쇼핑몰을 위한 웹 애플리케이션을 만들고 실행 결과를 확인하시오.

Book 클래스

package dto;

import java.io.Serializable;

public class Book implements Serializable {
	private String bookId; //도서 아이디
	private String name; //도서명
	private Integer unitPrice; //가격
	private String author; //저자
	private String description; //설명
	private String publisher; //출판사
	private String category; //분류
	private long unitsInStock; //재고 수
	private long totalPages; //페이지 수 
	private String releaseDate; //출판일(월/년)
	private String condition; //신규,중고,E북
	public Book() {
        super();
        // TODO Auto-generated constructor stub
    }
	public Book(String bookId, String name, Integer unitPrice) {
		this.bookId = bookId;
		this.name = name;
		this.unitPrice = unitPrice;
	}
	public String getBookId() {
		return bookId;
	}
	public void setBookId(String bookId) {
		this.bookId = bookId;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getUnitPrice() {
		return unitPrice;
	}
	public void setUnitPrice(Integer unitPrice) {
		this.unitPrice = unitPrice;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public String getPublisher() {
		return publisher;
	}
	public void setPublisher(String publisher) {
		this.publisher = publisher;
	}
	public String getCategory() {
		return category;
	}
	public void setCategory(String category) {
		this.category = category;
	}
	public long getUnitsInStock() {
		return unitsInStock;
	}
	public void setUnitsInStock(long unitsInStock) {
		this.unitsInStock = unitsInStock;
	}
	public long getTotalPages() {
		return totalPages;
	}
	public void setTotalPages(long totalPages) {
		this.totalPages = totalPages;
	}
	public String getReleaseDate() {
		return releaseDate;
	}
	public void setReleaseDate(String releaseDate) {
		this.releaseDate = releaseDate;
	}
	public String getCondition() {
		return condition;
	}
	public void setCondition(String condition) {
		this.condition = condition;
	}
}

BookRepository 클래스

package dao;

import java.util.ArrayList;
import dto.Book;

public class BookRepository {
	ArrayList<Book> listOfBooks=new ArrayList<Book>();
	
	public BookRepository(){
		Book book1=new Book("B0001","HTML5+CSS",10000);
		book1.setDescription("워드나 PPT 문서를 만들 수 있나요?");
		book1.setCategory("Hello Coding");
		book1.setPublisher("한빛미디어");
		book1.setAuthor("황재호");

		Book book2=new Book("B0002","쉽게 배우는 자바 프로그래밍",27000);
		book2.setDescription("객체 지향의 핵심과 자바의 현대적 기능");
		book2.setCategory("IT모바일");
		book2.setPublisher("한빛미디어");
		book2.setAuthor("우종중");

		Book book3=new Book("B0003","스프링4 입문",27000);
		book3.setDescription("스프링은 아키텍쳐를 이해하는게 중요합니다!");
		book3.setCategory("IT모바일");
		book3.setPublisher("한빛미디어");
		book3.setAuthor("하세가와 유이치(권은철)");

		listOfBooks.add(book1);
		listOfBooks.add(book2);
		listOfBooks.add(book3);
	}
	public ArrayList<Book> getAllBooks(){
		return listOfBooks;
	}
}

books.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="dto.Book"%>
<%@page import="java.util.ArrayList"%>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<title>도서목록</title>
</head>
<body>
	<%@ include file="menu.jsp" %>
	<div class = "jumbotron">
		<div class = "container">
			<h1 class = "display-3">
				도서 목록
			</h1>
		</div>
	</div>
	<div class="container">
		<div class="row">
			<jsp:useBean id="books" class="dao.BookRepository"/>
			<%
				ArrayList<Book> listOfBooks = books.getAllBooks();
				for (Book b:listOfBooks) {
			%>
			<div class="col-md-12">
				<h4><%="["+b.getCategory()+"] " + b.getName()%></h4>
				<br>
				<p><%=b.getDescription()%>
				<p><%=b.getAuthor() + " | " + b.getPublisher() + " | " + b.getUnitPrice() + "원"%>
				<hr style="border-style: dotted;" />
			</div>
			<%
				}
			%>
		</div>
	</div>
	<%@ include file="footer.jsp" %>
</body>
</html>

실행 결과

profile
백송은입니다.

0개의 댓글

관련 채용 정보