MIME-TYPE
MIME-TYPE는 톰켓 컨테이너에서 미리 설정해 놓은 데이터 종류들을 말한다.
서버에서 자바의 I/O 스트림 클래스를 이용하여 웹 브라우저로 데이터를 전송할 때 지정하는 형식이다.
ex.) HTML로 전송할 때 : text/html
와 같은 형식이다.
서블릿의 응답처리 예제
서블릿에서 응답처리를 할 때는 다음과 같다.
- MINE-TYPE을 지정한다.
- 자바 I/O 스트림을 이용해 데이터를 출력할
PrintWriter
객체를 생성한다. - 출력 데이터를 HTML형식으로 작성하고
PrintWriter
객체를 이용하여 데이터를 출력한다.
protected void doGet(HttpServletRequest request, HttpServletResponse response){
request.setCharacterEncoding("utf-8"); // utf-8형식으로 지정
response.setContentTpye("text/html;charset=utf-8"); // MINE-TYPE을 지정해준다
PrintWriter out = response.getWriter(); // PrintWriter 객체를 이용하여 I/O로 데이터를 출력하기 위해 객체를 생성한다.
//...
//...
out.print(data); // I/O 스트림으로 데이터를 출력
}
서블릿에서 비지니스 로직 처리방법
비지니스 로직이란?
- 서버가 클라이언트로부터 요청을 받을 때 그 요청에 대해 작업을 수행하는 것을 의미한다.
- 대부분의 비지니스 처리 작업은 데이터 베이스 연동 관련 작업이다.
DB(DataBase)를 연결하기 위해서는 MemberDAO
와 MemberVO
클래스가 사용이된다.
서블릿으로 회원정보를 조회할 때의 과정을 다음 그림과 같다.
- 웹브라우저가 서블릿에게 회원 정보를 요청한다.
MeberServlet
이 요청을 받은후MeberDAO
객체를 생성하여listMembers()
메서드를 호출한다.listMembers()
에서 다시connDB()
매서드를 호출하여 데이터베이스와연결하고 회원정보를 조회한다.- 조회된 회원정보를
MemberVO
속성에 설정하고 ArrayLIst에 정보를 저장한다. - 저장 된 정보를
MemberServlet
으로 반환하고 저장된 정보를 차례대로 가져와서 HTML태그의 문자열로 만든다 - 만들어진 HTML 태그를 웹 브라우저로 전송해서 회원정보를 출력한다.
// MemberServlet 클래스 작성
@webServlet("/Member")
protected class MemberServlet extends HttpServlet{
//doGet() 매소드
protected class doGet(HttpServletRequest request, HttpServletResponse response){
response.setContenType("text/html;charset=utf-8");
printWrite out = response.getWriter();
MemberDAO dao = new MemberDAO(); // DAO 객체 생성
LIst<MemberVO> list = dao.listMembers(); // listMembers() 메서드를 사용하여 회원정보조회
//...
}
}
//MemberDAO 클래스 작성
public class MemberDAO{
private Statement stmt;
private Connection con;
//...
//listMembers() 메서드 구현
public List<MemberVO> listMembers(){
try{
connDB(); // DataBase연결
String query = "select * from t_member"; // 쿼리문으로 SQL조회할 때 사용
ResultSet rs = stmt.executeQuery(query); // SQL문을 사용하여 회원정보를 조회
while(rs.next()){
String id = rs.getString("id");
String pwd = rs.getString("pwd");
//...
MemberVO vo = new MemberVO(); // VO 객체 생성
vo.setID(id);
vo.setPwd(pwd);
//...
list.add(vo); // vo 객체를 ArrayLIst에 저장한다.
}
rs.close();
stmt.close();
con.close();
} catch (Exception e){
e.printStackTrace();
}
return list; // MemberVO 객체를 저장한 ArrayLIst를 반환한다.
}
// connDB() 메서드 구현 DB연결
private void connDB(){
try{
Class.forName(driver);
System.out.println("Oracle 드라이버 로딩 성공");
con = DriverManager.getConnection(url, user, pwd);
System.out.println("Connection 생성 성공");
stmt = con.createStatement();
System.out.println("Statement 생성 성공");
} catch (Exception e){
e.printStackTrace();
}
}
}
// MemberVO 클래스 작성
public class MemberVO{
private String id;
private String pwd;
//...
//MemberVO 생성자
public MemberVO(){
System.out.println("MemberVO 생성자 호출");
}
public String getId(){
return id;
}
public String setId(String id){
this.id = id;
}
public String getPwd(){
return pwd;
}
public String setPwd(String pwd){
this.pwd = pwd;
}
//...
}
다음과 같이 이러한 클래스들을 이용하여 비지니스를 처리해준다.
이 글은 자바 웹을 다루는 기술에서 참고하였습니다
'Spring > Servlet' 카테고리의 다른 글
[Java/Servlet] 서블릿이란? (0) | 2021.08.17 |
---|