# 서블릿
톰캣이 만들어준 java파일
# 간단한 서블릿 만들기
- src -> new -> Servlet -> 패키지와 파일명 작성뒤 피니시하면
- WebContent->WEB-INF-> web.xml에 <servlet>부분이 생성됨
(만약 톰캣연동설정시 모듈버전이 3.0이면 이부분 자동생성안될수도있음! )
[ex] 서블릿이되는조건은
- extends HttpServlet의 자손이면됨
- import javax.servlet.http.HttpServlet;해야함
- HttpServlet은 추상클래스임(객체생성불가) , 메서드는 추상아니라서 그냥쓰면됨
( 단, 오버라이딩이므로 접근제어자는 좁아질수없음)
# 이클립스로 만든 기본 서블릿
jjj.java
======================
package com.jaeju;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class jjj extends HttpServlet {
private static final long serialVersionUID = 1L;
public jjj() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
그리고 해당프로젝트의 web.xml부분에 Servlet이 생성될때마다 추가되는내용은 다음과같음
web.xml
================================================
<servlet> // 서블릿과 서블릿 매핑이 추가됨
<description></description>
<display-name> jjj</display-name>
<servlet-name> jjj</servlet-name>
<servlet-class>com.jaeju.jjj</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> jjj </servlet-name>
<url-pattern> /jjj </url-pattern>
</servlet-mapping>
- /jjj 에서 / 는 현재프로젝트명을 말하는 절대경로임 => /ppp1/jjj
- url에서 포트번호8282다음 / 는 절대경로로서 webapps를 말함! webapps/ppp1/jjj 임
- new->class로만들면 web.xml에 직접 추가해줘야하고
- new->servlet로 만들면 web.xml에 자동추가되어있음
- url-pattern이 다른 서블릿이랑 중복안되게 조심할것! 뻘짓하는수가있음
- 하지만 a태그에서 /는 프로젝트명이아닌 8282 까지임!!!
- 이유는 html이기때문에!! 위에는 jsp라서 프로젝트명이붙지만 html에서의 절대경로 / 는 맨처음 시작을 뜻함!!
- 이미지 상대경로/절대경로관련
# get방식
- get방식이면 자동으로만들어준 서블릿의 doGet메서드를 호출하고
- post방식이면 자동으로만들어준 서블릿의 doPost을 호출함
- post방식은 폼태그를 구현해줘야 실행가능하다
[ex] get방식과 post방식으로 서블릿의 doGet, doPost메서드 실행하기
a.jsp
=========
// a태그로 get방식설정
<a href="/ppp1/jjj?a=123a태그"> 연결이요</a>
// form태그로 get방식설정
<form action="/ppp1/jjj" method="get">
<input type="text" name="a">
<input type="submit">
</form>
// form태그로 post방식설정
<form action="/ppp1/jjj" method="post">
<input type="text" name="a">
<input type="submit">
</form>
jjj.java // web.xml의 서블릿매핑에 의해 이jjj.java가 실행되는거임!!
==========
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out=response.getWriter(); // response객체를 이용하여 out객체 얻음
out.println("get방식임"+"<br>");
out.println(request.getParameter("a"));
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out=response.getWriter();
out.println("post방식임"+"<br>");
out.println(request.getParameter("a"));
}
- get방식 3번째설정방식
=> url에 http://localhost:8282/ppp1/jjj 해서 실행
[ 실행 결과 url ]
- a.jsp실행하면 get방식이라면 url이 다음과같이바뀜
- a.jsp실행하면 post방식이라면 url이 다음과같이바뀜
- 웹상에서의 절대경로( / )는 webapps임!
- 웹상에서의 상대경로는 프로젝트명( 프로젝트명/ )임!
<form action="/Test1" > 이나 <a href="/Test1"> 은
webapps/Test1임...그래서 404에러남
아래와 같이해야 절대경로로서 /ppp1/Test1 이 인식됨
<form action="/ppp1/Test1" >
아래는 상대경로로서 해당프로젝트인 /ppp1/Test1이 인식됨
<form action="Test1" >
'JSP' 카테고리의 다른 글
캐쉬삭제법( 삭제라기보단 캐쉬저장 안하는법 ) (0) | 2019.03.08 |
---|---|
JSP한글전송(인코딩, 디코딩) (0) | 2019.03.08 |
JSP기본객체와 영역 (0) | 2019.03.08 |
JSP페이지의 구성요소 / JSP기본태그 (0) | 2019.03.07 |
JSP 내장객체 9개 (0) | 2019.03.07 |