JSP 정리 - 2일차

이원섭·2020년 2월 4일
1

JSP 공부

목록 보기
2/11
post-thumbnail

4. HTML form태그

HTML의 form태그는 서버쪽으로 정보를 전달할 때 사용하는 태그다.


4-1. input

태그의 종류를 지정하는 것
속성(type, name, value)

  • type : 태그 종류 지정(ex: text, password, submit, checkbox, radio, reset, select)
  • name : input태그 이름
  • value : name에 해당하는 값(ex: name = value)

4-2. form태그

<form action="FormEx" method="post"> <!-- Post인 경우 --> </form>
<form action="FormEx2" method="get"> <!-- Get인 경우 --> </form>
  <!-- 요청하는 컴포넌트 이름 -->

Get : http://IP주소:port번호/컨텍스트/path/MemberJoin?id="abcdefg&name="홍길동"
Post : http://IP주소:port번호/컨텍스트/path/MemberJoin


4-3. Servlet Parameter

Form태그의 submit 버튼을 클릭하여 데이터를 서버로 전송하면, 해당파일에서는 HttpServletRequest 객체를 이용하여 Parameter값을 얻을 수 있다.

관련 메소드

  • getParameter(name) -> 해당 name에 들어있는 값을 가져온다.
  • getParameterValues(name) -> 해당 name에 들어있는 값들을 가져온다.(값이 여러개일때 사용)
  • getParameterNames() -> 값들이 아닌 name들을 가져온다.

예제 코드

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Form태그 예제1</title>
</head>
<body>
	<form action="Form_Ex" method="post"> <!--Form_Ex.java 라는 Servlet 파일로 post방식을 이용해 전송-->
		아이디 : <input type="text" name="id" size="10"> <br>
		비밀번호 : <input type="password" name="pw" size="10"><br>
		<input type="submit" value="전송"> 
	</form>
</body>
</html>
//Form_Ex.java 파일의 doPost 메소드
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String id = request.getParameter("id"); //id변수에 넘겨받은 name="id"의 value를 받아온다.
		String pw = request.getParameter("pw");
		
		response.setContentType("text/html; charset=EUC-KR");
		PrintWriter writer = response.getWriter();
		
		writer.println("<html><head></head><body>"); //출력 ~
		writer.println("아이디 : "+id+"<br>");
		writer.println("비밀번호 : "+pw+"<br>");
		writer.println("</body></html>"); // ~ 출력
	}

4-4. 한글처리

Get방식에서 한글처리 : server.xml을 수정한다.

 <Connector URIEncoding="EUC-KR" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
		  <!-- 이 부분을 수정-->

Post방식에서 한글처리 : <request.setCharacterEncoding() 메소드 이용

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doPost");
		
		request.setCharacterEncoding("EUC-KR"); //이걸 넣어주면 한글처리 가능
}

5. Servlet - 2

5-1. 서블릿 초기화 파라미터 : ServletConfig

특정 Servlet이 생성될 때 초기에 필요한 데이터(ex: 특정 path 또는 id)들을 초기화 파라미터라고 함
web.xml에 기술하고 Servlet 파일에서는 ServletConfig 클래스를 이용해서 접근한다.
1. web.xml 파일에 초기화 파라미터 기술
1. Servlet 클래스 생성

//@WebServlet("/ServletInitParam") <- 어노테이션을 주석처리하면 web.xml에서 초기화
public class ServletInitParam extends HttpServlet {
	private static final long serialVersionUID = 1L;
      
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletInitParam() {
        super();
        // TODO Auto-generated constructor stub
    }
  1. web.xml 파일에 초기화 파라미터 기술
      <servlet> <!-- 초기화 파라미터 기술하는 부분 -->
         <servlet-name>ServletInitParam</servlet-name>
         <servlet-class>com.javalec.ex.ServletInitParam</servlet-class>
         
        <init-param>
             <param-name>id</param-name>
             <param-value>abcdef</param-value>
         </init-param>
        
        <init-param>
             <param-name>pw</param-name>
             <param-value>1234</param-value>
         </init-param>
        
        <init-param>
             <param-name>path</param-name>
             <param-value>C:\\javalec\\workspace</param-value>
         </init-param>
      </servlet>
      <servlet-mapping>
         <servlet-name>ServletInitParam</servlet-name>
         <url-pattern>/InitParam</url-pattern>
      </servlet-mapping>
  2. ServletConfig 메소드를 이용해서 데이터 불러오기(상속으로 인해 자동으로 이루어짐)
  3. Servlet파일에 초기화 파라미터 기술하는 방법
  4. Servlet 클래스 생성
  5. Servlet 클래스 내부에 @WebInitParam 초기화 파라미터 기술
    @WebServlet(urlPatterns={"/ServletInitParam"}, initParams={@WebInitParam(name="id", value="aaaa")})
    //Servlet 파일에 초기화 할 때는 어노테이션 주석을 해제하고 메소드를 작성해준다.
    public class ServletInitParam extends HttpServlet {
    	private static final long serialVersionUID = 1L;
          
        /**
         * @see HttpServlet#HttpServlet()
         */
        public ServletInitParam() {
            super();
            // TODO Auto-generated constructor stub
        }
  6. ServletConfig 메소드 이용해서 데이터 불러오기 (상속으로 인해 자동으로 이루어짐)

5-2. 데이터 공유 : ServletContext

여러 Servlet에서 특정 데이터를 공유해야 할 때 context parameter를 web.xml에 데이터를 기술한다.
1. Servlet 클래스 생성
1. web.xml 파일에 context parameter 기술

<context-param>
	<param-name>id</param-name>
	<param-value>abcdef</param-value>
</context-param>
<context-param>
	<param-name>pw</param-name>
	<param-value>1234</param-value>
</context-param>
<context-param>
	<param-name>path</param-name>
	<param-value>C:\javalec\workspace</param-value>
</context-param>
  1. ServletConfig 메소드 이용해서 데이터 불러오기 (상속으로 인해 자동으로 이루어짐)

5-3. 웹 어플리케이션 감시 : ServletContextListener

웹 어플리케이션의 생명주기를 감시하는 리스너로 웹 어플리케이션의 시작과 종료시 호출된다.

web.xml파일에 리스너 클래스 기술
1. 리스너 클래스 생성

//어노테이션 없으면 web.xml 파일 이용
public class ContextListenerEx implements ServletContextListener{

	public ContextListenerEx() {
		// TODO Auto-generated constructor stub
	}

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

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("contextInitialized");
	}
}
  1. web.xml파일에 리스너 클래스 기술
<listener>
	<listener-class>com.javalec.ex.ContextListenerEx</listener-class>
</listener>

리스너 클래스에 기술
1. 리스너 클래스 생성
1. 리스너 클래스에 @WebListener 추가

@WebListener
public class ContextListenerEx implements ServletContextListener{

	public ContextListenerEx() {
		// TODO Auto-generated constructor stub
	}

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

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("contextInitialized");
	}
}
profile
개발 공부 가즈아-!

0개의 댓글