Servlet 을 이용하여 아주 간단한 회원가입(신규입력), 회원목록 보기 예를 한다.

Servlet작성 시 service메소드(get,post 모두 가능) 또는 doGet(get방식), doPost(Post방식) 사용가능.


0. web.xml

1. main.html      초기화면(회원가입, 회원목록 링크)
2. insert.html    입력 화면
3. InsertServlet.java  입력처리 Servlet
4. ListServlet.java  조회 Servlet
5. DeleteServlet.java 삭제처리 Servlet
6. UpdateServlet   변경대상 상세 조회 Servlet
7. UpdateOkServlet   수정 처리 Servlet




web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

id="WebApp_ID" version="3.0">

<display-name>day02_servlet01</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-name>insert</servlet-name>

<servlet-class>test.servlet.InsertServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>insert</servlet-name>

<url-pattern>/abc</url-pattern>

</servlet-mapping>


<servlet>

<servlet-name>list</servlet-name>

<servlet-class>test.servlet.ListServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>list</servlet-name>

<url-pattern>/list.do</url-pattern>

</servlet-mapping>


<servlet>

<servlet-name>delete</servlet-name>

<servlet-class>test.servlet.DeleteServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>delete</servlet-name>

<url-pattern>/delete.do</url-pattern>

</servlet-mapping>


<servlet>

<servlet-name>update</servlet-name>

<servlet-class>test.servlet.UpdateServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>update</servlet-name>

<url-pattern>/update.do</url-pattern>

</servlet-mapping>


<servlet>

<servlet-name>updateok</servlet-name>

<servlet-class>test.servlet.UpdateOkServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>updateok</servlet-name>

<url-pattern>/updateok.do</url-pattern>

</servlet-mapping>

</web-app>



1. main.html

초기화면(회원가입, 회원목록 링크)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<ul>

<li><a href="insert.html">회원가입</a></li>

<li><a href="list.do">회원목록</a></li>

</ul>

</body>

</html>



2. insert.html    입력 화면

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<style type="text/css">

#regbox{

width : 300px;

}

#regbox label{

display : block;

width: 100px;

float : left;

}

</style>

</head>

<body>

<form method="get" action="abc">

<fieldset id="regbox">

<legend>회원가입</legend>

<label for="id">아이디</label>

<input type="text" name="id"/><br/>

<label for="pwd">비밀번호</label>

<input type="text" name="pwd"/><br/>

<label for="email">이메일</label>

<input type="text" name="email"/><br/>

<label for="phone">전화번호</label>

<input type="text" name="phone"/><br/>

<input type="submit" value="가입">

<input type="reset" value="취소"/>

</fieldset>

</form>

</body>

</html>




3. InsertServlet.java

; 입력처리 Servlet

package test.servlet;


import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;


import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


public class InsertServlet extends HttpServlet{

@Override

protected void service(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// 1. 파라미터로 전송된 값을 얻어오기.

request.setCharacterEncoding("euc-kr");

String id = request.getParameter("id");

String pwd= request.getParameter("pwd");

String email = request.getParameter("email");

String phone = request.getParameter("phone");

int n=0;

PreparedStatement pstmt = null;

Connection con = null;

try{

// 2. 전송된 값을 db에 저장.

Class.forName("oracle.jdbc.OracleDriver");

String url = "jdbc:oracle:thin:@localhost:1521:xe";

con = DriverManager.getConnection(url, "scott", "tiger");

String sql = "insert into members values( ?,?,?,?, sysdate )";

pstmt = con.prepareStatement(sql);

pstmt.setString(1, id);

pstmt.setString(2, pwd);

pstmt.setString(3, email);

pstmt.setString(4, phone);

//sql구문 실행하기

n=pstmt.executeUpdate();

}catch(ClassNotFoundException ce){

System.out.println(ce.getMessage());

}catch(SQLException se){

System.out.println(se.getMessage());

}finally{

try{

if(pstmt!=null) pstmt.close();

if(con!=null) con.close();

}catch(SQLException se){

System.out.println(se.getMessage());

}

}

// 3. 사용자(클라이언트)에 결과를 응답하기.

response.setContentType("text/html;charset=euc-kr");

PrintWriter pw = response.getWriter();

pw.println("<html>");

pw.println("<head></head>");

pw.println("<body>");

if(n>0){

pw.println( id + "님! 성공적으로 가입되었습니다.<br/>");

}else{

pw.println("오류로 인해 가입에 실패했습니다.<br/>");

pw.println("<a href='javascript:history.go(-1)'>이전페이지로 가기</a>");

}

pw.println("</body>");

pw.println("</html>");

}

}





4. ListServlet.java

; 조회 Servlet

; 목록보기를 클릭하면

package test.servlet;


import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Timestamp;


import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


public class ListServlet extends HttpServlet{

@Override

protected void service(HttpServletRequest resquest, HttpServletResponse response)

throws ServletException, IOException {

Connection con=null;

PreparedStatement pstmt=null;

ResultSet rs = null;

response.setContentType("text/html;charset=euc-kr");

PrintWriter pw = response.getWriter();

pw.println("<html>");

pw.println("<head></head>");

pw.println("<body>");

try{

Class.forName("oracle.jdbc.OracleDriver");

String url="jdbc:oracle:thin:@localhost:1521:xe";

con = DriverManager.getConnection(url, "scott", "tiger");

String sql = "select * from members";

pstmt = con.prepareStatement(sql);

rs = pstmt.executeQuery();

pw.println("<div>");

pw.println("<table border='1' width='1200'>");

pw.println("<tr>");

pw.println("<td>아이디</td>");

pw.println("<td>비밀번호</td>");

pw.println("<td>이메일</td>");

pw.println("<td>전화번호</td>");

pw.println("<td>등록일</td>");

pw.println("<td>삭제</td>");

pw.println("<td>수정</td>");

pw.println("</tr>");

while(rs.next()){

String id = rs.getString("id");

String pwd = rs.getString("pwd");

String email = rs.getString("email");

String phone = rs.getString("phone");

Timestamp regdate = rs.getTimestamp("regdate");

pw.println("<tr>");

pw.println("<td>" + id + "</td>");

pw.println("<td>" + pwd + "</td>");

pw.println("<td>" + email + "</td>");

pw.println("<td>" + phone + "</td>");

pw.println("<td>" + regdate + "</td>");

pw.println("<td><a href='delete.do?id=" + id + "'>삭제</a></td>");

pw.println("<td><a href='update.do?id=" + id + "'>수정</a></td>");

pw.println("</tr>");

}

pw.println("</table>");

pw.println("</div>");

pw.println("<a href='main.html'>메인페이지로 이동</a>");

}catch(ClassNotFoundException ce){

System.out.println(ce.getMessage());

}catch(SQLException se){

System.out.println(se.getMessage());

}finally{

try{

if(rs!=null) rs.close();

if(pstmt!=null) pstmt.close();

if(con!=null) con.close();

}catch(SQLException se){

System.out.println(se.getMessage());

}

}

pw.println("</body>");

pw.println("</html>");

}

}







5. DeleteServlet.java

; 삭제처리 Servlet

; 삭제링크를 클릭하면


package test.servlet;


import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;


import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


public class DeleteServlet extends HttpServlet{

@Override

protected void service(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {

Connection con = null;

PreparedStatement pstmt=null;

int n=0;

request.setCharacterEncoding("euc-kr");

String id=request.getParameter("id");

response.setContentType("text/html;charset=euc-kr");

PrintWriter pw = response.getWriter();

try{

Class.forName("oracle.jdbc.OracleDriver");

String url="jdbc:oracle:thin:@localhost:1521:xe";

String user="scott";

String password="tiger";

con = DriverManager.getConnection(url, user, password);

String sql = "delete from members where id=?";

pstmt = con.prepareStatement(sql);

pstmt.setString(1, id);

n= pstmt.executeUpdate();

}catch(ClassNotFoundException ce){

System.out.println(ce.getMessage());

}catch(SQLException se){

System.out.println(se.getMessage());

}finally{

try{

if(pstmt!=null) pstmt.close();

if(con!=null) con.close();

}catch(SQLException se){

System.out.println(se.getMessage());

}

}

if(n>0){

response.sendRedirect("list.do");

}else{

pw.println("<html>");

pw.println("<head></head>");

pw.println("<body>");

pw.println("회원삭제에 실패했습니다. ");

pw.println("<a href='javascript:history.go(-1)'>이전페이지로 가기</a>");

pw.println("</body>");

pw.println("</html>");

pw.close();

}

}

}





6. UpdateServlet.java

; 변경대상 상세 조회 Servlet

package test.servlet;


import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;


import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


public class UpdateServlet extends HttpServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// 1. parameter로 전송된 id얻기.

String id=req.getParameter("id");

// 2. id에 해당하는 정보를 db에서 조회해서 출력.

resp.setContentType("text/html;charset=euc-kr");

PrintWriter pw = resp.getWriter();

pw.println("<html>");

pw.println("<head></head>");

pw.println("<body>");

PreparedStatement pstmt = null;

Connection con = null;

ResultSet rs=null;

try{

// 2. 전송된 값을 db에 저장.

Class.forName("oracle.jdbc.OracleDriver");

String url = "jdbc:oracle:thin:@localhost:1521:xe";

con = DriverManager.getConnection(url, "scott", "tiger");

String sql = "select * from members where id=?";

pstmt = con.prepareStatement(sql);

pstmt.setString(1, id);

//sql구문 실행하기

rs = pstmt.executeQuery();

rs.next();

String pwd = rs.getString("pwd");

String email=rs.getString("email");

String phone=rs.getString("phone");

pw.println("<form method='post' action='updateok.do'>");

pw.println("<input type='hidden' name='id' value='" + id + "'/>");

pw.println("아이디<input type='text' name='id' value='" + id + "' disabled='disabled'/><br/>");

pw.println("비밀번호<input type='text' name='pwd' value='" + pwd + "'/><br/>");

pw.println("email<input type='text' name='email' value='" + email + "'/><br/>");

pw.println("phone<input type='text' name='phone' value='" + phone + "'/><br/>");

pw.println("<input type='submit' value='저장'/><br/>");

pw.println("</form>");

}catch(ClassNotFoundException ce){

System.out.println(ce.getMessage());

}catch(SQLException se){

System.out.println(se.getMessage());

}finally{

try{

if(rs!=null) rs.close();

if(pstmt!=null) pstmt.close();

if(con!=null) con.close();

}catch(SQLException se){

System.out.println(se.getMessage());

}

}

pw.println("</body>");

pw.println("</html>");

pw.close();

}

}






7. UpdateOkServlet.java

;수정 처리 Servlet

package test.servlet;


import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;


import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


public class UpdateOkServlet extends HttpServlet{

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

req.setCharacterEncoding("euc-kr");

String id=req.getParameter("id");

String pwd=req.getParameter("pwd");

String email=req.getParameter("email");

String phone=req.getParameter("phone");

PreparedStatement pstmt = null;

Connection con = null;

int n=0;

try{

Class.forName("oracle.jdbc.OracleDriver");

String url = "jdbc:oracle:thin:@localhost:1521:xe";

con = DriverManager.getConnection(url, "scott", "tiger");

String sql = "update members set pwd=?,email=?,phone=? where id=?";

pstmt = con.prepareStatement(sql);

pstmt.setString(1, pwd);

pstmt.setString(2, email);

pstmt.setString(3, phone);

pstmt.setString(4, id);

n = pstmt.executeUpdate();

if(n>0){

resp.sendRedirect("list.do");

}else{

PrintWriter pw = resp.getWriter();

pw.println("<html><head></head>");

pw.println("<body>실패</body>");

pw.println("</heal>");

pw.close();

}

}catch(ClassNotFoundException ce){

System.out.println(ce.getMessage());

}catch(SQLException se){

System.out.println(se.getMessage());

}

}

}


; 리스트 페이지로 이동. ( resp.sendRedirect("list.do"); )




'WEB > JSP' 카테고리의 다른 글

6. Servlet - connection pool  (0) 2013.04.18
5. Servlet예제 - doGet, doSet  (0) 2013.04.18
3. Servlet 작성 방법  (0) 2013.04.18
2. 웹응용프로그램 디렉토리구조  (0) 2013.04.18
1. Web / JSP : 동작구조  (0) 2013.04.18

 

 

< 서블릿 Servlet >

 

- 웹서버에서 실행되는 자바클래스(웹어플리케이션에서 실행되는 작은 프로그램)

 

- main()를 가지고 있지 않으며, 대신 service()가 호출된다.

;  두개의 파라미터를 받아들인다. ( request, response )

- 클라이언트의 요청을 받고 클라이언트에 응답을 할 수 있다.

- 서블릿 요청과 응답과정

1) 클라이언트의 서비스 요청 --> 객체 생성유무 파악

   Container : 생성유무 체크. tomcat, resine 등

2) 없을 경우만 생성(메모리 로드)

3) Invoker 실행 ( Thread를 하나 만듬 )

4) 생성된 Thread에서 Service메소드를 호출.

5) 클라이언트에게 보냄. 결과는 mime type으로 보내며, 브라우저의 mime type 은 text/html

 

- 만드는 방법
1) HttpServlet을 상속받는다.
2) service메소드를 오버라이딩한후 원하는 작업을 한다.
3) web.xml에 서블릿매핑을 한다.
4) 서블릿을 호출한다.

 


- 만드는 방법
1) HttpServlet을 상속받는다.
2) service메소드를 오버라이딩한후 원하는 작업을 한다.
3) web.xml에 서블릿매핑을 한다.
4) 서블릿을 호출한다.

 


 

서블릿 작성 예제>

- web.xml 에 쌍으로 name과 url을 매핑하고 servlet(java)파일과 html파일을 만들어 본다.


 


1) web.xml

2) insert.html -->  insert.do --> insert.java

3) register.html  --> register.do --> RegisterServlet.java

설정 >
* eclipse : new - dynamic web project
* java 파일 : java resource / src 밑에
* html, jsp, 기타 : WebContent 밑에
* web.xml 파일 : WebContent/WEB-INF
- 항상 쌍으로 등록해야 한다.



< web.xml >

<?xml version="1.0" encoding="UTF-8"?>

  day01_servlet01
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  

  
  
   
   insert
   
   test.servlet.InsertServlet
  
  

  
   
   insert
   
   /insert.do
  
    
  
   register
   test.servlet.RegisterServlet
  
  
   register
   /register.do
  

 
   Report01
   test.servlet.Report01
  
  
   Report01
   /Report01.do
  

-------------------



[ web.xml ]

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>day01_servlet01</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>


  <!-- 1.서블릿 정의 -->
  <servlet>
   <!-- 사용할 서블릿 이름 -->
   <servlet-name>insert</servlet-name>
   <!-- 서블릿클래스 설정 -->
   <servlet-class>test.servlet.InsertServlet</servlet-class>
  </servlet>
  

<!-- 2.서블릿 매핑 -->
  <servlet-mapping>
   <!-- 호출할 서블릿 이름 -->
   <servlet-name>insert</servlet-name>
   <!-- 서블릿을 호출할때 사용될 url설정 -->
   <url-pattern>/insert.do</url-pattern>
  </servlet-mapping>
    
  <servlet>
   <servlet-name>register</servlet-name>
   <servlet-class>test.servlet.RegisterServlet</servlet-class>
  </servlet>
  <servlet-mapping>
   <servlet-name>register</servlet-name>
   <url-pattern>/register.do</url-pattern>
  </servlet-mapping>


 <servlet>
   <servlet-name>Report01</servlet-name>
   <servlet-class>test.servlet.Report01</servlet-class>
  </servlet>
  <servlet-mapping>
   <servlet-name>Report01</servlet-name>
   <url-pattern>/Report01.do</url-pattern>
  </servlet-mapping>
</web-app>



[ 폼 데이터 전송방식 ]


1) GET방식
- 전송되는 데이터가 화면에 보임(보안X)
- 작은 용량의 데이터만 전송가능
- 간단하게 데이터를 전송할 수 있음

2) POST방식
- 전송되는 데이터가 화면에 안보임(보안O)
- 전송량의 제한이 없다.






[ insert.html ]


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>insert.html</title>
</head>
<body>
<form method="post" action="insert.do">
아이디<input type="text" name="id"/><br/>
비밀번호 <input type="password" name="pwd"/><br/>
이메일<input type="text" name="email"/><br/>
<input type="submit" value="가입"/>
<input type="reset" value="취소"/>
</form>
</body>
</html>



; 입력페이지 insert.html



[ InsertServlet.java ]


service메소드

  - 클라이언트가 서블릿을 호출하면 자동으로 호출되는 메소드

  - 파라미터 request:클라이언트가 요청한 정보(보내온정보)를 갖는다.

  - 파라미터 response:클라이언트에 응답기능을 갖는다.


package test.servlet;


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 InsertServlet extends HttpServlet{
   
    @Override
    protected void service(HttpServletRequest request,
                            HttpServletResponse response)
            throws ServletException, IOException {

        //클라이언트가 보내온 정보 읽어오기
        String id=request.getParameter("id");
        String pwd=request.getParameter("pwd");
        String email=request.getParameter("email");
        System.out.println(id+"," + pwd +"," +email);
       
        /////////////  ////////////////////
       
        //콘텐츠타입지정(응답문서타입과 문자셋 설정)
        response.setContentType("text/html;charset=euc-kr");
       
        //클라이언트 웹브라우져에 출력하기위한 출력스트림얻어오기
        PrintWriter pw=response.getWriter();

        //응답을 html로 하기
        pw.println("<html>");
        pw.println("<head></head>");
        pw.println("<body>");
        pw.println("전송된 아이디:" + id +"<br/>");
        pw.println("전송된 비밀번호:" + pwd +"<br/>");
        pw.println("전송된 email:" + email +"<br/>");
        pw.println("</body>");
        pw.println("</html>");
    }
}


 

; 결과 페이지 주소


; 결과 페이지



ex> 아이디,비밀번호,전화번호,이메일,주소를 입력받아 넘기기.

 

 

 

[ register.html ]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>

<form method="post" action="reg.do">
    아이디 <input type="text" name="id"/><br/>
    비밀번호 <input type="text" name="pwd"/><br/>
    전화번호 <input type="text" name="phone"/><br/>    
    이메일 <input type="text" name="email"/><br/>
    주소 <input type="text" name="addr"/><br/>
    <input type="submit" value="전송"/>
    <input type="reset" value="취소"/>
</form>
</body>
</html>

 

 

 


[ RegServlet.java ]

package test.servlet;

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 RegServlet extends HttpServlet{
    @Override
    protected void service(HttpServletRequest request,
                            HttpServletResponse response)
            throws ServletException, IOException {
        //전송된 정보를 한글문자셋으로 설정하기
        //post방식에서 적용됨
        request.setCharacterEncoding("euc-kr");
   
        ////////  클라이언트가 보내온 정보 얻어오기  //////////////
        String id=request.getParameter("id");
        String pwd=request.getParameter("pwd");
        String email=request.getParameter("email");
        String phone=request.getParameter("phone");
        String addr=request.getParameter("addr");
       
        ////////   클라이언트에 응답하기   ///////////////////////
        response.setContentType("text/html;charset=euc-kr");
        PrintWriter pw=response.getWriter();
        pw.println("<html>");
        pw.println("<head></head>");
        pw.println("<body>");
        pw.println("<font color='red'>");
        pw.println("아이디 : " + id +"<br/>");
        pw.println("비밀번호 : " + pwd +"<br/>");
        pw.println("이메일 : " + email +"<br/>");
        pw.println("전화 : " + phone +"<br/>");
        pw.println("주소 : " + addr +"<br/>");
        pw.println("</font>");
        pw.println("</body>");
        pw.println("</html>");
    }
}


 

 


 

'WEB > JSP' 카테고리의 다른 글

6. Servlet - connection pool  (0) 2013.04.18
5. Servlet예제 - doGet, doSet  (0) 2013.04.18
4. JSP - Servlet 예제  (0) 2013.04.18
2. 웹응용프로그램 디렉토리구조  (0) 2013.04.18
1. Web / JSP : 동작구조  (0) 2013.04.18


 

** 웹응용프로그램의 디렉토리에는 WEB-INF라는 서브디렉토리가 반드시 있어야 한다.


** WEB-INF 디렉토리에는 web.xml이라는 배치 기술서 파일이 반드시 있어야 한다.



* 웹 응용프로그램은 일반적으로 별도의 디렉토리에 저장된다.


* html, 그림, jsp파일등이 저장된다.


* WEB-INF 디렉토리에는 서블릿 클래스들을 저장하기 위한 classes서브 디렉토리가 있다.


* WEB-INF 디렉토리에는 웹응용프로그램이 사용하는 라이브러리 파일들이 저장되는 lib 디렉토리가 있다. 이 디렉토리에는 JAR파일 형태의 라이브러리들이 저장된다.



* 컨텍스트(Context) : 같은 웹 응용프로그램에 소속된 서블릿과 JSP 프로그램은 공통된 실행환경을 서로 공유한다. 이러한 환경을 의미하며, 이 컨텍스트를 통해서 같은 웹응용프로그램에 소속된 서블릿과 JSP는 서로 데이터를 공유할수 있다.



'WEB > JSP' 카테고리의 다른 글

6. Servlet - connection pool  (0) 2013.04.18
5. Servlet예제 - doGet, doSet  (0) 2013.04.18
4. JSP - Servlet 예제  (0) 2013.04.18
3. Servlet 작성 방법  (0) 2013.04.18
1. Web / JSP : 동작구조  (0) 2013.04.18

 

< Web 프로그래밍 >

 

기본적으로 클라이언트/서버 방식으로 이루어진다.

클라이언트(웹 브라우저)가 특정 페이지를 웹서버에 요청(Request)하게 되면 웹서버가 이를 처리한 후 결과를 클라이언트(웹브라우저)에게 응답(Response)을 하게 되는 구조

 

 

 

① 요청 (Request) : 웹 브라우저가 웹서버에 해당 페이지를 요청

② 해당 웹서버는 요청페이지를 판단

   html 인지 jsp인지 확인하여 html인 경우 html로 응답하고, 아닌경우는 요청된 페이지의 로직 / DB 연동을 위해 WAS에 처리를 요청한다.

③ WAS에서 DB연동이 필요하면 DB 처리를 수행한다.

④ 처리 결과를 웹서버로 응답한다.

⑤ 결과를 웹브라우저에 응답한다.

 

- 웹 브라이우저 : 사용자 작업창

- 웹 서버 : 웹브라우저의 요청을 받아들이는 곳이며, 기본인식 언어는 HTML 이다. 결과를 브라우저에 응답한다.

               대표적으로 Apache, IIS ( windows 플랫폼에서만 )

- WAS : 요청 페이지의 로직 처리, DB 처리를 수행

            WebLogic, WebSphere, 제우스 등

              

 

< 웹 어플리케이션 서버 방식 >

 

- 웹서버가 처리를 하는 것이 아니라 어플리케이션 서버에게 처리를 넘김.

- 여러명의 사용자가 동일한 페이지를 요청하여 같은 어플리케이션 프로그램을 처리할때 한개의 프로세스만 할당하고 사용자요청을 쓰레드 방식으로 처리한다. 

 

 

 

< JSP동작구조 >


1. 사용자의 웹브라우저에서 http://서버주소/xxx.jsp 형태로 해당 페이지 (JSP 페이지)를 웹서버로 요청한다.


2. 웹서버는 JSP에 대한 요청을 JSP컨테이너(웹컨테이너)에 처리를 넘김.


3. JSP 파일이 처음 요청된 것이면 JSP파일을 서블릿(.java파일생성)으로 변화하는 파싱을 거친다.

(이전에 요청했던 페이지면 파싱할 필요 없이 파싱했던 클래스파일을 메모리에 적재한다.)

JSP파일은 실행을 위해 서블릿으로 파싱되고, 클래스파일로 컴파일이 되는데 이런 과정은 JSP파일이 처음으로 호출되었을때만 거친다. 


4. 서블릿 파일은 자바에서 실행가능한 클래스파일로 컴파일 된다.


5. 클래스파일은 메모리에 적재가 되어 실행된다.


6. 실행결과는 다시 웹서버에게 넘겨진다.


7. 웹서버는 웹브라우저가 인식할수 있는 HTML형태로 결과를 응답한다. HTML페이지를 브라우저에서 실행시켜 표시한다.

( 브라우저는 HTML태그로 구성된 페이지를 실행시켜 주는 프로그램으로, 웹서버에서 HTML이 실행되는것이 아니라 브라우저에서 실행되어 보여진다.)


--> 과정은 해당 JSP페이지가 최초로 요청되었을때 한번만 실행된다. 이후 같은 페이지에 대한 요청이 있으면 변환된 서블릿파일로 서비스를 처리한다.

 

 

< HTTP 프로토콜 >

 

- 비 연결 : 클라이언트의 요청에 응답 후 연결을 끊음.

- 비 상태 : 서버 상태와 상관없이 요청함.

 

 


 


'WEB > JSP' 카테고리의 다른 글

6. Servlet - connection pool  (0) 2013.04.18
5. Servlet예제 - doGet, doSet  (0) 2013.04.18
4. JSP - Servlet 예제  (0) 2013.04.18
3. Servlet 작성 방법  (0) 2013.04.18
2. 웹응용프로그램 디렉토리구조  (0) 2013.04.18

+ Recent posts