중간고사 담당교수 : 단국대학교응용컴퓨터공학박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 답안지에학과, 학번, 이름외에본인의암호 (4자리숫자 ) 를기입하면성적공고시학번대신암호를사용할것임. 1. JSP 란무엇인가? 간단히설명하라. (5 점 ) JSP (Java Server Page) 란동적인웹페이지를생성하기위한, 자바서블릿기반의서버스크립트기술 2. 다음 JSP 의동작원리를간단히설명하라. (5 점 ) 웹클라이언트에서 JSP 페이지 ( 예 : MyPage.jsp) 를 WAS(Web Application Server) 에요청하면, JSP Container에서 MyPage.jsp 를 MyPage_jsp.java 자바서블릿으로변환하고, MyPage_jsp.java 자바서블릿을컴파일하여 MyPage_jsp.class 클래스파일을생성하고, 클래스파일이메모리에적재되어실행되어, HTML 문서로응답한다. 3. JSP 생명주기 (Lifecycle) 에서사용되는메소드 jspinit(), _jspservice(), jspdestory() 가무엇인지간단히설명하라. (5 점 ) jspinit() 에서는클래스파일을초기화한다. 생명주기동안컨터이네에서한번만호출. _jspserver() 에서는생명주기동안서비스요청이 jsp에있을때마다여러번실행하여응답. jspdestroy() 에서생명주기동안 JSP instance가소멸될때 JSP 컨테이너에의해한번호출. 1/5
4. <jsp:forward /> 와 <jsp:include /> 액션태그의실행상의차이가무엇인지간단히설명하라. (5 점 ) <jsp:forward page= lab.jsp /> 액션태그는현재페이지의제어를다른페이지 ( 예 : lab.jsp) 로전달함 <jsp:include page= menu.jsp /> 액션태그는다른페이지 ( 예 : menu.jsp) 를현재 페이지에포함함 5. include 지시어 (directive) 와 include 액션태그 (action tag) 의차이점을간단히설명하라. (5 점 ) <%@ include file= menu.jsp %> 지시어는현재 JSP 파일에다른페이지 ( 예 : menu.jsp) 를 정적으로포함시킴. JSP 를자바소스로변환할때처리. 모든 JSP 페이지에서중복되는 문장에활용 <jsp:include page= menu.jsp /> 액션태그는다른페이지 ( 예 : menu.jsp) 를현재 페이지에동적으로포함함. 요청시간에처리. 화면의레이아웃의일부분을모듈화할때 사용 6. JSP 페이지안에서 java.util.* 패키지를 import 하는구문을작성하라. (5 점 ) <%@ page import= java.util.* %> 7. <%-- 주석 --%> 과 <!-- 주석 --> 의차이점을간단히설명하라. (5 점 ) <%-- 주석 --%> 은 JSP 주석처리. <!-- 주석 --> 은 HTML 형식의주석처리. 단 JSP 문법이사용된부분에는사용이불가함 2/5
8. 내장객체 (Implicit Object) 9개가무엇인지 ( 이름, 실제타입, 설명 ) 자세히설명하라. (10점) request HttpServletRequest 웹브라우저의 HTTP 요청정보를처리할때사용. 웹브라우저에서서버의 JSP 페이지로전달하는정보를저장 response HttpServletResponse 웹브라우저의 HTTP 요청에대한응답정보를저장 pagecontext javax.servlet.jsp.pagecontext JSP 페이지에대한정보를저장. session HttpSession 웹브라우저의정보를유지하기위한세션정보를저장 application javax.servlet.servletcontext 웹응용프로그램에관련된정보 ( 서버정보, 서버자원정보, 로그관련 ) 를저장 out javax.servlet.jsp.jspwriter JSP 페이지에출력할내용을담고있는출력스트림객체 config javax.servlet.servletconfig 현재 JSP 페이지의설정정보 ( 초기화변수등 ) 를저장 page java.lang.object JSP 페이지를구현한자바클래스인스턴스. exception java.lang.throwable 예외객체. 에러페이지에서사용 9. 자바빈즈작성규칙에따라멤버필드와 setter/getter 를작성하라. 빈즈클래스이름은 Product 이고멤버속성으로는 int id, String name, double price 가있다. (10 점 ) public class Product { private int id; private String name; private double price; public Product() { this(0, null, 0.0); public Product(int id, String name, double price) { this.id = id; this.name = name; this.price = price; public void setid(int id) { this.id = id; public int getid() { return id; public void setname(string name) { this.name = name; public String getname() { return name; public void setprice(double price) { this.price = price; public double getprice() { return price; public String tostring() { return Product [id= + id + name= + name + price= + price + ] ; 3/5
10. <jsp:usebean id= product class= dto.product scope= request /> 액션태그의자바코드변환을보여주고있다. 빈칸을채워라. (10 점 ) Product product = (Product)request.getAttribute( product ); if (product == null) { product = new Product(); request.setattribute( product, product); 11. <jsp:setproperty /> <jsp:getproperty /> 액션태그에서반드시사용해야하는속성 (attribute) 는무엇인가. 9 번문제의 Product 자바빈즈를이용하여예시를보여라. (10 점 ) setproperty는 name( 자바빈객체이름 ), property( 값을지정할프로퍼티이름 ), value( 프로퍼티값 ) 를반드시사용해야함. getproperty는 name( 자바빈객체이름 ), property( 값을가져올프로퍼티이름 ) 를반드시사용해야함. <jsp:usebean id= product class= dto.product scope= request /> <jsp:setproperty name= product property= id value= 101 /> <jsp:setproperty name= product property= name value= Notebook /> <jsp:setproperty name= product property= price value= 30.5 /> <jsp:getproperty name= product property= id /> <jsp:getproperty name= product property= name /> <jsp:getproperty name= product property= price /> 12. HTML의 <form> 태그에서정보전송방식인 POST와 GET의차이점을설명하라. (5점) <form name= add action= addprocess.jsp method= post > Id: <input type= text name= id /> Name: <input type= text name= name /> Price: <input type= text name= price /> </form> GET 방식은서버로데이터를전송할때 URL에데이터를포함하는방식. GET은 URL에데이터를이어붙이기때문에지정된자원에서데이터를요청하는데사용됨. POST 방식은서버로데이터를전송할때 URL에데이터를포함하지않는방식. 정보보안을요구할때사용됨. POST는많은양의데이터전송에사용됨. POST는서버의값이나상태를바꾸기위해서사용됨. 4/5
13. HTML 의 <form> 태그에입력된내용을처리하는 addprocess.jsp 이다. 다음빈칸에코드를완성하라. (10 점 ) String idstr = request.getparameter("id"); int id = 0; if (!idstr.isempty()) id = Integer.valueOf(idStr); String name = request.getparameter("name"); String pricestr = request.getparameter("price"); double price = 0.0; if (!pricestr.isempty()) price = Double.valueOf(priceStr); Product product = new Product(id, name, price); out.println(product + "<br>"); 14. HTML 의 <form> 태그에입력된내용을 DB 에추가하는 ProductDAO 클래스이다. 다음빈칸의코드를완성하라. (10 점 ) public int insert(connection conn, Product product) throws SQLException { PreparedStatement pstmt = null; try { String sql = "insert into product values (?,?,?)"; pstmt = conn.preparestatement(sql); pstmt.setint(1, product.getid()); pstmt.setstring(2, product.getname()); pstmt.setdouble(3, product.getprice()); return pstmt.executeupdate(); finally { if (pstmt!= null) { pstmt.close(); - 끝 - 5/5