학원/JSP
11/22 48-2 [JSP] ResponseForContent(서블릿에서 바로출력)
도원결의
2022. 11. 22. 19:37
JSP 페이지 에서는 response객체의 setContentType()메소드가 불 필요.
page지시어에 속성(contentType)으로 설정해 놓았기 때문에....
단, 서블릿에서 페이지 이동을 안 하고 직접 서블릿 자체에서 웹브라우저에 출력 시에는 반드시 설정해줘야 한다.
[서블릿에서 직접 브라우저로 출력하기]
서블릿으로 요청을 보낼 때 링크 거는 방법
절대경로: /Context루트/이후는 마음대로
단,web.xml의 url-pattern요소에서는 Context루트를 제외한 / 로 시작
<h3>서블릿에서 직접 브라우저로 출력</h3>
<a href="<%=request.getContextPath()%>/Anidir/Somedir/SetContentType.kosmo">서블릿으로 요청 보내기</a>
근데 이경로에 서블릿을 만든 적이 없음
그래서 만들거임
web.xml로 가서 직접 서블릿을 제작 했음...
<servlet>
<servlet-name>CONTENT-TYPE</servlet-name>
<servlet-class>controller.ContentTypeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CONTENT-TYPE</servlet-name>
<url-pattern>/Anidir/Somedir/SetContentType.kosmo</url-pattern>
</servlet-mapping>
아직 맵핑을 배운건 아니지만 저번에 고생했던 걸 생각해 보면
위에 서블릿은 내가 만든 그 서블릿 그 경로고
그리고 맵핑은 그 서블릿으로 가능 경로를 연결 해 주는 느낌 적인 ... 느낌? 이렇게 링크를 거는 건가 봄 !
이게 위에 있는 그 말인가보구나!!!!
절대경로: /Context루트/이후는 마음대로
단,web.xml의 url-pattern요소에서는 Context루트를 제외한 / 로 시작
이거!!!!!
직접 만든 서블릿파일!! 코드
package controller;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
public class ContentTypeServlet extends HttpServlet {
//jsp로 페이지 이동 안하고 서블릿에서 웹브라우저로 바로 출력
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
//출력하기위한 출력 스트림 생성
PrintWriter out = resp.getWriter();
//웹브라우저로 출력
out.println("<h2>서블릿에서 웹브라우저로 출력하기</h2>");
//스트립닫기
out.close();
}
}