Servlet
Servlet과 .jsp
Servlet-순수하게 자바 파일로만 만들어져 있음
.jsp는 자바파일로 변환이 되기 때문에 사실 둘이 같다.
특정 클래스를 상속받으면 자바파일을 서블릿으로 사용가능함.
java thread를 이용하여 동작.
자동으로 멀티스레드를 제공해준다.
스레드를 나누어 각각 처리해 준다. A라는 사람은 A방식대로, B라는사람은 B방식대로.
HttpServlet을 extends하고 serialVersionUID생성(상수)
하고 doget과 dopost 오버라이드
서블릿은 여러개가 있을 수 있고,
요청을 통해 각각의 클래스를 실행할 수 있게 해주어야 한다.
요청으로부터 연결시키기
1.첫번째방법-URL매핑
자바는 특정 단어로 연결하는 어노테이션 제공. 인터페이스로 만들어져있음
@WebServlet("/문자열")
클래스 선언부 바로 위에 작성
main이 없지만 어노테이션이 클래스를 연결해준다.
package com.example.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("/banana") //요청에 대하여 어노테이션으로 연결(고유)
public class TestServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
//특정클래스 오버라이드
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//System.out.println("헬로");
resp.setContentType("text/html; charset=UTF-8");
PrintWriter out =resp.getWriter();
out.println("헬로"); //컨텐츠타입
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
2.두번째방법-web.xml 설정파일 수정
자바클래스에 매핑을 설정해주는 방법
xml파일이란?
태그의 형식을 이용하여 저장된 속성값들을 사용하는것이 가능
태그처럼생겼고 태그사이에 있는 값을 받아옴
데이터를 전달하거나 특정파일을 설정하는 데 사용됨.
web.xml파일은 프로젝트 전체를 관장하는, 아주 중요한 파일임
<servlet>
<servlet-name>basic</servlet-name>
<servlet-class>kr.co.koo.ServletBasic</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>basic</servlet-name>
<url-pattern>/peach</url-pattern>
</servlet-mapping>
외우지 말고 해석할 것.
클래스에 이름을 붙여주고, peach라는 문자열로 매핑한다
※매핑은 당연히 둘 중 하나만 써야 한다.
※어노테이션은 고유해야 한다.
Deployment Descriptor.JSPBasic 우클릭 후
Generate Deployment Descriptor stub를 클릭하면
WEB-INF폴더에 web.xml이 생성된다
브라우저에서 실행할 때마다 console창에 sysout문자가 뜬다.
두번째방법은 spring에서 쓴다.
servlet
package com.example.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//web.xml에 맵핑설정
public class TestServlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("헬로");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) 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" version="4.0">
<display-name>JSPBasic</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>
<!-- TestServlet2를 appServlet으로 선언 -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>com.example.servlet.TestServlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/melon</url-pattern>
</servlet-mapping>
</web-app>
브라우저를 새로고침할 때마다 이클립스 콘솔창에 '헬로'가 출력된다.
'JSP' 카테고리의 다른 글
221129 HTML JSP GET방식 form태그 없이 (0) | 2022.11.29 |
---|---|
221129 HTML JSP HttpRequest (0) | 2022.11.29 |
221129 HTML JSP 지시자-import 실습 (0) | 2022.11.29 |
221129 HTML JSP 아키텍쳐 (0) | 2022.11.29 |
221129 HTML JSP 지시자-include (0) | 2022.11.29 |