반응형
SMALL
서블릿(Servlet) 클래스 작성하기
- javax.servlet.http.HttpServlet 클래스를 상속받는다.
- public으로 선언해준다.
public으로 선언해야 하는 이유는 웹 컨테이너가 서블릿 객체를 만들 때 이 접근 권한이 필요하기 때문이다.
package first;
import javax.servlet.http.HttpServlet;
public class FirstServelt extends HttpServlet{
}
서블릿 안에 doFet , doPost 선언
- doGet(HttpServletRequest req, HttpServletResponse resp) //doGet 의 매개변수
- doPost(HttpServletRequest req, HttpServletResponse resp) //doPost 의 매개변수
- javax.servlet.ServletException과 java.io.IOException을 던질 수 있도록 선언
package first;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FirstServelt extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
response.setContentType("text/html; charset=utf-8");
//response.setContentType("출력된 문서타입; charset=인코딩");
//서블릿에서 한글은 출력되지 않고 깨져 보이게 되는데 이때 인코딩(charset=utf-8)과 출력될 문서 타입(text/html)을 추가하면 한글이 제대로 출력이 됩니다.
- HttpServletResponse resp 이 매개변수의 객체에서 getWriter 메서드를 호출
PrintWriter out = resp.getWriter();
package first;
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 FirstServelt extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int total= 0;
for(int i = i; i <= 10; i++) {
total += i;
}
resp.setContentType("text/html; charset=utf-8");
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<body>");
out.printf("1부터 10까지 숫자의 곱은 = %d", total);
out.println("</body>");
out.println("</html>");
}
}
web.xml 파일에 서블릿(Servlet) 등록하기
- web.xml 파일은 웹 애플리케이션 디렉토리마다 딱 하나씩만 만들수 있습니다. 경로는 webapps/WEB-INF/web.xml 입니다.
- web.xml 파일을 새로 만들 때는 루트 요소인 을 만드는 일부터 시작하는 것이 좋습니다.
<web-app>
<servlet>
<!-- 서블릿 클래스의 이름이 들어갈 부분 -->
</servlet>
<servlet-mapping>
<!-- 서블릿 클래스를 호출할 때 사용할 URL이 들어갈 부분 -->
</servlet-mapping>
</web-app>
<servlet>
<servlet-name>FirstServelt-servlet</servlet-name>
<servlet-class>first.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServelt-servlet</servlet-name>
<url-pattern>/FirstServelt</url-pattern>
</servlet-mapping>
</web-app>
모든 web.xml파일 안에는 반드시 써 넣어야 하는 두 가지 정보가 포함되어 있는데, 하나는 web.xml 파일의 작성에 사용된 문법의 식발자이고, 다른 하나는 그 문법의 버전입니다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="4.0"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
<servlet>
<servlet-name>FirstServelt-servlet</servlet-name>
<servlet-class>first.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServelt-servlet</servlet-name>
<url-pattern>/FirstServelt</url-pattern>
</servlet-mapping>
</web-app>
- Servers 탭의 tomcat v9.0 Server at localhost를 클릭 하고 오른쪽 끝에 위치한 실행 버튼을 클릭하면 웹서버가 실행
1부터 10까지 숫자의 합은 = 55
@WebServlet 애너테이션
package first;
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("/alswo")
public class FirstServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int total= 0;
for(int i = 0; i <= 10; i++)
total += i;
resp.setContentType("text/html; charset=utf-8");
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<body>");
out.printf("1부터 10까지 숫자의 곱은 = %d", total);
out.println("</body>");
out.println("</html>");
}
}
웹 브라우저로부터 데이터 입력 받기
- XML 문법의 기초
<?xml version="1.0" encoding="UTF-8"?>
<!--첫째. XML 선언은 XML 문서 작성에 사용된 XML 규격서의 버전과 XML 문서를 저장하는 데 사용된 문자 코드의 인코딩 방식을 표시하는 역할을 합니다.-->
- 요소를 통해 입력된 데이터는 doGet, doPost 메서드의 첫 번째 매개변수인 HttpServletRequest 객체에서 getParameter 메서드를 호출해서 가져오기
package myservlet;
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;
public class AdderServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String str1 = req.getParameter("num1");
String str2 = req.getParameter("num2");
int num1 = Integer.parseInt(str1);
int num2 = Integer.parseInt(str2);
int sum = num1 + num2;
resp.setContentType("text/html; charset=utf-8");
PrintWriter out= resp.getWriter();
out.println("<html>");
out.println("<head><title>덧셈 프로그램 - 결과화면</title></head>");
out.println("<body>");
out.printf("%d + %d = %d", num1, num2, sum);
out.println("</body>");
out.println("</html>");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="4.0"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
<servlet>
<servlet-name>AdderServlet-Servlet</servlet-name>
<servlet-class>myservlet.AdderServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AdderServlet-servlet</servlet-name>
<url-pattern>/Adderservlet</url-pattern>
</servlet-mapping>
</web-app>
url : http://localhost:3001/study/AdderServlet?num1=10&num2=20
실행결과 : 10 + 20 = 30
'Servlet-Jsp' 카테고리의 다른 글
운동기록프로그램(servlet-jsp) Service 부분 #3 (0) | 2022.08.07 |
---|---|
운동기록프로그램(servlet-jsp) 데이터베이스 구성 #2 (0) | 2022.08.07 |
운동기록프로그램(servlet-jsp) #01 (0) | 2022.08.07 |
fmt:formatDate 커스텀 액션(JSP) (0) | 2022.08.04 |
웹 기초 (0) | 2022.07.24 |
댓글