1. servlet이란? 실습

톰켓을 서블릿 콘테이너, 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;

/**
* Servlet implementation class HelloServlet
*/
@WebServlet({ "/hello" }) //얘는 표준은 아니다. web.xml을 열어서 해야함!
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);
// doPost를 doGet로 처리

}
}

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);
}

}
Share