//FirstServlet.java
package ex2;
import java.io.IOException;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
//이동방식, forward, redirect : 주체객체는 -request, response객체
@WebServlet("/first")
public class FirstServlet extends HttpServlet{
private ServletContext ctx;
//생성을 하고
@Override
public void init() throws ServletException {
ctx = getServletContext();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("FirstServlet 실행 됨");
//페이지 이동 : redirect
//실험 1) request일때 request A와 B간의 forward 이동방식일 때 scope의 값이 유지된다.
// req.setAttribute("msg", "테스트1");
ctx.setAttribute("mymsg", "abc");
// ctx.getAttribute("mymsg"); /* => second에서 불러서 출력해보기 */
// String mymsg = ctx.getInitParameter("mymsg");
resp.sendRedirect("second");
}
}
//SecondServlet.java
package ex2;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/second")
public class SecondServlet extends HttpServlet{
String msg1;
String mymsg1;
private ServletContext ctx;
@Override
public void init() throws ServletException {
ctx = getServletContext();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//req.setAttribute("key","value"); => req.getAttribute("key")
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
// msg1=req.getParameter("msg1");
// mymsg1=req.getParameter("mymsg1");
// System.out.println("여기는 SecondServlet");
PrintWriter out = resp.getWriter();
out.println("<ul>");
out.println("<li>"+ ctx.getAttribute("mymsg")+"</li>");//redirect에서는 새로운 req,resp가 생성되므로 msg가 null이 된다
out.println("</ul>");
}
}