태그의 종류를 지정하는 것
속성(type, name, value)
<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
Form태그의 submit 버튼을 클릭하여 데이터를 서버로 전송하면, 해당파일에서는 HttpServletRequest 객체를 이용하여 Parameter값을 얻을 수 있다.
관련 메소드
예제 코드
<!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>"); // ~ 출력
}
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"); //이걸 넣어주면 한글처리 가능
}
특정 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
}
<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>
@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
}
여러 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>
웹 어플리케이션의 생명주기를 감시하는 리스너로 웹 어플리케이션의 시작과 종료시 호출된다.
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");
}
}
<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");
}
}