Servlet(1) xml에서 servlet 지정 ,경로확인,req ,resp , out객체(웹에 내보낼 때)
<html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- servlet = Server + Applet -> ASP , PHP , JSP
java web C#
request
http://xxx.xxx.xxx.xxx.:8090/project명/html파일.html
PC ---------------- > 요청 Web Server ------------- > Web Container < ------------ > db
PC < -------------- web server < ----------- 찾음
response(응답): get(open) , post(close) 방식 차이
-->
get 방식과 post 방식의 차이점
get 방식은 url 을 통해 값들이 넘어가는 것이 보인다.
post 방식은 값은 넘어가지만 그 값 자체는 표시되지 않는다.
속도 get > post
<h1>servlet 기본</h1>
<form action="location" method="get"> //경로명(아무거나 써도 상관없지만 되도록이면 경로를 나타내는 단어로 쓴다. 그리고 xml 파일의 url 과 맞아야한다.)을 잡아주고 method 에 get or post 방식을 써줘야 전송되는 방식을 선택할 수 있다
<input type="submit" value="Get 방식">
</form>
<br><br>
<form action="location" method="post">
<input type="submit" value="Post 방식">
</form>
</body>
</html>
==================================================================
<xml>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!-- servlet class 등록 -->
<!-- 상수의 값을 선언 -->
<servlet>
<servlet-name>hello</servlet-name> //서블릿 이름을 hello 로 지정
<servlet-class>sample01.HelloServlet</servlet-class> <!-- 여기로 이동, 서블릿 파일 지정-->
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name> <!-- 연결고리 역할! 위에 servlet-name 과 같아야한다 제목이 --> //서블릿 이름을 hello 로 지정
<url-pattern>/location</url-pattern> <!-- 우리가 링크를 걸어줄 곳 html 파일의
form의 action 부분-->
</servlet-mapping>
</web-app>
==================================================================
<java>
package sample01; //패키지 안에 있어야 실행이 된다.
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet {
//doget , dopost 함수만 오버라이드 한 것
@Override //html 파일에서 버튼을 눌렀을 때 여기로 이동 해서 같은 방식인걸 호출한다.
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// req는 request( 요청) -서블릿이 요청하는 것, resp 는 response (응답) -서블릿이 응답해줌
System.out.println("헬러우 서블릿 두겟");
resp.setContentType("text/html; charset=utf-8"); // 글 설정
PrintWriter out = resp.getWriter();//웹에 내보낼 때 쓰는 객체 out
out.println("<html>");
out.println("<head>");
out.println("<title>Hello</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello Servlet</h1>");
out.println("</body>");
out.println("</html>");
out.close(); //닫아 줘야 한다.
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("헬러우 서블릿 두포스트");
//post 방식으로 사용하려면 이 공간에 코드를 적어줘야 post 방식으로 호출을 했을 떄
//동작한다.
}
}