--> 클라이언트와 소통하기 위함
특징
서블릿을 구성하는 3대 클래스
요청 방식
서블릿에서 제공하는 클래스 찾아보기
https://tomcat.apache.org/
-->
Documentation 에서 설치한 버전 Tomcat 9.0 선택
-->
Reference에서 Servlet 4.0 Specification and Javadoc 이 있는데 Javadoc 클릭 ~
-->
서블릿에서 제공하는 클래스들이므로 링크 저장해두고 보기
https://javaee.github.io/javaee-spec/javadocs/javax/servlet/package-summary.html
ex) 만약 HttpServlet 관련해서 찾아보려면
CLASS --> FRAMES --> packages 에서 javax.servlet.http 클릭
--> Classes의 HttpServlet 클릭
File --> New --> Other --> Server 선택 후 Next
톰캣 서버를 선택후 Next
Available 에 있는 프로젝트를 Configured 로 Add 시키고 Finish
File --> New --> Dynamic web project
프로젝트 이름과 버전 설정후 Next 를 하다보면 Generate web.xml deployment descriptor 에 체크하는 부분이 있는데 이를 체크하고 Finish
File --> Dynamic web project --> 프로젝트 이름과 버전 설정 --> Finish
좌측에서 Servers 폴더를 누르면 Tomcat 폴더가 있는데 그 안의 파일중 web.xml 을 복사해서 ServletTest/src/main/webapp/WEB-INF/lib 위치에 붙여넣어주기
WEB-INF 폴더에 html 파일 만들기
<test1.html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/ServletTest/test1" method="GET">
이름 : <input type="text" name="name"/><br/><br/>
주소 : <input type="text" name="addr"/><br/><br/>
<input type="submit" value="전송"/>
</form>
<br/><br/>
<form action="/ServletTest/test1" method="POST">
이름 : <input type="text" name="name"/><br/><br/>
주소 : <input type="text" name="addr"/><br/><br/>
<input type="submit" value="전송"/>
</form>
</body>
</html>
ServletTest 에 class 생성하기
--> class 생성하면 자동적으로 소스파일이ServletTest/src/main/java위치로 생성됨 !
<Test1Servlet.java>
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test1Servlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out = null;
try{
// 인코딩 설정
req.setCharacterEncoding("euc-kr");
resp.setCharacterEncoding("euc-kr");
// 클라이언트에서 전달받은 데이터 가져오기
String name = req.getParameter("name");
String addr = req.getParameter("addr");
// 응답을 위한 PrintWriter 객체 생성
out = resp.getWriter();
out.println("<html><body>");
out.println("<h1>Request Test</h1>");
// 페이지에 출력할 내용 작성
if(req.getMethod().equals("POST")){
out.println("이것은 Post방식으로 처리된 내용입니다.<br>");
}
out.println("당신이 보낸 데이터는 다음과 같습니다");
out.println("이름은 " + name + "이고 주소는 " + addr + "이다. ");
out.println("</body></html>");
}
catch(Exception e) {}
finally{
out.close();
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
web.xml 에서 서블릿 매핑하기
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>ServletTest</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>
<servlet>
<!-- TestServlet1 test1 = new Test1Servlet() -->
<servlet-name>test1</servlet-name>
<servlet-class>Test1Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test1</servlet-name>
<url-pattern>/test1</url-pattern>
</servlet-mapping>
</web-app>
-->
WEB-INF 폴더에 html 파일 만들기
<test2.html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> 성적 처리 프로그램 </h1>
<form action="/ServletTest/sungjuk">
<!-- 각각의 성적 입력 필드 + 필드이름 + 빈값이 입력되면 알림이 뜨도록 하는 required -->
국어 : <input type="text" name="kor" required="required"/><br/><br/>
영어 : <input type="text" name="eng" required="required"/><br/><br/>
수학 : <input type="text" name="mat" required="required"/><br/><br/>
<!-- 체크된 상태로 초기화 시키는 checked -->
<input type="radio" name="calc" value="tot" checked="checked"> 총점
<input type="radio" name="calc" value="avg"> 평균 <br><br>
<input type="submit" name="전송"/>
</form>
</body>
</html>
ServletTest 에 class 생성하기
<SungjukServlet.java>
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SungjukServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int kor = Integer.parseInt(req.getParameter("kor"));
int eng = Integer.parseInt(req.getParameter("eng"));
int mat = Integer.parseInt(req.getParameter("mat"));
String calc = req.getParameter("calc");
int result = 0;
if(calc.equals("tot"))
result = (kor+eng+mat);
else
result = (kor+eng+mat) / 3;
PrintWriter out = resp.getWriter();
out.println("<html><body>");
out.println("결과 : " + result);
out.println("</body></html>");
out.close();
}
}
web.xml 에서 서블릿 매핑하기
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>ServletTest</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>
<!-- SungjukServlet test2 = new SungjukServlet() -->
<servlet>
<servlet-name>test2</servlet-name>
<servlet-class>SungjukServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test2</servlet-name>
<url-pattern>/sungjuk</url-pattern>
</servlet-mapping>
</web-app>