ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSP/Servlet 기초지식
    카테고리 없음 2023. 12. 14. 17:13

    데이터출력 : JSP를 통해  HTML 문서형식으로 데이터를 출력해서 보여준다. 

     

    web.xml에 서버 정보가 들어있어 직접 접근할 수 있으면 안된다.

     

    PrintWriter 객체를 가져와서 out.print(" html 태그 ") 를 써서 html 태그를 사용해서 출력할 수 있다. 

     

    뭔가 일반적인 자바 문자열 출력과는 색다른 출력방식 같아서 좀 신기했다.

     

     

     

    쿼리스트링 

    사용자가 입력한 값을 서버로 가져오기 위한 단순한 방법. get 방식으로 요청햇을 때 URL 주소 뒤에

    리소스?이름=값 형식으로 데이터가 제공된다.

     

    ex ) ParamServlet?id=nonamed&age=15

    ParamServlet이 리소스 이름이고, id와 age가 이름(키) 이고, nonamed와 15가 값이다.

     

     

     


     

     

    request.getParameter

    requets 객체의 getParameter 메서드를 통해 String 형식으로 데이터를 받아올 수 있다.

    String 형식이 아닌 데이터의 유효성 검사를 하는 것은 브라우저에서 먼저 유효성 검사를 한 뒤 서버로 데이터를 가져오는 것이 더 효율적이다. 

     

    이를 위해 정규표현식, 데이터베이스의 제약조건 등을 사용할 수도 있다.

     

    request.getParameterValues

    여러개의 데이터를 문자열 배열로 받아온다.

     

    *response를 먼저 사용한 뒤에 request를 사용할 수는 없다.

    만약 그런 코드를 작성하면 응답이 이미 커밋된 후에는 forward할 수 없습니다. 라는 오류가 발생하게 된다.

     

     


     

     

    interface : 클래스를 설계도로 비유하곤 하는데, 인터페이스는 설계도의 설계도라고 생각하면 될 것 같다.  설계도들을 어떤 패턴으로 만들것인가? 를 정의하는 객체이다.

     

    클래스간에 관계를 정의할 때, 사용하는 메서드가 비슷한 경우 처럼 패턴이 비슷한 경우가 있다. 그럼에도 서로다른 클래스를 자료구조에 넣으려면 각자의 클래스타입의 객체를 넣어야 하는 불편함이 생긴다. 이 때 이 클래스들의 부모역할을 하는 추상 클래스 interface를 만들어서 자료구조에 똑같은 타입에 넣어 사용하면 데이터 관리에 유용하다.

     

    BoardController , NoticeController, MemberController 클래스가 똑같이 execute() 메서드를 가지고 있다고 치면

     

    Controller 인터페이스를 만들고, 그안에 execute() 추상메서드 (빈 메서드)를 만들면 된다.

     

     

     


     

    인터페이스(Interface) 예시

     

     

    package com.webjjang.main.controller;

     

    import javax.servlet.http.HttpServletRequest;

     

    public interface Controller {

    //구현을 하지 않음. {}가 없다

    public String execute(HttpServletRequest request);

     

    }

     

    부모가 되는 인터페이스 객체의 소스

     

     

     

     

     

     

     

    package com.webjjang.board.controller;

     

    import javax.servlet.http.HttpServletRequest;

     

    import com.webjjang.main.controller.Controller;

     

    public class BoardController implements Controller{

     

     

    @Override

    public String execute(HttpServletRequest request) {

    System.out.println("BoardController.execute() -----------");

    String jsp = "";

     

    return jsp;

    }

    }

    자식이 되는 클래스의 소스. 

Designed by Tistory.