* 기본 내장객체

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!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>
    <h1>기본 내장객체</h1>
    <%
    //HttpServletRequest req = request;
    String addr = request.getRemoteAddr();
    out.print("접근자 주소:"+ addr+"<br>");
    out.print("서버 프로토콜:"+ request.getProtocol()+"<br>");
    out.print("서버 컨텍스트 경로:"+ request.getContextPath()+"<br>");
    out.print("페이지 경로:"+ request.getRequestURI()+"<br>");
    out.print("서버명 :"+ request.getServerName()+"<br>");
    out.print("서버포트 번호:"+ request.getServerPort()+"<br>");
    %>
    
</body>
</html>
cs



'* Programming > WEB' 카테고리의 다른 글

DB연동 데이터 입력  (0) 2016.09.08
Form(회원가입)  (0) 2016.09.08
Form(로그인창)  (0) 2016.09.08
스크립트릿 특징  (0) 2016.09.08
Table사용(구구단 만들기)  (1) 2016.09.08

* <%! 선언식(부) %> : 자바의 선언부

* 주석처리 : <% %> 안에 java소스가 들어가기 때문에 //으로 주석을 표현 가능

하지만 <% %>밖의 주석 표시는 <!-- --> 를 사용

* <font size="16"> : 글자의 사이즈를 설정

* <%=sum %> : 자바 안의 값을 가져오는 방법 ( ; 없다)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!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>
    <h1>스크립트릿 특징</h1>
    <h2>1~10까지의 합</h2>
    <%
        //스크립트릿 - main메소드
        int sum = 0;
        for (int i = 1; i <= 10; i++) {
            sum += i;
            out.print(i);
            if (i != 10) {
    %>
    +    <!-- +기호 추가 -->
    <%
            }    //if end
        }        //for end
        //out.print("=");    //표시하는 다른방법
    %>
    =
    <font size="16"<%=sum %> <%
     //표현식(;없다)
 %>
    </font>
    <br>
    <%!//선언식(부)
    public int sum(int a, int b) {
        return a + b;
    }%>
    
    100+50=<%=sum(10050)%>0
    <br>
    
    <%
        Date date = new Date();
        out.print(date);
    %>
 
</body>
</html>
cs




'* Programming > WEB' 카테고리의 다른 글

DB연동 데이터 입력  (0) 2016.09.08
Form(회원가입)  (0) 2016.09.08
Form(로그인창)  (0) 2016.09.08
기본 내장객체  (0) 2016.09.08
Table사용(구구단 만들기)  (1) 2016.09.08
* <body></body> : 중심으로 이 안에 작성
* <table></table> : 표생성 /border : 1(테두리 표시),0(테두리 제거) /width : 가로길이 
/height : 세로길이 /align : 화면상의 위치
* <tr></tr> : table안의 한 행을 나타냄
* <td></td> 혹은 <th></th> : 그 행의 열을 채워나간다 (차이 확인할 것)
* <% %> : java 소스 작성 
* out.write : java소스 안에서 사용하는 화면에 창띄우는 방법1
* out.println : java소스 안에서 사용하는 화면에 창띄우는 방법2


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!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>
        <h1>구구단</h1>
        <table border="1" width="300" height="400" align="left">
        <tr height="50">
          <th>2단</th>
          <th>3단</th>
          <th>4단</th>
          <th>5단</th>
          <th>6단</th>
          <th>7단</th>
          <th>8단</th>
          <th>9단</th>
        </tr>
        <%
            for(int x=1;x<10;x++){
                out.write("<tr>");
                for(int y = 2; y < 10; y++){
                    out.write("<td>"+y+"x"+x+"="+x*y+"<br></td>");    //td가 한행을 가로로 쭉표시
                }
                out.write("</tr>");    //tr은 다음행으로 넘어가
            }
        %>
        </table>
    </body>
</html>
cs



'* Programming > WEB' 카테고리의 다른 글

DB연동 데이터 입력  (0) 2016.09.08
Form(회원가입)  (0) 2016.09.08
Form(로그인창)  (0) 2016.09.08
기본 내장객체  (0) 2016.09.08
스크립트릿 특징  (0) 2016.09.08

전체적인 기능 구현

1. 서버 실행

2. 클라이언트 실행

3. 회원가입이 필요한 경우 회원가입

4. 가입이 완료되면 로그인

비밀번호 까지 작성이 되야 로그인 버튼이 활성화

5. 로그인 완료

6. 대기실에 실시간 로그인 및 다중채팅

7. 방만들기


방에서는 귓속말기능이 없고 채팅만 가능하다 

파일로 채팅의 내용을 저장과 불러오기를 할 수있다.

나가기 버튼 클릭시 방삭제 할지 확인 창이 뜨는데 이때 채팅방안에 사람이 있는경우 삭제가 되지않으며

다시 들어가서 삭제버튼 누를시에 잘안되는 경우도 있다.....(도데체 왜때문이지..?)

들어와 있는 모든사람이 확인버튼을 클릭하거나 처음 방을 만든사람이 아무도없는 것을 확인하고 삭제해야 가능한 기능이다.

8. 회원 정보 수정

여기서 정보를 수정할 수 있다.

db에서 확인한다

이름인 '사랑'을 '이름'으로 변경 후

변경 된 것이 확인이 가능하다.

아래에 탈퇴기능 또한 있다.

9. 탈퇴

ka의 회원정보를 탈퇴하려 한다.

종료됨과 함께 db에서도 삭제됨을 확인 할 수있다.

10. 프로그램 정보



'* Project > Chatting_Pro' 카테고리의 다른 글

서버  (0) 2016.09.07
대기화면 소스(WaitRoomUI.java)  (0) 2016.09.07
회원 수정 DB / 회원 탈퇴 DB  (1) 2016.09.07
로그인 체크 DB  (1) 2016.09.07
회원가입 DB / 메시지박스  (1) 2016.09.07

서버 소스이다.

포트번호를 설정을한다. (기존의 사용하는 포트번호와 겹치지 않게 조심!)

스트림 객체 생성하고 스레드 시작한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
 
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;
 
// To create UI and listen to client access
public class EightServer extends JFrame implements Runnable {
 
    static final int PORT = 8880// 서버프로그램의 포트번호
    Socket socket;
    ServerSocket serverSocket; // 서버소켓
    DataOutputStream dos;
    DataInputStream dis;
    ArrayList<User> userArray; // 서버에 접속한 사용자들
    ArrayList<Room> roomArray; // 서버가 열어놓은 채팅방들
 
    int sizeX = 600, sizeY = 600;
    Dimension whole, part;
    int xPos, yPos;
    JTextArea jta;
    ImageIcon icon;
    JPanel jp;
 
    EightServer() {
        userArray = new ArrayList<User>();
        roomArray = new ArrayList<Room>();
        setTitle("Octopus Server");
        setSize(sizeX, sizeY);
 
        icon = new ImageIcon("icon2.png");
        this.setIconImage(icon.getImage());//타이틀바에 이미지넣기
        
        jta = new JTextArea();
        jp = new JPanel();
 
        jp.setLayout(new GridLayout(12)); // 그리드 레이아웃
        jta.setEditable(false); // 에디팅 불가
        jta.setLineWrap(true); // 자동줄바꿈
 
        JScrollPane jsp = new JScrollPane(jta); // 텍스트에어리어에 스크롤 추가
        jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        jp.add(jsp);// 패널에 스크롤 붙임
        jta.setText("Server Start...1\n");
 
        add(jp); // 프레임에 패널 붙임
 
        // 윈도우 위치 계산
        whole = Toolkit.getDefaultToolkit().getScreenSize();
        part = this.getSize();
        xPos = (int) (whole.getWidth() / 2 - part.getWidth() / 2);
        yPos = (int) (whole.getHeight() / 2 - part.getHeight() / 2);
 
        setLocation(xPos, yPos);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
 
    public static void main(String[] args) {
        // Create server UI
        System.out.println("Server start...2");
        EightServer server = new EightServer();
        Thread thread = new Thread(server);
        thread.start();
    }
 
    @Override
    public void run() {
        // 클라이언트 대기 모드
 
        // 서버소켓 생성
        try {
            InetAddress addr = InetAddress.getLocalHost(); // 로컬호스트 주소
            serverSocket = new ServerSocket(PORT); // 서버소켓 생성
            jta.append(PORT + "번 포트로 정상적으로 소켓이 생성되었습니다.\n" + "현재 열린 서버의 IP 주소는 " 
                            + addr.getHostAddress().toString() + "입니다. \n");
        } catch (IOException e1) {
            e1.printStackTrace();
            jta.append("서버 소켓 생성에러\n");
        }
 
        while (true) {
            socket = null;
            dis = null;
            dos = null;
            try {
                // 무한반복, 입출력 에러가 나거나 프로그램이 종료될 때까지 실행
                socket = serverSocket.accept(); // 클라이언트 접속 대기
                jta.append("클라이언트 " + socket.getInetAddress().getHostAddress()    + "가 접속되었습니다.\n");
 
            } catch (IOException e) {
                e.printStackTrace();
                try {
                    socket.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                jta.append("클라이언트 접속에러\n");
            }
            try {
                // 스트림 객체 생성
                dis = new DataInputStream(socket.getInputStream());
                dos = new DataOutputStream(socket.getOutputStream());
            } catch (IOException e) {
                e.printStackTrace();
                try {
                    dis.close();
                    dos.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                    jta.append("스트림 해제에러\n");
                }
                try {
                    socket.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                    jta.append("소켓 해제에러\n");
                }
                jta.append("스트림 생성에러\n");
            }
            User person = new User(dis, dos); // 가명의 사용자 객체 생성
            person.setIP(socket.getInetAddress().getHostName()); // 아이피주소 설정 부여
 
            Thread thread = new Thread(new ServerThread(jta, person, userArray,    roomArray));
            thread.start(); // 스레드 시작
        }
    }
}
cs


이러한 창을 띄워 잘못되는점이나 오류를 확인하게 하였다.

'* Project > Chatting_Pro' 카테고리의 다른 글

채팅 프로그램 마무리  (0) 2016.09.07
대기화면 소스(WaitRoomUI.java)  (0) 2016.09.07
회원 수정 DB / 회원 탈퇴 DB  (1) 2016.09.07
로그인 체크 DB  (1) 2016.09.07
회원가입 DB / 메시지박스  (1) 2016.09.07

+ Recent posts