out 객체

out 객체는 서블릿/JSP 컨테이너가 응답 페이지를 만들기 위해 사용하는 출력 스트림 객체로

java.io.Writer 클래스를 상속한 javax.servelt.jsp.Jspwriter 클래스 타입으로 생성된다.

 

주로 응답페이지를 만들어낼 때 쓴다.

리턴  메소드명 설명
없음 clear() 출력 버퍼에 저장된 내용을 버린다. 만일 이미 버퍼가 다 채워져서 클라이언트로 전송되었을 경우에는 예외를 발생
없음 clearBuffer() 출력 버퍼에 저장되 내용을 버린다.  clear() 메소드와는 다르게 버퍼에 담긴 내용이 이미 전송된 이후에도 예외를 발생시키지 않고 현재 저장된 버퍼만 버림
없음 flush() 현재 버퍼에 저장되어 있는 내용을 클라이언트로 전송하고 버퍼를 비운다
없음 close()  출력 버퍼를 클라이언트로 전송하고 출력 스트림을 종료한다
boolean isAutoFlush() page 지시어의 autoFlush 속성으로 지정된 값을 리턴한다. 즉 출력 버퍼가 다채워졌을 때 버퍼 내용을 클라이언트로 전송하도록 지정되어 있으면 true리턴, 출력버퍼가 다 채워졌을 때 예외가 발생하도록 지정되어 있으면 false리턴
int getBufferSize() 출력 버퍼의 크기를 바이트 단위로 계산하여 정수 값으로 리턴
int getRemaining() 출력 버퍼의 남은 양을 바이트 단위로 계산하여 정수 값으로 리턴
없음 print(String str) 출력 스트림으로 str 문자열을 출력한다
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>

<h2>1부터 100까지의 합은?
	<%
		int sum = 0;
		for(int i = 1; i <= 100; i++)
		{
		    sum += i;
		}
	%>
	<%=sum %> 입니다 </h2>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

    <h2>1부터 100까지의 합은</h2>
    <%
    	int sum = 0;
    	for(int i = 1; i < 100; i++)
    	{
    	    sum += i;
    	}
    	out.print(sum + "입니다.</h2>");
    %>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>out object</title>
</head>
<body>
	<h2>out 객체</h2>
		<table border = '1'>
			<tr>
				<td>autoFlush 여부 </td>
				<td><%=out.isAutoFlush() %></td>
			</tr>
			
			<tr>
				<td>출력 버퍼의 크기</td>
				<td><%=out.getBufferSize() %> 바이트 </td>
			</tr>
			
			<tr>
				<td>출력 버퍼의 남은 양</td>
				<td><%=out.getRemaining() %> 바이트 </td>
			</tr>
		</table>
</body>
</html>

'JSP' 카테고리의 다른 글

[JSP] 영역 객체와 속성  (0) 2019.11.02
[JSP] config - 객체  (0) 2019.11.02
[JSP] application - 객체  (0) 2019.11.02
[JSP] Session 객체  (0) 2019.11.02
[JSP] pageContext 객체  (0) 2019.11.02
Application 객체

application 객체는 javax.servlet.ServletContext 클래스를 상속받아 웹 컨테이너가 구현하여

제공하는 객체.

 

1. 해당 웹 어플리케이션의 실행 환경을 제공하는 서버의 정보를 얻거나

2. 서버측 자원에 대한 정보를 얻거나

3. 해당 어플리케이션의 이벤트 로그를 다루는 메소드를 제공

 

리턴 메소드명 설명
int getMajorVersion() Servlet api 스펙의 Major 버전을 int로 리턴
int getMinorVersion() Servlet api 스펙의 Minor 버전을 int로 리턴
String getServerInfo() 서블릿/JSP 컨테이너의 이름과 버전을 문자열로 리턴
String getMimeType(String file) 서버에 존재하는 file이란 이름을 가진 파일의 MIME타입을 문자열로 리턴
java.net.URL getResource(String path) path로 지정된 경로의 자원을 url객체로 리턴. 없으면null
inputStream getResourceAsStream(String path) path로 지정된 경로의 자원을 InputStream 객체로 리턴. 없으면 null
String getRealPath(String path) path로 지정된 경로의 자원을 서버의 실제 파일 시스템상의 경로로 바꾸어 문자열로 리턴
없음 log(String msg) 문자열 msg를 서블릿 로그 파일에 기록
없음 log(String msg, java.lang.Throwable exception) 문자열 msg와 예외의 StackTrace 정보를 로그 파일에 기록 한다.
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Application Test</title>
</head>
<body>
	<h2>
		application 테스트
	</h2>
<table border = "1">
	<tr>
		<td> JSP 버전 </td>
		<td> <%=application.getMajorVersion() %>.<%=application.getMinorVersion() %>
	</tr>
	
	<tr>
		<td> 컨테이너 정보 </td>
		<td> <%=application.getServerInfo() %></td>
	</tr>
	
	<tr>
		<td> 웹 어플리케이션의 실제 파일시스템 경로 </td>
		<td> <%=application.getRealPath("/") %> </td>
	</tr>
</table>
</body>
</html>

 

'JSP' 카테고리의 다른 글

[JSP] config - 객체  (0) 2019.11.02
[JSP] out - 객체  (0) 2019.11.02
[JSP] Session 객체  (0) 2019.11.02
[JSP] pageContext 객체  (0) 2019.11.02
[JSP] Session 객체 - 메소드  (0) 2019.11.02
Http 프로토콜 요청

http 프로토콜은 request/response (요청 응답) 구조로 서버가 요청에 대한 응답을 끝낸다면 연결이 끊어지게 된다.

 

따라서, 정보가 유지되어야 할 필요가 있을 때 가상 연결(Virtual Connection)이라는 개념의 세션이 생겼고

 

JSP 에서는 이러한 세션을 session 내장 객체를 이용하여 구현해 준다.

 

웹사이트에서 접속을 하고 보안상의 이유로 페이지의 요청없이 일정시간이 지나면 자동으로 로그인 세션이 만료되었다는 메세지를 출력하고 강제로 로그아웃이 되버린다.

 

넥슨 게임 어플에서 현재 로그인된 연결들을 보여주면서 강제로 끊어줄 수 있다.

 

리턴 타입 메소드명 설명
String getId() 해당 세션의 세션 id를 문자열로 리턴해줌. session 객체 생성 시에 웹 컨테이너에 의해 자동으로 할당(만들어짐)
long getCreationTime() 1970년 1월 1일 00시 00분 00초(epoch)부터 해당 세션이 생성된 순간까지의 경과 시간을 밀리초로 계산하여 long형으로 리턴한다.
long getlastAccessedTime() epoch로 부터 해당 세션에 마지막으로 접근된 시간까지의 경과 시간을 밀리초로 계산하여 long형으로 리턴한다
int getMaxInactiveInterval() 클라이언트의 요청이 없을 시 서버가 해당 세션을 유지하도록 지정된 시간을 초 단위의 정수로 리턴한다.
없음 invalidate() 세션의 속성 값으로 저장된 모든 객체를 반납하여 해당 세션을 종료 시킨다
boolean isNew() 새로운 세션일 경우 true를 리턴하고 기존에 세션이 유지되고 있으면 false를 리턴
없음 setMaxInactiveInterval(int seconds) 클라이언트의 요청이 없더라도 세션을 유지할 시간을 초단위의  정수값으로 설정한다. 음수로 설정하면 세션은 계속 유지된다.
없음 forward(String url) 현재 페이지의 요청과 응답에 관한 제어권을 URL로 지정된 주소로 영구적으로 넘긴다. forward된 페이지의 요청 처리가 종료되면 응답도 종료된다
없음 include(String url) 현재 페이지의 요청과 응답에 관한 제어권을 URL로 지정된 주소로 임시로 넘긴다. include된 페이지의 처리가 끝나면 제어권은 다시 원래의 페이지로 돌아온다. 

 

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    
<%
	session.setMaxInactiveInterval(10);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>session test</title>
</head>
<body>
<h2>세션 테스트</h2>
isNew() : <%=session.isNew() %><br>
생성시간 : <%=session.getCreationTime() %> <br>
최종 접속 시간 : <%=session.getLastAccessedTime() %><br>
세션 ID : <%=session.getId() %><br>

</body>
</html>

 

session.setMaxInactiveInterval(10); 10초 !

10초가 지나기 전까진 세션 ID 이 유지되어 isNew() : false 이다가

10초가 지난후에 새로 고침해버리면 true로 바뀐다

'JSP' 카테고리의 다른 글

[JSP] out - 객체  (0) 2019.11.02
[JSP] application - 객체  (0) 2019.11.02
[JSP] pageContext 객체  (0) 2019.11.02
[JSP] Session 객체 - 메소드  (0) 2019.11.02
[JSP] 내장객체 - http헤더  (0) 2019.11.02
리턴 메소드 설명
ServletRequest getRequest() 클라이언트의 요청 정보를 담고 있는 객체를 리턴한다
ServletResponse getResponse() 요청에 대한 응답 객체를 리턴한다(response 내장 객체를 리턴 한다).
JspWriter getOut() 응답 출력 스트림을 리턴한다(out 내장 객체를 리턴)
Object getPage() 서블릿 인스턴스 객체를 리턴한다(page 내장 객체를 리턴한다)
ServletConfig getServletConfig() 서블릿의 초기 설정 정보를 담고 있는 객체리턴(Config 내장객체 리턴)
ServletContext getServletContext() 서블릿의 실행 환경 정보를 담고 있는 객체를 리턴한다.(application 내장 객체를 리턴한다)
HttpSession getSession() 클라이언트의 세션 정보를 담고 있는 객체를 리턴한다(session 내장 객체를 리턴한다)
없음 forward(String url) 현재 페이지의 요청과 응답에 대한 제어권을 영구적으로 forward시키는 주소로 넘긴다.
없음 include(String url) 현재 페이지의 요청과 응답에 대한 제어권을 URL로 지정된 주소로 임시로 넘긴다. include 된 페이지의 처리가 끝나면 제어권은 다시 원래의 페이지로 돌아온다.

<pageContextTest1.jsp>

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<% 
	pageContext.forward("pageContextTest2.jsp");
%>

<pageContextTest2.jsp>

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>pageContextTest1에서 포워딩된 페이지</title>
</head>
<body>

<%
	pageContext.include("pageContextTest3.jsp");
%>
<h2>pageContextTest1.jsp의 forward 메소드로 포워딩된 페이지입니다</h2>
</body>
</html>

<pageContextTest3.jsp>

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>pageContextTest2를 include하는 페이지</title>
</head>
<body>
	<h3>include 되는 pageContextTest3.jsp</h3>
	<hr>
</body>
</html>

 

1) pageContextTest1.jsp에서 pageContextTest2.jsp로 포워드 메소드를 사용하여 이동하고 제어권을 넘겨받는다.

 

2) pageContextTest2.jsp에서 스크립틀릿의 include 메서드를 통해서

pageContextTest3.jsp으로 페이지를 요청하여 넘어가는 것이 아니라

pageContextTest2.jsp에서 pageContextTest3.jsp페이지의 내용을 나타내주는 기능을 함

 

3) 코드의 순서대로 pageContextTest3.jsp의 내용인

<h3>include 되는 pageContextTest3.jsp</h3>먼저 출력되고

 

pageContextTest2.jsp의 내용인

<h2>pageContextTest1.jsp의 forward 메소드로 포워딩된 페이지 입니다</h2>가 출력된다.

 

'JSP' 카테고리의 다른 글

[JSP] application - 객체  (0) 2019.11.02
[JSP] Session 객체  (0) 2019.11.02
[JSP] Session 객체 - 메소드  (0) 2019.11.02
[JSP] 내장객체 - http헤더  (0) 2019.11.02
[JSP] 내장 객체 - request  (0) 2019.11.02
세션 메소드
리턴 메소드 설명
httpSession getSession

요청한 클라이언트에 할당된 HttpSession 객체를 반환.

없다면 새로운 객체 생성

HttpSession getSession(Boolean create)

create 가 true 이면 getSession() 메소드와 동일한 결과를 리턴.

create 가 false로 지정하면 이전에 생성된 HttpSession 객체가 없을 경우 null을 리턴

String getRequestedSessionId() 요청한 클라이언트에 지정된 세선의 ID를 문자열로 리턴한다.
boolean isRequestedSessionIdValid() 요청에 포함된 클라이언트의 세션ID가 유효하면 true 아니면 false 리턴
쿠키, URL/URI, 요청 방식 관련 메소드

리턴 메소드 설명
Cookie[] getCookies() Http 요청 메세지의 헤더에 포함된 쿠키를 javax.servlet.http.Cookie 배열로 리턴
String getServerName() 서버의 도메인명을 문자열로 리턴
int getServerPort() 서버의 포트번호를 int형으로 리턴
StringBuffer getRequestURL() 요청 URL을 StringBuffer로 리턴
String getRequestURI() 요청URI를 문자열로 리턴
String getQueryString() 요청에 사용된 쿼리 문장을 문자열로 리턴
String getRemoteHost() 클라이언트의 호스트 이름을 문자열로 리턴
String getRemoteAddr() 클라이언트 IP주소를 문자열로 리턴
String getProtocol() 요청에 사용된 프로토콜 이름을 문자열로 리턴
String getMethod() 요청에 사용된 요청 방식(Get,Post)를 문자열로 리턴
String getContextPath() 해당 JSP 페이지의 컨텍스트 경로를 문자열로 리턴
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Request Test3</title>
<style type="text/css">
h1
{
	text-align : center;
}
table
{
	margin : auto;
	width : 400px;
	border : 1px solid red;
}
</style>
</head>
<body>
	<h1>쿠키, URL/URI, 요청방식에 관련된 정보 예제</h1>
	<table border = "1">
		<tr>
			<td>쿠키 정보</td>
		<%
		Cookie[] cookie = request.getCookies();
		if(cookie == null)
		{
		    %>
		    <td>쿠키가 존재하지 않습니다</td>
		<%
		}
		else
		{
		    for(int i = 0; i < cookie.length; i++)
		    {
		        %>
		        <td><%=cookie[i].getName() %>
		        <%=cookie[i].getValue() %>) &nbsp;&nbsp;
		        </td>
		        <% 
		    }
		}
		%>
			</tr>
			<tr>
				<td>서버 도메인명</td>
				<td><%=request.getServerName() %>
			</tr>
			
			<tr>
				<td>서버 포트번호</td>
				<td><%=request.getServerPort() %>
			</tr>
			
			<tr>
				<td>요청 URL </td>
				<td><%=request.getRequestURL() %>
			</tr>
			
			<tr>
				<td>요청 URI</td>
				<td><%=request.getRequestURI() %>
			</tr>
			
			<tr>
				<td>요청 쿼리</td>
				<td><%=request.getQueryString() %>
			</tr>
			
			<tr>
				<td>클라이언트 호스트명</td>
				<td><%=request.getRemoteHost() %>
			</tr>
			
			<tr>
				<td>클라이언트 IP 주소</td>
				<td><%=request.getProtocol() %>
			</tr>
			
			<tr>
				<td>프로토콜</td>
				<td><%=request.getProtocol() %>
			</tr>
			
			<tr>
				<td>요청 방식</td>
				<td><%=request.getMethod() %></td>
			</tr>
			
			<tr>
				<td>컨텍스트 경로</td>
				<td><%=request.getContextPath() %></td>
			</tr>
	</table>
</body>
</html>

 

'JSP' 카테고리의 다른 글

[JSP] Session 객체  (0) 2019.11.02
[JSP] pageContext 객체  (0) 2019.11.02
[JSP] 내장객체 - http헤더  (0) 2019.11.02
[JSP] 내장 객체 - request  (0) 2019.11.02
[JSP] 서블릿 페이지-> JSP페이지/ JSP 스크립트 요소  (0) 2019.10.30
http헤더
리턴 타입 메소드명 설명
String / null getHeader(String headerName) http요청헤더의 headerName으로 지정된 할당된 값을 리턴
Enumeration getHeader(String headerName) headerName으로 지정된 이름으로 할당된 모든 값을 java.util.Enumeration객체로 리턴
Enumeration getHeaderNames() Http 요청 헤더에 포함된 모든 헤더 이름을 java.util.Enumeration 객체로 리턴한다.
int getIntHeader(String headerName) headerName 헤더의 값을 int 타입으로 리턴
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    
<%@ page import = "java.util.Enumeration" %>
<html>
<head>
<meta charset="utf-8">
<title>Request Test2</title>
<style type="text/css">
h1
{
	text-align : center;
}

table
{
	margin : auto;
	width : 400px;
	border : 1px solid red;
}
</style>
</head>
<body>
	<h1>헤더정보 예제</h1>
	<table>
		<tr>
			<td>헤더이름</td>
			<td>헤더값</td>
		</tr>
		
		<%
		Enumeration e = request.getHeaderNames();
		while(e.hasMoreElements())
		{
		    String headerName = (String)e.nextElement();
		    %>
		    <tr>
		    <td><%=headerName %>
		    </td>
		    <td><%=request.getHeader(headerName) %>
		    </td>
		<% 
		}
		%>
	</table>
</body>
</html>

 

'JSP' 카테고리의 다른 글

[JSP] pageContext 객체  (0) 2019.11.02
[JSP] Session 객체 - 메소드  (0) 2019.11.02
[JSP] 내장 객체 - request  (0) 2019.11.02
[JSP] 서블릿 페이지-> JSP페이지/ JSP 스크립트 요소  (0) 2019.10.30
[JSP]서블릿 (httpservlet)  (0) 2019.10.30
내장객체

JSP가 자바코드로 변환될 때! 자바 파일에 자동으로 추가되는 내장객체들에 의해서

JSP페이지에서는 Servlet페이지와는 다르게 

 

request객체나 / PrintWriter out = response.getWriter() 프린트 객체로 out.print("<html>");이런식으로 

써주던 걸 PrintWriter out = response.getWriter()객체 (출력스트림)을 알아서 생성해주어 out.print("<html>");바로 사용할 수 있다.

 

import 없이도 내장객체는 자유롭게 접근할 수 있다.

 

 

webapps와 work가 컨텍스트 폴더(프로젝트명)이고 

C:\Program Files\Apache Software Foundation\Tomcat 8.5\work\Catalina\localhost\ROOT\org\apache\jsp

이런식으로 끝까지 폴더를 타고 들어가보면

 

저렇게 자바파일과 클래스 파일이 생성이 된다.

 

즉, JSP페이지는 웹 컨테이너-> sevlet class로 변환 되는 과정으로 사용자의 요청을 처리한다.

 

객체는 클래스타입 객체 = new 인스턴스(); 에서 인스턴스를 저장해놓은 변수를 객체라고함

내장 객체 변수명 설명
request http 요청 정보 저장한 객체
response http 요청에 대한 응답 객체
session 클라이언트의 세션정보를 저장
pageContext 페이지 실행에 필요한 컨텍스트 정보를 저장한 객체
out 응답 페이지 전송을 위한 출력 스트림 객체
application 동일한 애플리케이션의 컨텍스트 정보를 저장한 객체
config 해당 페이지의 서블릿 설정 정보(초기화 정보)를 저장한 객체
page 해당 페이지 서블릿 객체(인스턴스)
exception 예외 처리를 위한 객체

위의 내장 객체 변수명으로는 사용자가 변수를 정의하면 jsp페이지가 서블릿 클래스로 변환될 때 추가되는 코드에 의해

중복이 발생한다. 따라서 위의 객체 변수명으로는 따로 변수를 생성하면 안된다.

JSP 페이지 내의 스크립틀릿 안에서 정의해서 안됨.!!

 

request객체

HTTP메세지 : HTTP 헤더 + HTTP본문으로 구성되어 있다.

웹 서버에서는 HTTP 메세지를 수신하여 요청이 서블릿/JSP을 호출하는 것으로 판단되면 (URI or 애노테이션)

서블릿/JSP 컨테이너에 요청을 넘겨준다.

 

이 때, HTTP HttpServletRequest 객체를 생성하고 이를 서블릿 인스턴스에 넘겨줌으로써 HTTP메세지를 수신한다. 

 

request객체의 메소드
리턴타입 메소드명 설명
String getParameter(String name) html의 속성중 name속성으로 내용을 가져옴
String[] getParameterValues(String name) name이란 이름으로 지정된 파라미터의 모든 값을 String배열로 리턴 받는다. 주로 checkbox같은 name속성을 같게 주는 태그를 가져올 때 쓴다.
Enumeration getParameterNames() 요청에 포함된 모든 파라미터 이름을 java.util.Enumeration 객체로 리턴

requestForm.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>

<html>
<head>
<title>request</title>

<style type="text/css">
/* h1태그, name이 commandCell인 태그 */
h1, #commandCell   
{
/* 	텍스트 정렬 : 가운데 */
	text-align : center; 
}

table
{
/* 	외부 여백 */
	margin : auto;
/* 가로 너비 */
	width : 400px;
/* 외곽선 */
	border : 1px solid red;
}
</style>
</head>
<body>
	<h1>Request 예제</h1>
	<form action = "requestTest.jsp" method = "post">
		<table>
			<tr>
				<td><label for = "name">이름</label></td>
				<td><input type = "text" name = "name" id = "name"></td>
			</tr>
			<tr>
				<td><label for = "gender">성별</label></td>
				<td>남<input type = "radio" name = "gender" value = "male" id = "gender"> 
				여 <input type = "radio" name = "gender" value = "female"> 
				</td>
			</tr>
			<tr>
				<td><label for = "hobby">취미</label></td>
				<td>독서<input type = "checkbox" name = "hobby" value = "독서" id = "hobby">
					게임<input type = "checkbox" name = "hobby" value = "게임">
					TV시청<input type = "checkbox" name = "hobby"	value = "TV시청">
					축구 <input type = "checkbox" name ="hobby" value = "축구"> 
					기타 <input type = "checkbox" name = "hobby" value = "기타">
				</td>
			</tr>
			
			<tr>
				<td colspan = "2" id = "commandCell"><input type = "submit" value = "전송"></td>
			</tr>
		</table>
	</form>
</body>
</html>

requestTest.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    
<%
	request.setCharacterEncoding("utf-8");
%>

<html>
<head>
<title></title>
<style type="text/css">
h1
{
	text-align : center;
}

table
{
	margin : auto;
	width : 400px;
	border : 1px solid red;
}
</style>
</head>
<body>
<h1>RequestTest1_Form에서 요청될 페이지</h1>
<table>
	<tr>
		<td>이름</td>
		<td><%=request.getParameter("name") %><td>
	</tr>
	
	<tr>
		<td>성별</td>
		<td>
			<%
				if(request.getParameter("gender").equals("male"))
				{
				 %>
				 남자
				 <%    
				}
				else
				{
				 %>
				  여자
				 <% 
				}
			%>
		</td>
	</tr>
	<tr>
		<td>취미</td>
		<td>
			<%
			String[] hobby = request.getParameterValues("hobby");
			for(int i = 0; i < hobby.length; i++)
			{
			%>
				<%= hobby[i] %> &nbsp; &nbsp;
			<% 
			}
			%>
		</td>
	</tr>
</table>
</body>
</html>

 

 

'JSP' 카테고리의 다른 글

[JSP] Session 객체 - 메소드  (0) 2019.11.02
[JSP] 내장객체 - http헤더  (0) 2019.11.02
[JSP] 서블릿 페이지-> JSP페이지/ JSP 스크립트 요소  (0) 2019.10.30
[JSP]서블릿 (httpservlet)  (0) 2019.10.30
[JSP]SERVER.XML  (0) 2019.10.16

서블릿 페이지에서는

-자바코드에 html, css, javascript를 넣었음

-디자이너가 자바코드를 이해할 수 없음/ 자바코드 때문에 작성불편

-서블릿은 데이터베이스 로직(비즈니스 로직), 화면디자인이 같이 있어 유지 관리가 불편

 

이러한 단점을 해결하기 위해

JSP페이지가 나왔음.

 

JSP구성요소

HTML태그, CSS문법, 자바스크립트 코드, 자바코드

 

JSP 실행과정

1. 톰캣(컨테이너)에서 JSP파일을 자바 파일로 변환 ->

2. 자바파일을 클래스 파일로 컴파일 ->

3. 클래스파일 실행 후 코드들을 브라우저로 전송함

 

인클루드 디렉티브 태그

<%@ include file = "공통기능.jsp"%>

- 재사용성

- JSP 유지관리 용이

 

<%@ 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>안녕하세요. 쇼핑몰 중심 JSP 시작입니다!!</h1> <br>
	<hr>
	
	<!-- include 디렉티브 태그를 이용해 duke_image.jsp페이지의 소스를 
	현재 페이지에 포함시킴 -->
	
	<%@ include file = "duke_image.jsp" %>
	
	<hr>
	<h1>안녕하세요. 쇼핑몰 중심 JSP 끝부분입니다.</h1>
</body>
</html>

 

<%@ 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>
		<!-- image 폴더의 duke_png를 표시함 -->
		<img alt = "duke" src = "./image/duke.png"">
</body>                        
</html>

 

인클루드 디렉티브 태그는

현재의 JSP파일기준으로

<%@ include file = "공통기능.jsp"%>

디렉티브 안쪽 태그에 있는 jsp파일을 포함하여 한개의 java파일로 생성된다.

 

JSP 스크립트 요소

 

1. 선언문 태그
<%!
	String name = "duke";
	public String getName()
	{
		return name;
	}
%>
JSP 주석

1. <%--  --%>  -JSP방식 주석

2. <!-- --> - html주석

3. <% - java주석

   //

   /**/

   %>

 

 

2. 스크립트 표현식

<%= 변수이름  %>

 

3. 스크립틀릿 기호 영역
<%--스크립틀릿 기호 영역에는 무조건 자바코드 작성 --%>
<% 
	String age = request.getParameter("age"); 
%>

'JSP' 카테고리의 다른 글

[JSP] 내장객체 - http헤더  (0) 2019.11.02
[JSP] 내장 객체 - request  (0) 2019.11.02
[JSP]서블릿 (httpservlet)  (0) 2019.10.30
[JSP]SERVER.XML  (0) 2019.10.16
[JSP] POST 방식과 getParameterValues  (0) 2019.10.07

https://docs.oracle.com/javaee/7/api/toc.htm

 

Java(TM) EE 7 Specification APIs

 

docs.oracle.com

 

- 서블릿.java에서 호출 되는 메서드

init() - 서블릿 요청시 처음 한 번만 호출됨

doGet() - 서블릿 요청 시 매번 호출됨

doPost() - 서블릿 요청 시 매번 호출됨

destroy() - 서블릿이 기능을 수행하고 메모리에서 소멸될 때 호출

<?xml version='1.0' encoding='utf-8'?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- Note:  A "Server" is not itself a "Container", so you may not
     define subcomponents such as "Valves" at this level.
     Documentation at /docs/config/server.html
 -->
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <!-- Global JNDI resources
       Documentation at /docs/jndi-resources-howto.html
  -->
  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <!-- A "Service" is a collection of one or more "Connectors" that share
       a single "Container" Note:  A "Service" is not itself a "Container",
       so you may not define subcomponents such as "Valves" at this level.
       Documentation at /docs/config/service.html
   -->
  <Service name="Catalina">

    <!--The connectors can use a shared executor, you can define one or more named thread pools-->
    <!--
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    -->


    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL/TLS HTTP/1.1 Connector on port 8090
    -->
    <Connector port="8090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <!-- A "Connector" using the shared thread pool-->
    <!--
    <Connector executor="tomcatThreadPool"
               port="8090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    -->
    <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443
         This connector uses the NIO implementation that requires the JSSE
         style configuration. When using the APR/native implementation, the
         OpenSSL style configuration is required as described in the APR/native
         documentation -->
    <!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
    -->

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />


    <!-- An Engine represents the entry point (within Catalina) that processes
         every request.  The Engine implementation for Tomcat stand alone
         analyzes the HTTP headers included with the request, and passes them
         on to the appropriate Host (virtual host).
         Documentation at /docs/config/engine.html -->

    <!-- You should set jvmRoute to support load-balancing via AJP ie :
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
    -->
    <Engine name="Catalina" defaultHost="localhost">

      <!--For clustering, please take a look at documentation at:
          /docs/cluster-howto.html  (simple how to)
          /docs/config/cluster.html (reference documentation) -->
      <!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      -->

      <!-- Use the LockOutRealm to prevent attempts to guess user passwords
           via a brute-force attack -->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- This Realm uses the UserDatabase configured in the global JNDI
             resources under the key "UserDatabase".  Any edits
             that are performed against this UserDatabase are immediately
             available for use by the Realm.  -->
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
	<Context  path="/webMal" docBase="C:\webShop"  reloadable="true" />
      </Host>
    </Engine>
  </Service>
</Server>

CONTROL + F > 8090 PORTNUMBER

<Context path = "/webMal" docBase="C:\webShop" reloadable="true" />

path = 주소창에 localhost:8090/webMal <<

docBase = "컨텍스트" 폴더

 

 

container-fluid - 뷰 포트 전체 폭까지 늘어나는 콘테이너

container - 반응형 고정폭 콘테이너

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
	<!-- 
	
	 -->
	<script type="text/javascript" src="http://code.jquery.com/jquery-3.1.1.js"></script>
	<script type="text/javascript">

	</script>
<style type="text/css">
.con1_1{
	background-color: lavender;
}

.con1_2{
	background-color: red;
}

.con1_3{
	background-color :skyblue;
}
.con1_4{
	background-color: yellow;
}

.con2_1{
	background-color: lavender;
	border: 3px solid white;
}

.con2_2{
	background-color: red;
	border: 3px solid white;
}

.con2_3{
	background-color :skyblue;
	border: 3px solid white;
}
.con2_4{
	background-color: yellow;
	border: 3px solid white;
}



</style>
</head>
<body>
		<div class = "container-fluid">
			<div class = "row con1_1">
				<div class = "col-1">col-1</div>
				<div class = "col-1">col-1</div>
				<div class = "col-1">col-1</div>
				<div class = "col-1">col-1</div>
				<div class = "col-1">col-1</div>
				<div class = "col-1">col-1</div>
				<div class = "col-1">col-1</div>
				<div class = "col-1">col-1</div>
				<div class = "col-1">col-1</div>
				<div class = "col-1">col-1</div>
				<div class = "col-1">col-1</div>
				<div class = "col-1">col-1</div>
			</div>
			
			<div class = "row con1_2">
				<div class = "col-2">col-2</div>
				<div class = "col-2">col-2</div>
				<div class = "col-2">col-2</div>
				<div class = "col-2">col-2</div>
				<div class = "col-2">col-2</div>
				<div class = "col-2">col-2</div>
			</div>
			
			<div class = "row con1_3">
				<div class = "col-4">col-4</div>
				<div class = "col-4">col-4</div>
				<div class = "col-4">col-4</div>
			</div>
			
			<div class = "row con1_4">
				<div class = "col-6">col-6</div>
				<div class = "col-6">col-6</div>
			</div>
		</div>
		
			<div class = "container">
			<div class = "row con2_1">
				<div class = "col-1">col1</div>
				<div class = "col-1">col1</div>
				<div class = "col-1">col1</div>
				<div class = "col-1">col1</div>
				<div class = "col-1">col1</div>
				<div class = "col-1">col1</div>
				<div class = "col-1">col1</div>
				<div class = "col-1">col1</div>
				<div class = "col-1">col1</div>
				<div class = "col-1">col1</div>
				<div class = "col-1">col1</div>
				<div class = "col-1">col1</div>
			</div>
			
			<div class = "row con2_2">
				<div class = "col-2">col-2</div>
				<div class = "col-2">col-2</div>
				<div class = "col-2">col-2</div>
				<div class = "col-2">col-2</div>
				<div class = "col-2">col-2</div>
				<div class = "col-2">col-2</div>
			</div>
			
			<div class = "row con2_3">
				<div class = "col-4">col-4</div>
				<div class = "col-4">col-4</div>
				<div class = "col-4">col-4</div>
			</div>
			
			<div class = "row con2_4">
				<div class = "col-6">col-6</div>
				<div class = "col-6">col-6</div>
			</div>
		</div>

</body>
</html>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>

<!-- 추가 할 부분 시작 -->

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>

<!-- 추가 할 부분 끝-->

</head>
<body>
		<div class = "container-fluid">
			<div class = "row">
				<div class = "col" style = "background-color: lavender;">.col</div>
				<div class = "col" style = "background-color: orange;">.col</div>
				<div class = "col" style = "background-color: lavender;">.col</div>
			</div>
		
		</div>

</body>
</html>

 

abstract A {
	int member;
	abstract int method();
	A(){sysout("나는 추상클래스의 생성자")};
	void method1 (int a)
	{
		sysout(a);
	}
}

class B extends A {
	@override              //<-----------------------
	int method()
	{
		return member;
	}
	
	//B(){super();}

}

public static void main(String[] args)
{
	A a = new B();
	a.method1(100);
	System.out.println(a.method());
}



abstract 클래스인 A는 미완성 클래스로 객체 생성 x
따라서 사용을 위해서는 상속을 통해서 인데
class B에서 추상클래서 A를 상속하고 미완성된 클래스를 재정의 하여 사용하는 것으로
사용

 

interface MyInter {
	double PI = 3.14; //멤버변수가 아닌 상수  
			  //모든 메서드들이 abstract 일때 인터페이스로 정의 함
	abstract void method1();//추상메서드 = 정의 부분이 없는 메서드
	int method2(); //abstract 가 생략되어 있음
	void method3(int a);
}

abstract A {
	int member;
	abstract int method();
	A(){sysout("나는 추상클래스의 생성자")};
	void method1 (int a)
	{
		sysout(a);
	}
}

class B extends A {
	@override              //<-----------------------
	int method()
	{
		return member;
	}
	
	//B(){super();}

}

class C implements MyInter {
	//MyInter에 있는 추상 메서드 3개를 재정의 해주어야한다
	//구현을 다 안해주면 오류가남
	@Override
	public void method1()
	{
		System.out.println("인터페이스 메서드1 재정의");
	}
	
	@Override
	public int method2() {
		return 0;
	}
		
	@Override
	public int method2() {
		
	}
}

public static void main(String[] args)
{
	A a = new B();
	a.method1(100);
	System.out.println(a.method());

	// (X) MyInter inter = new MyInter();
	// 인터페이스를 구현하여 사용 extends -> implements
	MyInter inter = new C();
}

'JAVA' 카테고리의 다른 글

[JAVA] 읽으면서 정리하기  (0) 2019.11.10
추상클래스  (0) 2019.10.30
JVM 메모리구조/인스턴스 변수 / 멤버 변수  (0) 2019.09.05
인스턴스 생성/인스턴스 변수/클래스 변수  (0) 2019.09.04
클래스와 객체  (0) 2019.09.03
$("#name ~ p").remove();
$("#name").after("<p style = 'color : red;' >  이름을 2 ~ 5자로 입력해주세요 </p>");

>>첫 번째 줄 코드로 p태그가 계속 증가하는 것을 방지 해준다.

>>두 번째 줄 코드는 선택한 태그가 끝나는 바로 다음에 태그를 생성하는것

append()는 태그안에 내용을 추가하는 것(innerHTML)

 

<li>
	<a href="#"><img src="images/util_menu_2.gif"alt="회원가입" /></a>
</li>

 

$('li:has(img[alt="회원가입"])').on("click", function(){
		alert("클릭 반응 검사");
});​

$("img[alt='회원가입']")과 같음 적용이 안될 때 저렇게 쓰면 된다고 하는데 ... 

li 태그 안에 있는 a태그로 감싸진 img태그의 alt를 선택

 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
	<h1> 당신이 좋아하는 강아지를 선택하세요 </h1>
	<form action="ChoiceDog" method ="post">
		<input type="checkbox" name = "dog" value = "jolin.jpg">졸린개
		<input type="checkbox" name = "dog" value = "michin.jpg">미친개
		<input type="checkbox" name = "dog" value = "shirt.jpg">옷입은개
		<input type="checkbox" name = "dog" value = "noon.jpg">눈썹개
		<input type="submit" value = "전송">
	</form>
</body>
</html>

>> action = ChoiceDog 는 @Webservlet과 동일하게 작성

>> method = get과 post방식중 get방식 

>> <input>태그 중에 타입 checkbox 

>> name을 같게 주어 묶을 수 있음(배열로 받아올 수 있음)

 


import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ChoiceDogServlet
 */
@WebServlet("/ChoiceDog")
public class ChoiceDogServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ChoiceDogServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=euc-kr");
		PrintWriter out = response.getWriter();
		String[] dog = request.getParameterValues("dog");
		
		out.println("<html>");
		out.println("<head>");
		out.println("</head>");
		out.println("<body bgcolor='black'>");
		out.println("<table align='center' bgcolor='yellow'>");
		out.println("<tr>");
		
		for(int i = 0; i < dog.length; i ++)
		{
			out.println("<td>");
			out.println("<img src='img/" + dog[i] + "'/>");
			out.println("</td>");
		}
		out.println("</tr>");
		out.println("</table>");
		out.println("</body>");
		out.println("</html>");
		
	}
}

>> response.setContentType("text/html;charset=euc-kr"); << 문자 처리 방식

>>PrintWriter out = response.getWriter();  << 출력스트림 생성

>>String[] dog 배열 생성

>>request.getParameterValues("dog");   <<request.getParameter

 

getParameter(String형 name 파라미터)

파라미터 - 한개의 파라미터를 나타낼 수 있음

 

>>앞에 String[] 배열이 옴

>>getParameterValues(String형 name파라미터)

 

 

 

 

'JSP' 카테고리의 다른 글

[JSP]서블릿 (httpservlet)  (0) 2019.10.30
[JSP]SERVER.XML  (0) 2019.10.16
[JSP] 이클립스에서 import javax.servlet에 오류 날 때  (0) 2019.10.02
[JSP] GET방식 전송  (0) 2019.10.02
[JSP] Servlet이 요청받는 방식 - GET 과 POST  (0) 2019.10.02

1. 패키지에서 WEB-INF -> lib -> servlet-api.jar 파일을 넣어준다.

 

또는

 

2. 패키지에서 오른쪽 마우스 클릭후 bulid Path - Configure Build Path - Libraries - Add External JARs 클릭

Apache Tomcat 경로에 가서 lib폴더에 servlet-api.jar을 추가해준다.

'JSP' 카테고리의 다른 글

[JSP]SERVER.XML  (0) 2019.10.16
[JSP] POST 방식과 getParameterValues  (0) 2019.10.07
[JSP] GET방식 전송  (0) 2019.10.02
[JSP] Servlet이 요청받는 방식 - GET 과 POST  (0) 2019.10.02
[JSP] 서블릿의 라이프사이클(Life Cycle)  (0) 2019.10.01
login.html

 

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Account</title>

<style type="text/css">
	#loginFormArea{
		text-align : center;
		width : 500px;
		margin : auto;
		border : 1px solid red
	}
	
	h1{
		text-align : center;
	}
</style>

</head>
<body>
<!-- https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServletResponse.html -->
<!-- 서블릿 페이지 애노테이션 값이 login인 페이지로 요청하여 처리해주기를 요구 -->
<h1>로그인</h1>
<section id = "loginFormArea">
	<form action="login" method="get"> 
			<!-- id input-->
			<label id="id"> 아이디 : </label> 
				<input type="text" name="id" id="id">
					<br>
					
			<!-- passwd input-->
			<label id="passwd"> 비밀번호 : </label> 
				<input type="password" name="passwd" id="passwd">
					<br>
					
			<!-- submit button -->
				<input type="submit" value ="로그인">
					<br>
	</form>
</section>
</body>
</html>

KEYWORD

>> action값이 의미하는 login은 

>> servlet페이지의 @WebServlet("/login")이다.

>> method="get" 방식으로 전송한다

LoginServlet.java

 

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String id = request.getParameter("id");
		String passwd = request.getParameter("passwd");
		response.setContentType("text/html;charset=euc-kr");
		PrintWriter out = response.getWriter();
		out.println("아이디 : " + id + "<br>");
		out.println("비밀번호 : " + passwd + "<br>");
	}

}

KEYWORD

>> @WebServlet("/login")

>> doGet()메서드

>> request.getParamter() 메서드를 호출해서 login.html의 <form>태그속의 속성값을 파라미터로 하여 값을 얻어온다.

>> response.setContentType()메서드는 브라우저로 보내지는 데이터의 형식처리

>> PrintWriter out = response.getWriter() 출력 스트림을 생성 

>> out.println()으로 출력

 

 

 

 

GET 방식
서버에 존재하는 보안성이 필요하지 않은 요청들..

ex) 페이지 번호, 게시판 글 목록 등..

GET 방식
1. <a href ="asdf.jsp"> - <a>태그 방식
2. 브라우저 주소 표시줄에 주소를 직접 입력해서 요청
3. <form>태그에서<form action = "asdf.jsp" name = "asdf" method = "GET">

작동 방식

                jsp 페이지 요청
       ---------------------------->         ------------------------------>
client                                     웹 서버                                    jsp 파일
       <---------------------------           <-----------------------------
                 응답

 
POST 방식
단순한 페이지 요청이 아닌 많은 양의 파라미터 전송을 처리할 때 POST방식으로 요청을 전송한다.
회원 가입 요청, 글쓰기, 업로드 등...

POST 방식
1. 반드시 <form>태그 사용
2. <form action = "asdf.jsp" name = "asdf" method = "POST">

작동 방식
           
             회원 가입 요청                        
       ---------------------------->         ------------------------------>             -------->
client                                       웹 서버                                      jsp 파일              DB
       <---------------------------           <-----------------------------             <--------

                 응답