Tomacat 서버의 기본 문자 처리 방식은 IOS-8859-1 방식. 따라서 개발자가 별도의 한글 인코딩을 하지 않으면 한글이 깨져 보이는 현상이 있음.

Get 방식과 Post 방식에 따라서 한글처리 방식에 차이가 있음.

 * Get 방식 요청
(server.xml 수정)

<Connector URIEncoding="EUC-KR" port="8080"......

bold 부분 추가 한뒤 아래 창에 server 에서 publish 해야 적용됨.


 * Post 방식 요청
(request.setCharacterEncoding() Method 이용)


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


.......

request.setCharacterEncoding("EUC-KR"); // 한글 안깨지기

.......

}


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

Servlet Parameter  (0) 2016.07.30
Servlet - HTML Form 태그  (0) 2016.07.30
Servlet - url mapping  (0) 2016.07.19
내장 객체  (0) 2016.07.19
예제 코드  (0) 2016.07.12


Form 태그의 submit 버튼 클릭하여 데이터를 서버로 전송하면,

Servlet에서는 HttpServletRequest 객체를 이용하여 Parameter 값을 얻을수 있음



 * HTML 파일


<form action="Form" method="post">

이름: <input type="text" name="name" size="10"><br/>

아이디: <input type="text" name="id" size="10"><br/>

비밀번호: <input type="password" name="pw" size="10"><br/>

......

<input type="submit" value="전송">


</form>


 * Servlet 파일


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


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

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

String pw = request.getParameter("pw")

.......


}


HTML의 Bold 처리한 값이 Servlet의 request.getParameter를 통해 Parameter 값을 얻음

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

Servlet 한글 처리  (0) 2016.07.30
Servlet - HTML Form 태그  (0) 2016.07.30
Servlet - url mapping  (0) 2016.07.19
내장 객체  (0) 2016.07.19
예제 코드  (0) 2016.07.12


* HTML Form 태그

- 서버로 정보를 전달할 때 사용하는 태그



* Input

- 태그 종류 지정


속성(type, name, value)

- type : 태그 종류 지정(ex, text, password, submit, checkbox, radio, reset)

- name : input 태그 이름

- value : name 에 해당하는 값(ex, name = value)


type = text

- 일반적인 데이터를 입력하기 위해 사용

<input type="text" name="name" size="10">


type = password

- 로그인 회원가입 페이지 등에서 비밀번호를 입력하기 위해 사용

<input type="password" name="name" size="10">


type = submit

- form내의 데이터를 전송할때 사용

<input type="submit" value="전송">


type = reset

- form내의 데이터를 초기화 할때 사용

<input type="reset" value="초기화">


type = checkbox

- 데이터 값을 여러개 전송 할때 사용

<input type="checkbox" name="fav" value="cheesecake">치즈케이크

..........


type = radio

- checkbox와 달리 여러 개의 데이터 값 중 한 개의 값 만을 전송 할때 사용

<input type="radio" name="country" value="korea" checked="checked">대한민국

..........


select

- 리스트 형태의 데이터를 사용

<select name="age">

<option value="10s">10대</option>

......

</select>



Form 태그

- Input 태그들의 값을 서버로 전송하기 위한 정보를 담고 있음.

<form action="Form" method="post">

Form은 요청하는 컴포넌트의 이름(ex. join.jsp, ....)

post는 요청을 처리하는 방식(ex. get, post)


ex) join.jsp (회원가입을 위한 페이지)


Get : http://ipaddress:portnumber/context/path/join?id="aaa"&name="김철수"


Post: http://ipaddress:portnumber/context/path/join

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

Servlet 한글 처리  (0) 2016.07.30
Servlet Parameter  (0) 2016.07.30
Servlet - url mapping  (0) 2016.07.19
내장 객체  (0) 2016.07.19
예제 코드  (0) 2016.07.12

Servlet 에서 url 매핑 하는 방법은 두가지가 있다.


하나는 어노테이션. 자바 코딩부분에서 @WebServlet("") 이 부분을 수정하는 것이다. 주의할 점은 큰따옴표 안에 / 를 넣고 원하는 url 주소를 넣어야 한다는점이다.


다른 하나는 그 프로젝트에 WebContent -> WEB-INF 에 web.xml 이 있는데, 거기서 원래 있는 코드 아래에 다음의 코드를 입력하여 준다.


  <servlet>

  <servlet-name>test</servlet-name>

  <servlet-class>com.javalec.ex.Test</servlet-class>

  </servlet>

  <servlet-mapping>

  <servlet-name>test</servlet-name>

  <url-pattern>/B</url-pattern>

  </servlet-mapping>


두번째 줄부터 설명을 하면 servlet의 클래스 명을 자신이 원하는 이름으로 명명할수있는게 servle-name 이고


servlet-class 에는 패키지 명까지 다 적어야한다.


그 다음 servlet-mapping 은 자신이 명명한 servlet-name 을 자신이 url-pattern 을 통해 보이는 url 주소를 변경하고 싶을때 사용한다. 그래서 url-pattern 에 / 와 함께 자신이 원하는 url 주소를 입력하여 매핑을 한다.

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

Servlet Parameter  (0) 2016.07.30
Servlet - HTML Form 태그  (0) 2016.07.30
내장 객체  (0) 2016.07.19
예제 코드  (0) 2016.07.12
웹 프로그래밍이란?  (0) 2016.07.06

내장객체(Implicit Object)의 개요

* 내장 객체는 JSP 페이지 내에서 제공하는 특수한 레퍼런스 타입의 변수(또는 객체). 사용하고자 하는 변수와 메소드로 접근.

* JSP 페이지에서, 변수 선언이나 객체 생성 없이, 특수한 레퍼런스 타입의 변수 사용 가능.


내장객체의 종류


내장 

객체 리턴 타입 

설명 

 request 

 javax.servlet.http.HttpServletResponse 또는  javax.servlet.ServletResponse 

 웹 브라우저의 요청 정보를 저장하고 있는 객체 

 response 

 javax.servlet.http.HttpServletResponse 또는  javax.servlet.ServletResponse

 웹 브라우저의 요청에 대한 응답 정보를 저장 하고 있는 객체 

 out 

 javax.servlet.jsp.JspWriter 

 JSP 페이지를 출력할 내용을 가지고 있는 출력 스트림 객체 

 session 

 javax.servlet.http.HttpSession 

 하나의 웹 브라우저 내에서 정보를 유지하기 위한 세션 정보를 저장하고 있는 객체 

 application 

 javax.servlet.ServletContext 

 웹 애플리케이션 Context의 정보를 저장하고 있는 객체 

 page Context 

 javax.servlet.PageContext 

 JSP 페이지에 대한 정보를 저장하고 있는 객체 

 page 

 java.lang.Object 

 JSP 페이지를 구현한 자바 클래스 객체 

 config 

 javax.servlet.Servlet.Config 

 JSP 페이지에 대한 설정 정보를 저장하고 있는 객체 

 exception 

 java.lang.Throwable 

JSP 페이지에서 예외가 발생한 경우에 사용 되는 객체 



내장객체의 영역(scope)


* page, request, session, application 4개의 영역. 기본 객체의 영역은 객체의 유효기간이라고도 불림, 객체 공유 선택을 나타냄


* page 영역: 웹 브라우저의 요청 시 단 한개의 페이지만 대응 됨. 즉, page 영역은 개체를 하나의 페이지 내에서만 공유.


* request 영역: 한번의 웹 브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가 대응됨. 즉, 웹 브라우저의 한번의 요청에 한 개의 페이지만 요청 될수있고, 때에 따라 같은 request 영역이면 두 개의 페이지가 같은 요청을 공유할 수 있음.


*session 영역: 하나의 웹 브라우저당 1개의 session 객체가 생성됨. 즉, 같은 웹 브라우저 내에서 요청되는 페이지들은 같은 객체 공유


* application 영역: 하나의 웹 애플리케이션당 1개의 application 객체 생성. 즉, 같은 웹 애플리케이션에 요청되는 페이지들은 같은 객체 공유.






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

Servlet Parameter  (0) 2016.07.30
Servlet - HTML Form 태그  (0) 2016.07.30
Servlet - url mapping  (0) 2016.07.19
예제 코드  (0) 2016.07.12
웹 프로그래밍이란?  (0) 2016.07.06

안드로이드의 神 - 444p

 

-내용: 호출 시에 파라미터 'data'의 값이 null이 아니고 SUCCESS이면 [요청결과]에서 '성공'으로 표시하고, 'data' 파라미터가 없거나 SUCCESS 값이 아니면 [요청결과]에 '실패' 메시지를 보여준다.

 

index.jsp

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
   
 <%!
  final String SUCCESS = "성공";
  final String FAILURE = "실패";
  
  String getResultSuccess(int aResultValue)
  {
   String result = null;
   
   switch(aResultValue)
   {
    case 0:
     result = SUCCESS;
     break;
    case -1:
     result = FAILURE;
     break;
    default:
     break;
   }
   return result;
  }
 %>
 
 <%
  String result = null;
  String data = request.getParameter("data");
  
  if(null != data && true == data.equals("SUCCESS")) //true == 는 생략해도 됨.
  {
   result = getResultSuccess(0);
  }
  else
  {
   result = getResultSuccess(-1);
  }
 %>
 
<!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>
 data="<%=data %>"<br/>
 <b>[ 요청결과 ]</b>
 <b><%= result %></b>
</body>
</html>

 

 

// 여러 오류가 있었는데 마지막 하나는 result를 null 말고 empty 로 하는게 더 확실하다고 강사님 께서 말씀하심.

empty는 값이 주어지지 않는데 공간은 있고, null은 아예 없는것. 그래서 나중에 DB나 다른 것과 연동 될 때 차이가 있음.

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

Servlet Parameter  (0) 2016.07.30
Servlet - HTML Form 태그  (0) 2016.07.30
Servlet - url mapping  (0) 2016.07.19
내장 객체  (0) 2016.07.19
웹 프로그래밍이란?  (0) 2016.07.06

웹 프로그래밍: WWW(이하 웹(Web)) 기반에서 동작되는 프로그래밍 방식.

 

하이퍼텍스트를 기반으로 이루어진 것. 문서 활용에 엄청난 편리성을 제공함.

 

사용자 인터페이스를 제공하게 됨, SNS와 URL 등 다양한 활용방안이 생김.

 

 

HTML

 

* 웹의 발전에 가장 중요한 역할을 한 마크업 언어로, 정보를 한곳에 모아주는 역할을 한다.

(마크업 언어란, 일연의 요소를 단순하게 나열한 것으로, 이때 각 요소들은 어떠한 특수 문자들에 의해 구분되며, 특수 문자 안에 포함되어 있는 일련의 구문이나 다른 항목을 어떻게 표시할지를 정하는 언어. ex) <p>문장의 단락</p> 와 같은 형태로 표현됨. 이러한 마크업 언어들 중에서 HTML은 문서의 내용을 표시하는 것에 중점을 둔 언어.

 

* 정적인 웹 페이지를 작성하기에 적합.

 

 

동적 웹 페이지

 

HTML의 단점: 프로그래밍 코드를 사용할 수 없다는 점과 데이터베이스 연동을 할 수 없다는 점.

 

HTML의 단점 때문에 등장한 것이 동적 웹 페이지. 옛날에 우리가 개인 홈페이지를 만들 때는 HTML 태그와 CSS, JavaScript 만으로 충분했음.

(CSS: 마크업 언어인 HTML 등이 실제 표현되는 방법을 기술하는 언어이다.)

(JavaScript: 객체 기반의 스크립트 프로그래밍 언어로, Ajax 기술에서는 ActiveX(마이크로소프트사에서 개발한 재사용 컴포넌트)를 대체하며, HTML5에서는 Canvas를 사용해 플래시(Flash)를 대체할 때 사용한다.)

(Ajax (Asynchronous JavaScript + XML): JavaScript에 의한 비동기적인(Asynchronous) 통신으로 XML 기반인 데이터를 클라이언트인 웹 브라우저와 서버 사이에서 교환하는 방법. 여기서 비동기적인 통신이란 서버가 응답을 받을 준비가 되어 있는지와 상관없이, 웹 브라우저가 서버로 정보를 전송하는 것을 뜻한다. 따라서 사용자는 언제 정보가 전송되었는지 알지 못하며, 이와 같은 방법을 사용하는 Ajax는 정보를 더 빨리 전송한다.)

 

하지만 요즘은 글이나 댓글들 조차 데이터 베이스에 저장이된다. HTML만으로는 방대한 대이터나 쇼핑몰과 같은 실시간으로 수많은 데이터의 변화를 처리하거나 저장하기에는 불가능하다. 그래서 CGI, ASP, PHP, JSP등이 개발 되었다. 웹 프로그래밍은 기본적으로 클라이언트/서버 방식 이다.

 

 

 

 

Sevrvlet과 JSP

 

Servlet은 클라이언트를 쓰레드로 처리함. 그래서 많은 클라이언트의 요구를 효과적으로 처리할 수 있다.

(쓰레드: 프로세스 내의 명령어 블록으로 프로세스 내에 있는것. 프로세스 이미 메모리를 할당받았으므로 쓰레드는 메모리를 할당받지 않는다. 하나의 프로세스를 여러 개의 쓰레드로 나누어 동시에 처리하는 것을 다중 쓰레딩 이라 한다. 다중 쓰레딩은 메모리는 점유하지 않으면서 프로그램의 수행 속도를 향상시킨다.)

 

JSP와 Servlet은 자바 기반으로 만들어진 웹 프로그래밍 언어. JSP는 Servlet에 비해 자바 코드에 덜 의존적이라 프로그래밍 하기가 보다 쉽고 편하다. JSP와 Servlet은 같은 처리 구조를 가진다. 보다 엄밀히 말하면 JSP는 페이지의 요청이 있을 때, 최초에 한 번 자바 코드로 변환된 후 Servlet 클래스로 컴파일 된다. 결론적으로 JSP는 실행시 Servlet으로 변환된다. 수행 속도에서는 JSP나 서블릿 간에 별 차이가 없다.

서블릿과 JSP는 상호 연계되어 작동하는데, JSP에서 정적인 부분을 담당하고 서블릿에서 보다 동적인 부분을 담당하여 효율적인 웹 사이트 구성이 가능하다. JSP는 주로 사용자용 화면인 뷰(View)의 구현에 사용되고, 서블릿은 사용자용 뷰와 프로그램 로직 사이를 제어하는 역할에 사용된다.

쓰레드 기반으로 사용자의 요청을 받아들이므로 동시에 다수의 사용자를 받아들이더라도 서버의 응답 속도가 많이 떨어지지 않는다는 장점에도 불구하고 Servlet은 그다지 사랑받지 못하고 있다. 이유는 Java 프로그램을 작성하는 형식과 같은 방식으로 웹 페이지를 작성하기 때문에 Java를 미리 학습하지 않으면 작성하기가 어렵기 때문이다.

JSP 역시 자바를 기반으로 한다. 하지만 ASP나 PHP 와 같이 서버에서 실행되는 스크립트 언어 방식으로 동적인 웹페이지를 작성하므로 서블릿의 장점은 그대로 가지고 있으며 작성하기가 쉽다는 장점이 더해졌다.

JSP는 자바 서블릿 기술을 확장시켜 웹 환경상에서 100% 순수한 자바만으로 서버 사이드 모듈을 개발할 수 있는 기술. 서버 사이드에서 백 엔드 서버와 연동하여 웹상의 최종 사용자에게 표시 가능.

 

JSP에 대해 요약하면,

 

*객체지향적이다.

*플랫폼에 독립적이다.

*보안성이 뛰어나다.

*멀티쓰레드를 지원한다

*C언어 기반으로 코드의 접근성이 용이하다

*분산 프로그래밍을 지원한다.

 

 

 

-은노기의 JSP 웹 프로그래밍 입문 22p 까지-

 

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

Servlet Parameter  (0) 2016.07.30
Servlet - HTML Form 태그  (0) 2016.07.30
Servlet - url mapping  (0) 2016.07.19
내장 객체  (0) 2016.07.19
예제 코드  (0) 2016.07.12

+ Recent posts