톰켓을 서블릿 콘테이너, WAS라 부른다.
JSP - HTML을 아는사람들이 쉽게 만들 수 있는것. 결국 이도 서블릿 클래스로 변한다. 톰캣은 web.xml파일의 매핑 정보를 보고 요청에 대한 응답을 날려준다.
서버 생성하고 - 프로젝트 익스플로러 탭에서 우클릭- web프로젝트 생성 - next-next-맨 아래 체크 - finish
이클립스가 프로젝트명.war파일을 올려놓으면 톰켓이 그것을 풀어서 활용한다.
web-info는 찾아갈 수 없다.
실습 1 서버 생성하고 - 프로젝트 익스플로러 탭에서 우클릭- web프로젝트 생성(이름:helloweb) - next-next-맨 아래 체크 - finish 이미지파일을 Web-Content안에 넣는다. 서버 우클릭 add and remove 클릭 서버실행 (에러난다 8080쓰고 있어서 에러남(오라클)) 서버패키지의 server.xml 파일을 찾아가 65라인의 8080을 8088로 수정http://localhost:8088/helloweb/java.png 접속해보자
WebContent 우클릭 후 jsp 파일생성하고 접속해보자 hello.jsp 생성http://localhost:8088/helloweb/hello.jsp 접속해보자
WebContent 우클릭 후 images 폴더생성 그안에 이미지 붙여넣자http://localhost:8088/helloweb/images/java.png 접속해보자
java Resource에 com.bigdata2017.helloweb.servlet패키지를 생성하자. 패키지 선택하고 우클릭 서블릿 생성 HelloServlet로 하고 next - URL mapping에 add 선택- /hello 입력- next - doget , dopost 선택 후 finish
HelloServlet.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 package com.bigdata2017.helloweb.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet({ "/hello" }) public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L ; protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=utf-8" ); PrintWriter pw = response.getWriter(); pw.println("<h1>Hello World</h1>" ); } protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
http://localhost:8088/helloweb/hello 에 접속해보자
JSP 로만 짜는것 -모델1 JSP - servlet 를 혼용해서 짜는것을 모델2 MVC라고 한다.
실습2 HelloServlet.java의 @WebServlet({ “/hello” })을 지우고 해보자 어노테이션을 이용한 것이 표준은 아니다. web.xml파일을 열자
web.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xmlns ="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation ="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id ="WebApp_ID" version ="3.0" > <display-name > helloweb</display-name > <welcome-file-list > <welcome-file > index.html</welcome-file > <welcome-file > index.htm</welcome-file > <welcome-file > index.jsp</welcome-file > <welcome-file > default.html</welcome-file > <welcome-file > default.htm</welcome-file > <welcome-file > default.jsp</welcome-file > </welcome-file-list > <servlet > <servlet-name > HelloServlet</servlet-name > <servlet-class > com.bigdata2017.helloweb.servlet</servlet-class > </servlet > <servlet-mapping > <servlet-name > HelloServlet</servlet-name > <url-pattern > /hello</url-pattern > </servlet-mapping > </web-app >
실습3 jsp는 서블릿 코드가 내장되어있다고 생각하면 된다.
WebContent의 우클릭 후 table.jsp 생성
table.jsp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String sRow = request.getParameter( "r" ); String sCol = request.getParameter( "c" ); int nRow = Integer.parseInt( sRow ); int nCol = Integer.parseInt( sCol ); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" > <html > <head > <meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8" > <title > Insert title here</title > </head > <body > <table border ="1px" cellspacing =0 cellpadding ="10px" > <% for(int i = 0; i< nRow; i++){ %> <tr > <% for(int j=0; j<nCol;j++) { %> <td > cell(<%=j %>,<%=i %>)</td > <td > cell(<%=j %>,<%=i %>)</td > <td > cell(<%=j %>,<%=i %>)</td > <% } %> </tr > <% } %> </table > </body > </html >
실습4 실습3과 동일한 코드를 서블릿으로 작성해보자
TableServelt.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 package com.bigdata2017.helloweb.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet({ "/table" }) public class TableServelt extends HttpServlet { private static final long serialVersionUID = 1L ; protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String sRow = request.getParameter( "r" ); String sCol = request.getParameter( "c" ); int nRow = Integer.parseInt( sRow ); int nCol = Integer.parseInt( sCol ); response.setContentType( "text/html; charset=utf-8" ); PrintWriter out = response.getWriter(); out.println("<table border=\"1px\" cellspacing=0 cellpadding=\"10px\">" ); for (int i=0 ; i< nRow; i++) { out.println("<tr>" ); for (int j=0 ; j<nCol; j++) { out.println("<td>cell(" +j+"," + i + ")</td>" ); } out.println("</tr>" ); } out.println("</table>" ); } protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }