학원/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();		
	}	
}

jsp 파일이고
url잘 보면 맵핑한 그 url주소가 뜸 !! 오!! 이런거구나 !!