엔터 클릭 시 특정 함수가 실행되게 하고싶으면 input태그 안에 onkeypress속성을 추가하면 된다.

1
<input type="text" onkeypress="if(event.keyCode==13){자바스크립트 함수 이름();}">
cs

키보드를 눌렀을 때, 그 키의 코드가 13번(엔터)이면, '자바스크립트 함수 이름'을 실행하라는 코드이다.


하지만 form 태그 안에 input(type=text) 태그가 한 개 들어있을 때, 엔터를 누르면 자동으로 submit되는 현상이 발생해서 화면이 새로고침 된다.

저 경우에도 함수 실행 후에 submit이 한 번 더 되어서 페이지가 새로고침 되었다.

이를 막기 위해서는 form 태그에 아래 코드처럼 onsubmit속성을 추가하면 된다.

1
2
3
<form onsubmit="return false">
    <input type="text" onkeypress="if(event.keyCode==13){자바스크립트 함수 이름();}">
</form>
cs


이렇게 하면 엔터키를 눌러도 submit이 자동으로 되지 않는다.


** input태그가 여러개 있을 때에는 엔터키 눌렀을 때 자동submit이 동작하지 않는다!!!

'' 카테고리의 다른 글

[ajax]데이터 전송  (0) 2018.07.16
[html]head태그 안의 meta태그(링크첨부)  (0) 2018.07.11
[commons-fileupload]파일 업로드  (0) 2018.07.02
[html]a태그 onclick 사용하기  (0) 2018.06.29
[html]html 특수문자 표(펌글)  (0) 2018.06.28

commons-fileupload 라이브러리를 통한 파일 업로드를 구현하기 위해서는 라브러리를 다운받아 lib폴더에 넣어주어야 한다.


commons-fileupload-버젼.jar    ( 주소 : http://commons.apache.org/proper/commons-fileupload/ )

commons-id-버젼.jar               ( 주소 : http://commons.apache.org/proper/commons-io/ )



1. 입력 폼 만들기

1
2
3
4
5
6
<form id="go_form" name="go_form" method="post" enctype="multipart/form-data" action="img-upload.jsp">
    이름<input type="text" placeholder="이름을 입력하세요" name="user_name" maxlength="20" id="user_name">
    파일<input type="file" id="user_img" name="user_img">
    <button type="button" id="delFile" onclick="del_file()">파일 삭제</button>
    <button type="submit">submit</button>
</form>
cs

- 입력폼의 method를 POST로 지정하고, enctype 속성의 값을 multipart/form-data로 설정한다.

  사진, 동영상 등 글자가 아닌 파일은 모두 Multipart 형식의 데이터이다. 따라서 파일 업로드 시 enctype 설정을 꼭 해야한다.

- 파일 업로드와 함께 텍스트 형식의 폼 데이터도 함께 전송한다.

- 파일 삭제 버튼을 누르면 업로드했던 파일이 삭제된다.


2. img-upload.jsp에서 요청을 받아 처리한다.

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
<%
    // request로 들어온 데이터 저장할 변수 선언
    Map<StringString> user = new HashMap<StringString>();
 
    // 이미지는 서버에 저장
    String saveDir = application.getRealPath("/image/"); // 저장할 경로 지정
 
    // 유효한 request인지 확인
    boolean isMultipart = FileUpload.isMultipartContent(request);
    String fileName = ""// 업로드한 파일의 이름을 저장할 변수 설정
 
    try {
        if(isMultipart) {
            DiskFileItemFactory factory = new DiskFileItemFactory();
 
            // 파일 업로드 핸들러 생성
            ServletFileUpload upload = new ServletFileUpload(factory);
 
            // 한글 인코딩
            upload.setHeaderEncoding("UTF-8");
 
            // request parsing
            List<FileItem> items = upload.parseRequest(request);
            Iterator<FileItem> iter = items.iterator();
            while (iter.hasNext()) {
                FileItem item = iter.next();
 
                // 한글 인코딩
                item.getString("UTF-8");
 
                if (item.isFormField()) {
                    // file 형식이 아닐 때
                    String name = item.getFieldName(); // 필드 이름
                    String value = new String((item.getString()).getBytes("8859_1"),"utf-8"); // 필드 값, 한글 인코딩
                    user.put(name,value);
                } else {
                    // file 형식일 때
                    fileName = new File(item.getName()).getName();
                    File storeFile = new File(saveDir + "/"  + fileName);
                    user.put("user_img",fileName);
                    // saves the file on disk
                    item.write(storeFile);
                }
            }
        }
    }
    catch ( Exception e ) { System.out.println(e); }
%>
cs

- ServletFileUpload.isMultipartContent(request) : 전송된 데이터가 multipart/form-data형식으로 전송되었는지 여부 확인

- multipart/form-data 형식으로 넘어온 경우 기존의 request.getParameter("name") 방식으로 값을 꺼낼 수 없기때문에 위의 방법 사용

- FileItem 클래스는 multipart/form-data로 전송된 파라미터 또는 파일 정보를 저장하고 있는 클래스이다.



FileItem 클래스가 제공하는 메소드


메소드 

리턴타입 

설명 

isFormField() 

boolean 

파일이 아닌 일반적인 입력 파라미터일 경우  true를 리턴한다.

getFieldName()

String 

파라미터 이름을 구한다. 

getString()

String 

기본 캐릭터 셋을 사용하여 파라미터의 값을 구한다. 

getString(String encoding) 

String 

지정한 인코딩을 사용하여 파라미터의 값을 구한다.

getName() 

String 

업로드한 파일의 (경로를 제외한) 이름을 구한다.

getSize() 

long 

업로드한 파일의 크기를 구한다. 

write(File file) 

void 

업로드한 파일을 file이 나타내는 파일로 저장한다. 

getInputStream()

inputStream

업로드한 파일을 읽어오는 입력 스트림을 리턴한다.

get()

byte[]

업로드한 파일을 byte배열로 구한다.

isInMemory

boolean

업로드한 파일이 메모리에 저장된 상태인 경우 true를 리턴하고, 임시 디렉터리에 파일로 저장된 경우 false를 리턴한다. 

delete()

void

파일과 관련된 자원을 제거한다. 메모리에 저장된 경우 할당된 메모리를 반환하고 임시 파일로 저장된 경우 파일을 삭제한다.





참고 - https://m.blog.naver.com/PostView.nhn?blogId=javaking75&logNo=220056175936&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

a태그를 href가 아닌 onclick()을 사용하고자 할 때 방법 두 가지를 소개한다.


1. href를 막고 onclick 사용

<a href="javacsript:void(0); onclick='함수명(매개변수)'>a링크입니다</a>

href가 동작은 하지만 void(0)으로 사실상 동작을 안 하는 것처럼 보이고 onclick이 실행된다.



2. href에 경로설정을 하지 않고 onclick 속성 사용

<a href="#" onclick="함수명(매개변수);">a링크</a>

이런 형식으로 사용한다.


<a href="aaa.jsp" onclick="return 함수명(매개변수);">a링크</a>

이렇게 사용하는 경우, href에 설정한 경로로 이동하는 것보다 onclick이벤트가 먼저 실행된다. onclick 이벤트의 리턴값이 true이면 href로 연결된 링크로 이동하고, false이면 이동하지 않는다.




출처 - http://egloos.zum.com/pdw213/v/3493140

출처 - http://0taeng.tistory.com/31

HTML 상에서 특수문자가 제대로 나타나지 않을 수 있기 때문에 아래 문자들을 사용합니다.

표현문자

숫자표현

문자표현

설명

-

&#00;-&#08;

-

사용하지 않음

space

&#09;

-

수평탭

space

&#10;

-

줄 삽입

-

&#11;-&#31;

-

사용하지 않음

space

&#32;

-

여백

!

&#33;

-

느낌표

"

&#34;

&quot;

따옴표

#

&#35;

-

숫자기호

$

&#36;

-

달러

%

&#37;

-

백분율 기호

&

&#38;

&amp;

Ampersand

'

&#39;

-

작은 따옴표

(

&#40;

-

왼쪽 괄호

)

&#41;

-

오른쪽 괄호

*

&#42;

-

아스트릭

+

&#43;

-

더하기 기호

,

&#44;

-

쉼표

-

&#45;

-

Hyphen

.

&#46;

-

마침표

/

&#47;

-

Solidus (slash)

0 - 9

&#48;-&#57;

-

0부터 9까지

:

&#58;

-

콜론

;

&#59;

-

세미콜론

<

&#60;

&lt;

보다 작은

=

&#61;

-

등호

>

&#62;

&gt;

보다 큰

?

&#63;

-

물음표

@

&#64;

-

Commercial at

A - Z

&#65;-&#90;

-

A부터 Z까지

[

&#91;

-

왼쪽 대괄호

\

&#92;

-

역슬래쉬

]

&#93;

-

오른쪽 대괄호

^

&#94;

-

탈자부호

_

&#95;

-

수평선

`

&#96;

-

Acute accent

a - z

&#97;-&#122;

-

a부터 z까지

{

&#123;

-

왼쪽 중괄호

|

&#124;

-

수직선

}

&#125;

-

오른쪽 중괄호

~

&#126;

-

꼬리표

-

&#127;-&#159;

-

사용하지 않음

&#160;

&nbsp;

Non-breaking space

¡

&#161;

&iexcl;

거꾸로된 느낌표

&#162;

&cent;

센트 기호

&#163;

&pound;

파운드

¤

&#164;

&curren;

현재 환율

&#165;

&yen;

|

&#166;

&brvbar;

끊어진 수직선

§

&#167;

&sect;

섹션 기호

¨

&#168;

&uml;

움라우트

&#169;

&copy;

저작권

ª

&#170;

&ordf;

Feminine ordinal

&#171;

&laquo;

왼쪽 꺾인 괄호

&#172;

&not;

부정

­

&#173;

&shy;

Soft hyphen

?

&#174;

&reg;

등록상표

&hibar;

&#175;

&macr;

Macron accent

°

&#176;

&deg;

Degree sign

±

&#177;

&plusmn;

Plus or minus

²

&#178;

&sup2;

Superscript two

³

&#179;

&sup3;

Superscript three

´

&#180;

&acute;

Acute accent

μ

&#181;

&micro;

Micro sign (Mu)

&#182;

&para;

문단기호

·

&#183;

&middot;

Middle dot

¸

&#184;

&cedil;

Cedilla

¹

&#185;

&sup1;

Superscript one

º

&#186;

&ordm;

Masculine ordinal

&#187;

&raquo;

오른쪽 꺾인 괄호

¼

&#188;

&frac14;

4분의 1

½

&#189;

&frac12;

2분의 1

¾

&#190;

&frac34;

4분의 3

¿

&#191;

&iquest;

거꾸로된 물음표

A

&#192;

&Agrave;

Capital A, grave accent

A

&#193;

&Aacute;

Capital A, acute accent

A

&#194;

&Acirc;

Capital A, circumflex accent

A

&#195;

&Atilde;

Capital A, tilde

A

&#196;

&Auml;

Capital A, dieresis or umlaut mark

A

&#197;

&Aring;

Capital A, ring (Angstrom)

Æ

&#198;

&AElig;

Capital AE diphthong (ligature)

C

&#199;

&Ccedil;

Capital C, cedilla

E

&#200;

&Egrave;

Capital E, grave accent

E

&#201;

&Eacute;

Capital E, acute accent

E

&#202;

&Ecirc;

Capital E, circumflex accent

E

&#203;

&Euml;

Capital E, dieresis or umlaut mark

I

&#204;

&Igrave;

Capital I, grave accent

I

&#205;

&Iacute;

Capital I, acute accent

I

&#206;

&Icirc;

Capital I, circumflex accent

I

&#207;

&Iuml;

Capital I, dieresis or umlaut mark

Ð

&#208;

&ETH;

Capital Eth, Icelandic

N

&#209;

&Ntilde;

Capital N, tilde

O

&#210;

&Ograve;

Capital O, grave accent

O

&#211;

&Oacute;

Capital O, acute accent

O

&#212;

&Ocirc;

Capital O, circumflex accent

O

&#213;

&Otilde;

Capital O, tilde

O

&#214;

&Ouml;

Capital O, dieresis or umlaut mark

×

&#215;

&times;

Multiply sign

Ø

&#216;

&Oslash;

width="130"Capital O, slash

U

&#217;

&Ugrave;

Capital U, grave accent

U

&#218;

&Uacute;

Capital U, acute accent

U

&#219;

&Ucirc;

Capital U, circumflex accent

U

&#220;

&Uuml;

Capital U, dieresis or umlaut mark

Y

&#221;

&Yacute;

Capital Y, acute accent

Þ

&#222;

&THORN;

Capital Thorn, Icelandic

ß

&#223;

&szlig;

Small sharp s, German (sz ligature)

a

&#224;

&agrave;

Small a, grave accent

a

&#225;

&aacute;

Small a, acute accent

a

&#226;

&acirc;

Small a, circumflex accent

a

&#227;

&atilde;

Small a, tilde

a

&#228;

&auml;

Small a, dieresis or umlaut mark

a

&#229;

&aring;

Small a, ring

æ

&#230;

&aelig;

Small ae diphthong (ligature)

c

&#231;

&ccedil;

Small c, cedilla

e

&#232;

&egrave;

Small e, grave accent

e

&#233;

&eacute;

Small e, acute accent

e

&#234;

&ecirc;

Small e, circumflex accent

e

&#235;

&euml;

Small e, dieresis or umlaut mark

i

&#236;

&igrave;

Small i, grave accent

i

&#237;

&iacute;

Small i, acute accent

i

&#238;

&icirc;

Small i, circumflex accent

i

&#239;

&iuml;

Small i, dieresis or umlaut mark

ð

&#240;

&eth;

Small eth, Icelandic

n

&#241;

&ntilde;

Small n, tilde

o

&#242;

&ograve;

Small o, grave accent

o

&#243;

&oacute;

Small o, acute accent

o

&#244;

&ocirc;

Small o, circumflex accent

o

&#245;

&otilde;

Small o, tilde

o

&#246;

&ouml;

Small o, dieresis or umlaut mark

÷

&#247;

&divide;

Division sign

ø

&#248;

&oslash;

Small o, slash

u

&#249;

&ugrave;

Small u, grave accent

u

&#250;

&uacute;

Small u, acute accent

u

&#251;

&ucirc;

Small u, circumflex accent

u

&#252;

&uuml;

Small u, dieresis or umlaut mark

y

&#253;

&yacute;

Small y, acute accent

þ

&#254;

&thorn;

Small thorn, Icelandic

y

&#255;

&yuml;

Small y, dieresis or umlaut mark


'' 카테고리의 다른 글

[commons-fileupload]파일 업로드  (0) 2018.07.02
[html]a태그 onclick 사용하기  (0) 2018.06.29
[ASCII]아스키코드의 인코딩 값(펌글)  (0) 2018.06.28
[보안]xss와 sql injection  (0) 2018.06.15
[web server / was]아파치와 톰캣  (0) 2018.06.07

Character Encoding (ascii chart)


character encoding decimal
NULL %0 0
 %1 1
 %2 2
 %3 3
 %4 4
 %5 5
 %6 6
 %7 7
 %8 8
TAB %9 9
CR %A 10
%B 11
%C 12
LF %D 13
 %E 14
 %F 15
 %10 16
 %11 17
 %12 18
 %13 19
 %14 20
 %15 21
 %16 22
 %17 23
 %18 24
 %19 25
 %1A 26
 %1B 27
 %1C 28
 %1D 29
 %1E 30
 %1F 31
SPACE %20 32
! %21 33
%22 34
# %23 35
$ %24 36
% %25 37
& %26 38
%27 39
( %28 40
) %29 41
* %2A 42
+ %2B 43
, %2C 44
%2D 45
. %2E 46
/ %2F 47
0 %30 48
1 %31 49
2 %32 50
3 %33 51
4 %34 52
5 %35 53
6 %36 54
7 %37 55
8 %38 56
9 %39 57
: %3A 58
; %3B 59
< %3C 60
= %3D 61
> %3E 62
? %3F 63
@ %40 64
A %41 65
B %42 66
C %43 67
D %44 68
E %45 69
F %46 70
G %47 71
H %48 72
I %49 73
J %4A 74
K %4B 75
L %4C 76
M %4D 77
N %4E 78
O %4F 79
P %50 80
Q %51 81
R %52 82
S %53 83
T %54 84
U %55 85
V %56 86
W %57 87
X %58 88
Y %59 89
Z %5A 90
[ %5B 91
\ %5C 92
] %5D 93
^ %5E 94
_ %5F 95
` %60 96
a %61 97
b %62 98
c %63 99
d %64 100
e %65 101
f %66 102
g %67 103
h %68 104
i %69 105
j %6A 106
k %6B 107
l %6C 108
m %6D 109
n %6E 110
o %6F 111
p %70 112
q %71 113
r %72 114
s %73 115
t %74 116
u %75 117
v %76 118
w %77 119
x %78 120
y %79 121
z %7A 122
{ %7B 123
| %7C 124
} %7D 125
~ %7E 126
&127; %7F 127
%80 128
 %81 129
%82 130
ƒ %83 131
%84 132
%85 133
%86 134
%87 135
ˆ %88 136
%89 137
Š %8A 138
%8B 139
Π%8C 140
 %8D 141
Ž %8E 142
 %8F 143
 %90 144
%91 145
%92 146
%93 147
%94 148
%95 149
%96 150
%97 151
˜ %98 152
%99 153
š %9A 154
%9B 155
œ %9C 156
 %9D 157
ž %9E 158
Ÿ %9F 159
%A0 160
¡ %A1 161
¢ %A2 162
£ %A3 163
¤ %A4 164
¥ %A5 165
¦ %A6 166
§ %A7 167
¨ %A8 168
© %A9 169
ª %AA 170
« %AB 171
¬ %AC 172
%AD 173
® %AE 174
¯ %AF 175
° %B0 176
± %B1 177
² %B2 178
³ %B3 179
´ %B4 180
µ %B5 181
%B6 182
· %B7 183
¸ %B8 184
¹ %B9 185
º %BA 186
» %BB 187
¼ %BC 188
½ %BD 189
¾ %BE 190
¿ %BF 191
À %C0 192
Á %C1 193
 %C2 194
à %C3 195
Ä %C4 196
Å %C5 197
Æ %C6 198
Ç %C7 199
È %C8 200
É %C9 201
Ê %CA 202
Ë %CB 203
Ì %CC 204
Í %CD 205
Î %CE 206
Ï %CF 207
Ð %D0 208
Ñ %D1 209
Ò %D2 210
Ó %D3 211
Ô %D4 212
Õ %D5 213
Ö %D6 214
× %D7 215
Ø %D8 216
Ù %D9 217
Ú %DA 218
Û %DB 219
Ü %DC 220
Ý %DD 221
Þ %DE 222
ß %DF 223
à %E0 224
á %E1 225
â %E2 226
ã %E3 227
ä %E4 228
å %E5 229
æ %E6 230
ç %E7 231
è %E8 232
é %E9 233
ê %EA 234
ë %EB 235
ì %EC 236
í %ED 237
î %EE 238
ï %EF 239
ð %F0 240
ñ %F1 241
ò %F2 242
ó %F3 243
ô %F4 244
õ %F5 245
ö %F6 246
÷ %F7 247
ø %F8 248
ù %F9 249
ú %FA 250
û %FB 251
ü %FC 252
ý %FD 253
þ %FE 254
ÿ %FF 255


출처 - https://grox.net/utils/encoding.html

'' 카테고리의 다른 글

[html]a태그 onclick 사용하기  (0) 2018.06.29
[html]html 특수문자 표(펌글)  (0) 2018.06.28
[보안]xss와 sql injection  (0) 2018.06.15
[web server / was]아파치와 톰캣  (0) 2018.06.07
[CORS-크로스 도메인]프로토콜 문제  (0) 2018.06.05

자주 쓰는 프로그램, 서비스의 포트 번호


 포트 포워딩을 하려면 인터넷 서비스 소프트웨어가 쓰는 포트 번호를 알아야 한다. 사람들이 많이 쓰는 네트워크 서비스, 메신저, P2P 프로그램의 포트 번호를 정리한다.

포트번호

서비스

포트번호 

서비스 

 21

FTP 

 88

 케베로스 보안 규격

 22

보안 텔넷(SSH)

 110

POP3(메일 수신) 

 23

텔넷

 118, 156

SQL 서비스 

 25

SMTP(메일 발송)

 137 ~ 139

NetBIOS(파일 서버) 

 42

호스트 네임 서버 

 161

 SNMP(네트워크 관리)

 53

도메인 메인 서버 

 220

 IMAP3(메일 서비스)

 70

고퍼(Gopher) 

 

 

 79

핑거(Finger)

 

 

 80

웹(HTTP) 

 

 


출처 - http://jyhpan.tistory.com/162

**2008년도 게시물이라 계속해서 수정 예정, 정확한 정보는 아래 링크 참고


참고 - https://ko.wikipedia.org/wiki/TCP/UDP%EC%9D%98_%ED%8F%AC%ED%8A%B8_%EB%AA%A9%EB%A1%9D

jsp파일에 자바형식의 코드를 사용할 때의 불편한 점을 해결하고자 등장한 것이 EL(Expression Language)과 JSTL(Jsp Standard Tag Library)이다.



JSTL(Jsp Standard Tag Library)

jsp는 자신만의 태그를 추가할 수 있는 기능을 제공한다. <jsp:include>나 <jsp:userbean>과 같은 커스텀 태그처럼 연산이나 조건문, 반복문 등을 편하게 처리할 수 있도록 제공하는 것이 JSTL이다.




종류

 분류

 접두어

특징 

URL 

 Core

 c

 일반 프로그래밍에서 제공하는 것과 유사한 변수 선언

http://java.sun.com/jsp/jstl/core

 실행 흐름의 제어 기능 제공

 페이지 이동 기술 제공

 XML

 x

 XML문서를 처리할 때 필요한 기능 제공

http://java.sun.com/jsp/jstl/xml

Formatting

 fmt

 숫자, 날짜, 시간을 포매팅하는 기능을 제공

http://java.sun.com/jsp/jstl/fmt

 국제화, 다국어 지원 기능 제공

 Database

 sql

 db의 데이터를 입력, 수정, 삭제, 조회하는 기능 제공

http://java.sun.com/jsp/jstl/sql

 Function

 fn

 문자열 관련 함수 제공

http://java.sun.com/jsp/jstl/functions


1
2
3
4
5
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
cs

이런 형식으로 사용하고자 하는 jsp파일에 임포트해주면 된다.




Core Tag

태그이름

 설명

태그이름

설명 

<c:set/>

 변수 선언 및 설정

<c:catch/>

 예외처리

<c:remove/>

 변수 제거

<c:forEach/>

 반복문

<c:out/>

 변수 출력

<c:forTokens/>

 구분자로 분할한 반복문

<c:/choose/>

 swich문, if-else문과 비슷

<c:url/>

 url생성

<c:when/>

<c:param/>

 파라미터 추가

<c:otherwise/>

<c:import/>

 페이지 첨부

<c:if/>

 조건문(else는 없음)

<c:redirect/>

 url 이동



나머지는 다음에...

jsp파일에 자바형식의 코드를 사용할 때의 불편한 점을 해결하고자 등장한 것이 EL(Expression Language)과 JSTL(Jsp Standard Tag Library)이다.



EL(Expression Language)

<%= %>, out.print()와 같은 자바코드를 사용하지 않고 더 간편하게 출력을 지원하기 위한 도구이다. 


문법

 - parameter 형식(request.setParameter("abc")) : ${param.abc}

 - attribute 형식(request.setAttribute("cnt", 100)) : ${cnt+1} (원래 <%=cnt+1%>)

 - 값을 찾을 때는 작은 Scope에서 큰 Scope으로 찾는다. (page -> request -> session -> application)


내장객체


 내장객체

 용도

pageScope

page영역에 존재하는 객체 참조 

requestScope 

request영역에 존재하는 객체 참조 

sessionScope 

session영역에 존재하는 객체 참조 

applicationScope

application영역에 존재하는 객체 참조 

param

parameter 값을 얻어올 때 사용 (1개의 key에 1개의 value)

paramValue

parameter 값을 배열로 얻어올 때 사용 (1개의 key에 여러개의 value)

header 

header 정보를 얻어올 때 사용 (1개의 key에 1개의 value)

headerValue

header 정보를 배열로 얻어올 때 사용 (1개의 key에 여러개의 value)

cookie

쿠키 객체를 참조 ( ${cookie.key값.value값}으로 쿠키 값 조회 )

initParam

초기 parameter 조회

pageContext

pageContext 객체 참조 


**paramValue / headerValue 사용법 두 가지!

 1. ${paramValue.array[0]} : index 0으로 시작

 2. ${paramValue[array][1]} : index 1로 시작

open source application framework for Java platform

Java 기반의 웹, 엔터프라이즈 애플리케이션 개발을 단순화하여 효율성과 생산성을 높일 수 있게 도와주는 container와 library들의 집합이다.



Spring을 이용한 애플리케이션 개발의 장점

- Dependency injection과 interface를 활용한 객체들 간의 느슨한 결합

- POJOs를 이용한 쉬운 개발(기존에 존재하는 라이브러리 등의 지원에 용이)

- Aspects와 common conventions, annotation을 통한 선언적 프로그래밍

- Aspects와 templates을 이용한 단순 반복 코드 제거



특징

- 크기가 작아 부하가 적으며 성능이 우수하다. java객체의 life-cycle을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.

- Dependency Injection(의존성 주입)을 지원한다. xml 또는 annotation 기반 설정을 통해 객체들간의 의존관계를 설정한다.

- 간단한 컴포넌트로 복잡한 어플리케이션을 구성하고 설정할 수 있다.

- AOP(관점 지향 프로그래밍)을 위한 풍부한 지원을 한다.

- 느슨한 결합과 좋은 이식성으로 유지보수에 용이하다.

- MVC framework 및 RESTful web service framework 등을 제공함으로 효율적인 웹 어플리케이션 개발을 지원한다.




'spring framework' 카테고리의 다른 글

[Spring]메이븐(Maven)에 대해..그리고 컴파일과 빌드의 차이  (0) 2019.05.08
[EL/JSTL]JSTL이란?  (0) 2018.06.20
[EL/JSTL]EL이란?  (0) 2018.06.19

xss공격과 sql injection은 웹 해킹의 대표적인 기법이다. 이 두 가지 보안이슈에 대해 알아보았다.



XSS 공격 (Cross Site Scripting)

 CSS라고 말하는 곳도 있지만 CSS는 이미 Cascading Style Sheets의 약어로 쓰이고 있기 때문에 혼동을 방지하고자 보통 XSS라고 한다. XSS는 공격하고자 하는 사이트에 악의적인 스크립트를 삽입하여 비정상적인 페이지가 보이게 함으로써 타 사용자의 사용을 방해하거나 쿠키 및 기타 개인정보를 탈취하는 기버법이다. 여러 사용자가 접근 가능한 게시판 등에 코드를 삽입하는 경우도 많으며, 메일과 같은 매체를 통해서도 전파된다.


 간단하게 id를 입력하면 해당 id를 출력해주는 사이트가 있다고 가정하자. 보통의 사용자는 id만을 입력하겠지만 입력창에 <script>alert(1);</script>를 입력하면 그대로 script가 실행되는것을 볼 수 있다. 이러한 형식으로 해커들은 쿠키정보 및 세션ID 획득, 악성코드 다운로드, 개인정보를 빼가는 거짓 페이지를 노출하는 등의 해킹을 할 수 있다.



SQL-Injection

 말 그대로 sql문에 의도적인 쿼리를 삽입하여 공격자가 원하는 데이터를 얻는 기법이다. 대표적으로 아이디와 패스워드를 입력하는 로그인 페이지를 타겟으로 sql 쿼리문의 true/false의 논리적 연산 오류를 이용하여 로그인 인증 쿼리문이 무조건 true의 결과값이 나오게 하여 인증을 무력화시키는 기법이 있다. 로그인을 할 때 입력창에

' or 1=1--

' or 1=1#

' or 2>1--

등을 입력하면 이를 막아놓지 않은 사이트에서는 쿼리문이 항상 true가 되어 아이디와 비밀번호를 몰라도 로그인을 할 수 있게 된다.


 이외에도 많은 방법으로 데이터를 해킹한다. 아래 링크를 참고하면 좋을 것 같다.


참고 - http://mrrootable.tistory.com/25

+ Recent posts