JSP 1일차

ᄒᄉᄋ·2022년 11월 26일
0

Jsp

servlet특징

동적 웹어플리케이션 컴포넌트
Java확장자
클라이언트의 요청에 동적으로 작동하고, 응답은 html을 이용
Java thread이용하여 동작
MVC패턴에서 Controller로 이용됨

서블릿 매핑하는 방법

  1. 서블릿 이름
    helloworld
    com.javalec.ex.HelloWorld

    서블릿 매핑
    helloworld
    /hw

  2. 어노테이션
    @WebServlet("/HWorld”)
    자바파일에

서블릿 프로젝트 만들기
서블릿은 자바언어를 사용하여 웹프로그램을 제작하는 것.
서블릿클래스는 HttpServle클래스를 상속받음

HttpServletRequest request
요청 처리객체
클라이언트에서 받는 값(로그인)

HttpServletResponse response
응답처리객체
클라이언트에 보내는 값

Do방식과 post 방식

html문서 에서 메소드가 get 아며get
post면 post

Get (검색했을때)
url값으로 정보가 전송되어 보안에 약함

Post(url값이 변하지 않고 정보볼수x)
header를 이용해 정보가 전송되어 보안에 강함

doGet
html내 form태그의 method속성이 get일 경우 호출된다.
웹브라우저의 주소창을 이요하여 서블릿을 요청한 경우에도 호출 된다.
doGet메소드는 매개변수로
HttpServletResquest와
HttpServletResponse를 받는다.

doGet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("doGet");

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

writer.println("<html>");
writer.println("<head>");
writer.println("</head>");
writer.println("<body>");
writer.println("<h1>HelloWorld~~~~<h2>");
writer.println("</body>");
writer.println("</html>");

writer.close();
	
}

Servlet 라이프사이클 생명주기
1.Servlet 객채 생성 - 최초한번
@PostConstruct
2.init() 호출 - 최초한번

3.service(),doGet(),doPost()호출 - 요청시 매번

4.destroy() 호출 - 마지막 한번
(자원해제: servlet 수정 서버 재가동 등등..)
@PreDestroy

Servlet 선처리 후처리
@PostConstruct - 선처리
@PreDestroy - 후처리

@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
System.out.println("init");
}

@Override
public void destroy() {
	// TODO Auto-generated method stub
	System.out.println("destroy");
}

@PostConstruct
private void initPostConstruct() {// 이름은 임
	// TODO Auto-generated method stub
	System.out.println("initPostConstruct");
}

@PreDestroy
private void destroyPreDestroy() {// 이름은 임의
	// TODO Auto-generated method stub
	System.out.println("destroyPreDestroy");
}

Html form태그
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
로그인, 회원가입 페이지 등에서 비밀번호를 입력하기 위해 사용

Type = submit - servlet으로 전달
form내의 데이터를 전송할 때 사용.
[전송]스위치

Type = reset
form내의 데이터를 초기화 할 때 사용.
[초기화]스위치

Type = checkbox
데이터값을 여러 개(다중) 전송해야 할 때 사용.
독서
요리
조깅
수영
취침
타입은 전부 “checkbox” name값은 동일하게

Type = radio
checkbox와 다르게 여러 개의 데이터 값 중 한 개의 값만 전송.
국어
영어
수학
디자인
Checked = 디폴트로 선택되게끔

Select
리스트형태의 데이터를 사용.
<option value = “http”>http</option> <option value = “ftp” selected=“selected”>ftp</option> <option value = “smtp”>smtp</option> <option value = “pop”>pop</option>

액션은 요청하는 컴포넌트 이름(join.jsp, info.html,HWorld) 섭밋으로 전송하면 액션쪽으로 넘어감.

Servlet Parameter
form태그의 submit버튼을 클릭하여 데이터를 서버로 전송하면, 해당파일(Servlet)에서는HttpServletRequest객체를 이용하여 Parameter값을 얻을 수 있다.
getParameter(name) - name값을 넣으면 해당 value값을 반환.
getParameterValues(name) - name값이 여러개일때 여러값 반환.
getParameterNames() - 어떤 값들을 이름을들 배열로 반환.

한글처리

get방식일때
Tomcat > server.xml> generic text
<Connector URIEncoding=“UTF-8” 추가

post방식일때
자바소스 에 직접 추가
request.setCharacterEncoding(“UTF”-8);

예제
html파일

Insert title here 이름 :
아이디 :
비밀번호 :

취미 : 독서
요리
조깅
수영
취침

국어
영어
수학
디자인

http ftp smtp pop

받는파일

package com.javalec.ex;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
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 LIfeCycleEx
    */
    @WebServlet("/FormEx")
    public class FormEx extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public FormEx() {
    	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
    	System.out.println("doGet");
    }
    
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    		throws ServletException, IOException {
    
    	// TODO Auto-generated method stub
    	System.out.println("doPost");
    	request.setCharacterEncoding("UTF-8");
    	
    	
    	String name = request.getParameter("name");
    	String id = request.getParameter("id");
    	String pw = request.getParameter("pw");
    	
    	String[] hobbys = request.getParameterValues("hobby");
    	String major = request.getParameter("major");
    	String protocol = request.getParameter("protocol");
    	
    	response.setContentType("text/html; charset=EUC-KR");
    	PrintWriter writer = response.getWriter();
    	
    	writer.println("<html><head></head></body>");
    	writer.println("이름: " + name + "<br />");
    	writer.println("아이디: " + id + "<br />");
    	writer.println("비밀번호: " + pw + "<br />");
    	writer.println("취미: " + Arrays.toString(hobbys) + "<br/>");
    	writer.println("전공: " + major + "<br/>");
    	writer.println("프로토콜: "+ protocol);
    	writer.println("</body></html>");
    	
    
    	
    }
    
    @Override
    public void init() throws ServletException {
    	// TODO Auto-generated method stub
    	System.out.println("init");
    }
    
    @Override
    public void destroy() {
    	// TODO Auto-generated method stub
    	System.out.println("destroy");
    }
    
    @PostConstruct
    private void initPostConstruct() {// 이름은 임
    	// TODO Auto-generated method stub
    	System.out.println("initPostConstruct");
    }
    
    @PreDestroy
    private void destroyPreDestroy() {// 이름은 임의
    	// TODO Auto-generated method stub
    	System.out.println("destroyPreDestroy");
    }

    }

8강

서블릿 초기화 파라미터 : ServletConfig
특정 Sevlet이 생성될때 초기에 필요한 데이터들이 있다.
예들 들어 특정 경로 및 아이디 정보등.
이러한 데이터들을 초기화 파라미터라고 하며, web.xml에 기술하고 Servlet파일에서는
ServletConfig 클래스를 이용해서 접근(사용)한다.

Servlet 클래스 제작

web.xml파일에 초기화 파라미터 기술.

ServletConfig 메소드 이용해서 데이터 불러오기.
Or

Servlet클래스 제작

@WebInitParam에 초기화 파라미터 기술
@WebServlet(urlPatterns={“/ServletInitParam”},initParams={@WebInitParam(name=“id”,value=“abcdef”}..

ServletConfig 메소드 이용해서 데이터 불러오기

데이터공유 : ServletContext

여러 서블릿에서 특정 데이터를 공유해야 할 경우 context parameter를 이용해서 web.xml에 데이터를 기술하고 서블릿에서 공유하면서 사용할 수 있다.

서블릿클래스 제작.

Web.xml파일에 context parameter기술

ServletContext메소드 이용해서 데이터 불러오기.

웹어플리케이션 감시 : ServletContextListener

웹어플리케이션의 생명주기를 감시하는 리스너가 있다. 리스너의 해당 메소드가 웹 어플리케이션의
시작과 종료 시 호출 된다.(contextInitialized(),contextDestroyed())

1.리스너 클래스 제작
Public class ContextListenerEx implements ServletContextListener{
Public ContextListenerEx(){
}
@Override
Public void contextDestroyed(ServletContextEvent arg0){}
@Override
Public void contextInitialized(ServletContextEvent arg0){}

2.web.xml파일에 리스너 클래스 기술

com.javalec.ex.ContextListenerEx

Or
1.리스너 클래스 제작
2.WebListener추가
@WebListener

0개의 댓글