서버15_xml 매핑 및 세미 후 복습

charl hi·2022년 1월 10일
0

서버

목록 보기
15/15

xml 매핑

  • 서블릿에 어노테이션하는 방법 대신 쓰이던 방법

  • xml에 아래를 추가, 어노테이션 없애기

  <servlet-mapping>
  	<url-pattern>/test</url-pattern>
  	<servlet-name>s01</servlet-name>
  </servlet-mapping>
  
  <servlet>
  	<servlet-name>s01</servlet-name>
  	<servlet-class>com.kh.controller.MyServlet</servlet-class>
  </servlet>



forward() vs. sendRedirect()

.

  1. 클라이언트가 새로 요청을 하는지 여부
  • forward() : X
  • sendRedirect() : O
  1. req,resp 객체가 새로 생성되는지 여부
  • forward() : X
  • sendRedirect() : O



-> 아직도 몰라서 정리

forward()

  • forward를 통해 다른 서블릿이나 jsp에 request객체와 response객체를 전달한다.


sendRedirect()

  • 클라이언트가 was에게 요청한 경로(요청 경로:/a)에 맞는 a서블릿(/a)이 응답으로 sendRedirect(경로:/b)를 한다고 가정한다.

  • 클라이언트는 이 응답에 맞는 경로(/b)로 다시 was에게 새로 요청(요청 경로:/b)한다.

-> ✨위아래 각 요청이 다르기에 request, response 객체도 새로 생성하는 것이다.




init() & destroy()

서블릿의 생명주기(life cycle)

init()

  • 클래스파일을 톰캣으로 읽어올 때의 서블릿 생명주기 시작점
  • 새로고침해도 다시 수행되지 않는다.
	//서블릿의 생명주기(life cycle)
	@Override
	public void init() throws ServletException {
		System.out.println("init called ...");


destroy()

  • 서블릿이 파괴될 때 수행
  • 서블릿이 파괴될 때 : 톰캣 종료(빨간 정지 버튼)
	public void destroy() {
		System.out.println("destroy..");
	}



메소드의 실행 순서

init() - service() - doGet() || doPost() - destroy()


service()

  • doGet이든 doPost든 상관없이 처리해야 할 때
  • ✨ service()가 기본적으로 받아옴 -> 그후 doGet, doPost
  • ✨✨단!! service()에서 doGet()등을 호출해야 doGet()이 수행된다.
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("service called ...");
//		아래를 해야 doGet()이 호출된다!!!
		doGet(req, resp);
	}



response.getWriter().write("...")

  • 서블릿
@WebServlet("/test")
public class MyServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet called...");
//		리퀘스트에서 인코딩
		request.setCharacterEncoding("UTF-8");
//		리스폰스에서 인코딩
		response.setContentType("text/html; charset=UTF-8");
		response.getWriter().write("zzzz한글!~!~!~!~!");
	}
  • index.jsp





액션태그 활용, forward()

  • 서블릿
@WebServlet("/test")
public class MyServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet called...");
//		리퀘스트에서 인코딩
		request.setCharacterEncoding("UTF-8");
//		리스폰스에서 인코딩
		response.setContentType("text/html; charset=UTF-8");
		response.getWriter().write("zzzz한글!~!~!~!~!");
		RequestDispatcher x = request.getRequestDispatcher("/index.jsp");
		x.forward(request, response);
	}

  • index.jsp
<jsp:forward page="home.jsp"></jsp:forward>


  • home.jsp





0개의 댓글