톰캣 : 웹서버 = WAS
[톰캣 프로젝트(servelt container) 구동 중]
hello1 / hello2 / index.jsp
톰캣이 경로를 찾아서(프로젝트 이름을 읽어서) extends HttpServlet
채팅 소켓
1.서블릿 컨테이너를 만들면서 환경 web.xml을 읽어들인다. (개발자)
2.서블릿 파일을 메모리로 올린다.
3.jsp=servelt
*jsp파일도 서블릿파일로 변환된다.
.jsp → .java가 되는 것
[계산] package edu.global.ex; 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; // Servlet을 상속받아서 Servlet 파일이라 부른다. /** * Servlet implementation class HelloWorld */ @WebServlet("/hw3") // http://localhost:8282/servelt_example/hw3 public class HelloWorld3 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public HelloWorld3() { super(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub // response.getWriter().append("Served at: ").append(request.getContextPath()); response.getWriter().append("==============================="); response.getWriter().append("<br><h1>This is a rsp game.</h1><br>"); response.getWriter().append("==============================="); System.out.println("메롱"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
[결과값] 3월 24, 2023 10:20:34 오전 org.apache.catalina.core.StandardContext reload 정보: 이름이 [/servelt_example]인 컨텍스트를 다시 로드하는 작업이 시작되었습니다. 3월 24, 2023 10:20:34 오전 org.apache.catalina.core.StandardContext reload 정보: 이름이 [/servelt_example]인 컨텍스트를 다시 로드하는 것을 완료했습니다. 메롱
web.xml = 환경 설정 파일 =
누가 언제 읽어서 메모리에 올릴까 : 톰캣(웹서버,WAS)
<?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" id="WebApp_ID" version="4.0">
<display-name>servelt_example</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>
</web-app>
[계산] <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> </head> <body> index 파일 입니다. </body> </html>
[결과값] http://localhost:8282/servelt_example/ http://localhost:8282/servelt_example/index.jsp ⇒web.xml로 인해 주소창에 디폴트 페이지만 기재해도 열린다. (파일 이름을 기재하지 않아도 됨)
[계산 : html파일] <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action = "FormEx" method="get"> 이름 : <input type="text" name="name" size=10></br> ID : <input type="text" name="id" size=10></br> <input type="submit" value="전송"> <input type="reset" value="리셋"> </form> </body> </html> [계산 : java파일] package edu.global.ex; 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; // Servlet을 상속받아서 Servlet 파일이라 부른다. /** * Servlet implementation class HelloWorld */ @WebServlet("/FormEx") // http://localhost:8282/servelt_example/formex public class formex extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public formex() { super(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // html에서 method가 get방식이면 해당 메소드 실행 System.out.println("doGet() .."); System.out.println(request.getRemoteAddr()); System.out.println(request.getRemoteHost()); request.setCharacterEncoding("UTF-8"); // 이름 : <input type="text" name="name" size=10></br> name에 적혀있는 데이터와 동일하게 써야한다. String name = request.getParameter("name"); String id = request.getParameter("id"); System.out.println(name); System.out.println(id); response.setContentType("text/html; charset=EUC-KR"); // 한글 지원 PrintWriter writer=response.getWriter(); writer.print("<html><head></head><body>"); writer.print("아이디:" + id + "<br/>"); writer.print("이름:" + name + "<br/>"); writer.print("</body></html>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // html에서 method가 post방식이면 해당 메소드 실행 System.out.println("doPost() .."); System.out.println(request.getRemoteAddr()); System.out.println(request.getRemoteHost()); request.setCharacterEncoding("UTF-8"); // 이름 : <input type="text" name="name" size=10></br> name에 적혀있는 데이터와 동일하게 써야한다. String name = request.getParameter("name"); String id = request.getParameter("id"); System.out.println(name); System.out.println(id); response.setContentType("text/html; charset=EUC-KR"); // 한글 지원 PrintWriter writer=response.getWriter(); writer.print("<html><head></head><body>"); writer.print("아이디:" + id + "<br/>"); writer.print("이름:" + name + "<br/>"); writer.print("</body></html>"); } }
[결과값] 한글처리 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=EUC-KR");
문자열 0|0|0|0|0|0|3|5|6|5|1|2|0|
INDEX값 |0|1|2|3|4|5|6|7|8|9|10|11|12|