Basic/Web

servlet 예제2 doget dopost

카고형 2020. 2. 21. 16:06
728x90
servlet 예제2 doget dopost


일단은  새 프로젝트를 생성


다음 창에 이름은 HelloWeb 으로 하고  




Next 을 누르다 보면  이런 창이나오면 Generate web.xml ... 옵션을 선택 해줍니다.



그리고 나서 생성된 프로젝트를 보면  WEB-INF 밑에 web.xml 파일이 만들어진것 을 볼수있습니다




자 생성 됬으니 WebContent 에 html 파일을 생성 합시다 
WebContent 우클릭 >> new >> html file >>  file name



index.html
<!DOCTYPE html>
<html>
        <!-- 은 주석 입니다 -->
       <!--  head: 페이지에 관한 각종 정보들을 담고 있음 -->
       <head>
       <meta charset="UTF-8">
       <title>Hello Web</title>
       </head>
       <!--  body: 실제 화면에 렌더링 되는 영역 -->
       <body>
             <!--  h1 ~ h6: Headline 태그 -->
             <h1>Hello Web World</h1>
             <h3>Static HTML Page</h3>
             
             <!--  p: 문단 -->
             <p>이것은 정적 HTML 문서입니다.</p>
             
             <!--  hr: 가로줄 -->
             <hr />
       
       </body>
</html>

바로 실행 f11 하면  실행 결과가 
바로 이렇게 나옵니다



다음에는 jsp 파일 을 만들겁니다.
WebContent 우클릭 >> new >> JSP file 

이름은 hello 라고 하고,  이렇게 작성 해주세요

hello.jsp
<%@ page language="java"
       contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
       <html>
       <head>
       <meta charset="UTF-8">
       <title>Hello JSP</title>
       </head>
       <body>
             <h1>Hello JSP</h1>
             <h3>Dynamic Web Page</h3>
             <%-- name 파라미터를 전달 받아서 표시 --%>
             <%
             String name = request.getParameter("name");
             %>
             <p>Hello, <%= name %></p>
       </body>
</html>

실행 결과는 

null은 name 을 파라미터로 받는다고 했는데 값이 없기때문에 null 이라고 나온것
hello.jsp 뒤에 ?name=이름 이런식으로 쓰면  값을 보내줄수 있음


이렇게 나왔고 null 값이 안나오게  if 문을 써서 해결 하고


<%@ page language="java"
       contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
       <html>
       <head>
       <meta charset="UTF-8">
       <title>Hello JSP</title>
       </head>
       <body>
             <h1>Hello JSP</h1>
             <h3>Dynamic Web Page</h3>
             <%-- name 파라미터를 전달 받아서 표시 --%>
             <%
             String name = request.getParameter("name");
             
             
             if (name == null){
                    name = "이름없는 사자";
             }
             %>
             <p>Hello, <%= name %></p>
       </body>
</html>



링크추가 하는법


이번에는 하이퍼텍스티(링크) 추가 하는것입니다
    <!-- a: 하이퍼텍스트(링크) -->
    <a href="hello.jsp?name=cago">Hello.jsp로 이동</a>
    


index.html

<!DOCTYPE html>
<html>
       <!--  head: 페이지에 관한 각종 정보들을 담고 있음 -->
       <head>
       <meta charset="UTF-8">
       <title>Hello Web</title>
       </head>
       <!--  body: 실제 화면에 렌더링 되는 영역 -->
       <body>
             <!--  h1 ~ h6: Headline 태그 -->
             <h1>Hello Web World</h1>
             <h3>Static HTML Page</h3>
             
             <!--  p: 문단 -->
             <p>이것은 정적 HTML 문서입니다.</p>
             
             <!-- a: 하이퍼텍스트(링크) -->
             <a href="hello.jsp?name=cago">Hello.jsp로 이동</a>
             <!--  hr: 가로줄 -->
             <hr />
       </body>
</html>

이렇게 추가하면 방금 만든 hello.jsp 파일로 넘어갈수있는 링크 를 만들수 있습니다.
실행 결과는

 

Heloo.jsp로 이동을 누르면


<a href="hello.jsp?name=cago">
위 이렇게 넘어간것을 확인 할 수 있어어요.




java Resources >> src  밑에 클래스 생성



Browse.. 클릭
-



다음 창에서 httpServlet 이라 치고 선택


클래스를 만들고

생성된 창에서 우클릭후  Source >> override/implement Methods... 클릭 해줍니다



do get 을 선택 후 Override 해주면 됩니다

HelloServlet.java
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 {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 기본적인 응답 정보 출력
        resp.setContentType("text/html;charset=UTF-8");
        
        // 파라미터를 전달
        String name = req.getParameter("name");
        if(name == null) {
            name = "이름이 없당";
        }
        
        // 응답 출력
        PrintWriter out = resp.getWriter();
        out.println("<h1>Hello Servlet</h1>");
        out.println("<h3>이것은 Servlet으로 작성되었습니다.</h3>");
        out.println("<p>Hello, " + name + "</p>");
    }


}




이제 는 web.xml 파일 로가서

web.xml
<?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_3_1.xsd" id="WebApp_ID"  version="3.1">
  <display-name>HelloWeb</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>
  
  <!--  서블릿 등록 -->
  <servlet>
       <!--  Servlet 클래스 등록 -->
       <servlet-name>FirstServlet</servlet-name>
       <servlet-class>HelloServlet</servlet-class>
  </servlet>
  
  <!--  서블릿 매핑 등록 -->
  <servlet-mapping>
       <servlet-name>FirstServlet</servlet-name>
       <url-pattern>/hs</url-pattern>
  </servlet-mapping>
</web-app>

Get 전송
Post 전송

index.html
<!DOCTYPE html>
<html>
       <!--  head: 페이지에 관한 각종 정보들을 담고 있음 -->
       <head>
       <meta charset="UTF-8">
       <title>Hello Web</title>
       </head>
       <!--  body: 실제 화면에 렌더링 되는 영역 -->
       <body>
             <!--  h1 ~ h6: Headline 태그 -->
             <h1>Hello Web World</h1>
             <h3>Static HTML Page</h3>
             
             <!--  p: 문단 -->
             <p>이것은 정적 HTML 문서입니다.</p>
             <!-- a: 하이퍼텍스트(링크) -->
             <a href="hello.jsp?name=cago">Hello.jsp로 이동</a>
             <!--  hr: 가로줄 -->
             <hr />
             
             <h4>GET 전송</h4>
             <a href="/HelloWeb/hs?name=cago">HelloServlet Get 호출</a>
             
             <h4>Post 전송</h4>
             <form action="/HelloWeb/hs"
                     method="POST">
                     성(Family Name) <input type="text" name="last_name"><br/>
                     이름(First Name) <input type="text" name="first_name"><br/>
                     
                     <input type="submit" value="전송">
                     <input type="reset" value="다시작성">
             
             </form>
       </body>
</html>



실행 결과는 이렇게 나오고 


post 전송은 되진않아요 이제 post 전송도 하러 갑시다

HelloServlet.java 로 가서
아까 doget 한것 처럼 dopost 를 선택하고 작성해주면 됩니다

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 {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 기본적인 응답 정보 출력
        resp.setContentType("text/html;charset=UTF-8");
        
        // 파라미터를 전달
        String name = req.getParameter("name");
        if(name == null) {
            name = "이름이 없당";
        }
        
        
        // 응답 출력
        PrintWriter out = resp.getWriter();
        out.println("<h1>Hello Servlet</h1>");
        out.println("<h3>이것은 Servlet으로 작성되었습니다.</h3>");
        out.println("<p>Hello, " + name + "</p>");
    }


    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // POST 요청 처리
                resp.setContentType("text/html;charset=UTF-8");
                
                // 요청 정보 Encoding
                req.setCharacterEncoding("UTF-8");
                
                // 파라미터 받아오기
                String firstName = req.getParameter("first_name");
                String lastName = req.getParameter("last_name");
                
                // 응답 결과 출력
                PrintWriter out = resp.getWriter();
                out.println("<h1>Form Post Data 처리</h1>");
                out.println("<p>first name:" + firstName + "</p>");
                out.println("<p>last name:" + lastName + "</p>");






    }
    

작성 을 다 했으면 실행 해줍니다 

성 과 이름 에 문자 를 기입 하고 전송을 누르면 



이런식으로  post 로 받을 수 있습니다 꿑










728x90

'Basic > Web' 카테고리의 다른 글

[JScript] 출력 관련  (0) 2022.06.22
Maven 이란?  (0) 2020.04.28
Servlet 예제1  (0) 2020.02.18
JSP 동작순서 및 예제  (0) 2020.02.13
HTML form tags 예제  (0) 2020.02.12