.jsp
.java
javax.servlet.*
javax.servlet.http.*
init / destroy / doGet
http://localhost:8080/Servlet01/FirstServlet
/FirstServlet
: 서블릿 맵핑 이름doGet()
메소드 호출doGet()
메소드만 호출됨init()
메소드안에서 라인 추가 엔터누르고 저장(Ctrl+S)한 후 조금 기다리면 콘솔창에 destroy()
메소드 호출됨<servlet></servlet>
<servlet-mapping>
톰캣에서 request 객체와 response 객체 생성해서 doGet() 메소드 안에 인자 값으로 넣어 줌
request 객체 : 요청 처리 객체
response 객체 : 응답 처리 객체
doGet()
과 doPost()
메소드 둘 다 매개변수로 request/response 객체를 가짐
톰캣의 server.xml에 등록하는 웹 애플리케이션을 컨텍스트
즉, 톰캣 입장에서 인식하는 한 개의 웹 애플리케이션
웹 애플리케이션 당 하나의 컨텍스트가 등록됨
웹 애플리케이션 이름과 같을 수도 다를 수도 있음
컨텍스트 이름은 중복되면 안 됨
웹 애플리케이션의 의미를 가장 잘 나타낼 수 있는 명사형으로 지정
대소문자 구분
server.xml에 등록
모든 설정 정보를 xml 로 저장한 후 실행 시 정보를 읽어와 설정대로 실행
이클립스에서 프로젝트를 생성하면 자동으로 server.xml에 추가
Servers / server.xml 열고 확인 : <Context>
태그
URL : 전체 주소
http://localhost:8080/Servlet01/first
URI : ContextPath + ServletPath
ContextPath : 프로젝트명
(1) 클라이언트로부터 요청을 받음
javax.servlet.http.HttpServletRequest
클래스javax.servlet.http.HttpServletResponse
클래스<form>
태그로 서블릿 요청<form>
태그를 사용해서 브라우저에서 서블릿으로 사용자의 요청이나 데이터를 전송<form>
태그<input>
태그HttpServletRequest
클래스의 여러 가지 메소드를 이용해서 전송된 데이터를 받음
<form>
태그로 전송된 데이터를 받아오는 메소드
주의!
폼에 입력되어 서버로 전송되는 값들은 모두 문자열로 전송 (연산이 필요한 경우 숫자로 형변환 필요)
1개의 값을 받을 경우 : getParameter()
메소드 사용
여러 개의 값을 받을 경우 (동일한 name 값이 여러 개인 경우 : checkbox name이 다 동일한 경우)
getParameterValues()
메소드 사용doGet()이나 doPost() 메소드 안에서 처리함
javax.servlet.http.HttpServletResponse
객체를 이용함
클라이언트에게 전송할 데이터 타입 인코딩
response.setContentType(“text/html;charset=utf-8”);
MIME-TYPE
클라이언트(웹 브라우저)와 서블릿의 통신은 자바 I/O의 스트림 이용
PrintWriter 클래스 사용
PrintWriter out = response.getWriter();
out.print(data);
// data : 웹 브라우저로 보내는 데이터
doGet()
/ doPost()
방식 둘 다 처리doHandle()
또는 doProcess()
메소드를 새로 추가해서 <script type="text/javascript">
/* 자바 스크립트로 서블릿에 요청 DOM 사용 */
window.onload=function(){
var frmLogin = document.getElementById("frmLogin");
frmLogin.onsubmit = function(){
// id : 참조객체변수
// user_id : 태그의 id 속성값
var id = document.getElementById("user_id");
var pw = document.getElementById("user_pw");
if(id.value =="" || pw.value == ""){
alert("아이디와 비밀번호는 필수입니다.");
return false;
} else {
frmLogin.method ="post";
frmLogin.action ="loginJs";
frmLogin.submit();
}
}; // onsubmit 끝
}; // window.onload 끝
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인창</title>
<script type="text/javascript">
/* 자바스크립트로 서블릿에 요청 : name 속성 사용 */
function fn_validate() {
var frmLogin = document.frmLogin;
var id = frmLogin.user_id.value;
var pw = frmLogin.user_pw.value;
if(id == "" || pw == ""){
alert("아이디와 비밀번호는 필수입니다2.");
return false;
} else {
frmLogin.method = "post";
frmLogin.action = "loginJs";
frmLogin.submit();
}
}
</script>
<script src = "jquery-3.6.0.min.js"></script>
<script type="text/javascript">
/* jQuery 사용 */
$(document).ready(function(){
$('#loginBtn').on('click',function(){
var id = $('#user_id').val();
var pw = $('#user_pw').val();
if( id == "" || pw == ""){
alert("아이디와 비밀번호는 필수입니다.3");
return false;
} else {
$('#frmLogin').attr({
method:"post",
action:"loginJs"
}).submit();
/* $('#frmLogin').attr('method', "post").attr('action', "loginJs").submit(); */
}
});
});