<script src="https://code.jquery.com/jquery-3.6.0.js"></script>$('selector').action();
$(document).ready(function() {});
document가 전부 등록된 후에 실행되는 함수입니다
$(function() {});와 같은 문장이다.
$('h2').click(function() {
$(this).hide();
});
h2 태그를 click()하면 h2태그가 hide()된다.
마우스가 해당 영역 위에 올라와있을 때 발생하는 이벤트
요소의 속성값 바꾸기
attr('속성이름') : 속성의 값을 가져온다
$('#bulb').mouseover(function() { $(this).attr('src','변경src'); });요소에 마우스를 올리면
<img>태그의 src가 바뀐다.
마우스가 해당 영역 밖으로 나갈 때 발생하는 이벤트
기능을 만들어놓고 여러번 사용할 수 있는 이벤트를 핸들러라고 합니다.
function handlerIn() {
$('p').css('background-color', 'yellow');
}
function handlerOut() {
$('p').css('background-color', 'green');
}
$('p').hover(handlerIn, handlerOut);
코드는 다르지만 mouseover-mouseout을 사용한 것과 hover를 사용한 매커니즘은 똑같아요.
입력된 내용이 변경되었을 때 발생하는 이벤트
$('#name').change(function name() {
var data=$(this).val().toUpperCase();
$(this).val(data);
});
- val() : value값 리턴하는 함수
$('#name').val();는document.getElementById('name').value;
와 동일한 기능을 한다.
하나의 HTML 요소에 여러개의 event handler를 등록하는 방법
$('selector').on({
event1 : function(){},
event2 : function(){},
...
});
$(this).text();
요소 안에 있는 텍스트만 가져온다. ()안에 값을 넣으면 텍스트가 바뀝니다.
if($(this).text().match('TEST')){
$(this).text('수요일입니다.');
}else{
$(this).text('TEST');
}
text 내용이 같은지 매칭하는 함수
모든 html내용 태그까지 다 가져온다.
변수.innerHTML == $('selector').html();
(안에 텍스트를 html로 보낼수도 있어요)
css({property1 : value1, property2 : value2, ...});
$('p').click(function() {
$(this).css({
font:'200$ serif',
backgroundColor:'lightgreen',
border:'1px solid grey',
textAlign:'center'
});
});
$('#add-class').click(function() {
$('#p1').addClass('important');
$('#p2, #p3').addClass('blue');
});
'컬렉션'.each(handler);
컬렉션은 같은 포함관계에 있는 같은 요소(ex.li) 여러개를 의미한다.
<ul>
<li>Java</li>
<li>Oracle DB</li>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
<li>jQuery</li>
</ul>
<button type="button" id="btn">Toggle Style</button>
<script type="text/javascript">
$(document).ready(function() {
$('#btn').click(function() {
$('li').each(function(index, element) {
console.log('index:'+index+', element:'+element);
});
});
});
</script>
each구문 안에서 element 대신 this를 사용할 수 있다
서블릿에서 자바에서 사용하는 기능을 전부 사용할 수 있다. HttpServlet을 상속받아 네트워크 연결을 하게 됨.
자바만으로는 디자인을 표현하기 어려워서 자바안에 html을 포함시킨 게 서블릿이며 JSP는 html이 근본이고 그안에 자바를 넣은 것이다.
서버 사이드도 주소(경로)가 존재함.
Servlet 3.0버전 이후부터 적용됨.
@WebServlet(name="", urlPatterns={})
어떤 클래스나 메소드, 변수에 Annotation을 쓰면 특성이 변한다. urlPatterns에 여러개를 지정할수있음.
<web.xml 생성 방법>
- 프로젝트 마우스 오른쪽 클릭 - Java EE Tools - Generate Deployment Descriptor Stub 클릭
- WEB-INF -> web.xml이 생성된다.
기존 java는 JVM이 먼저 main을 실행해서 프로그램을 돌렸음.
서블릿은 서버가 모든 java 파일들을 한번씩 읽어서 실행함.
먼저 시작되는 java파일을 지정할 순 있음. 실행에 우선순위를 두지않음.
서블릿 최초 실행시 생성자와 doGet()이 실행되고 객체는 이미 생성되었기 때문에 새로고침하면 doGet()만 실행된다.
메모리 때문에 불러오는 방식이 싱글톤방식이 적용되어 있다.
모든 java파일이 한번만 실행되고 그 다음부턴 현재 사용중인 파일만 서비스하게 된다.
지속적으로 프로그램이 돌아가야 할 때 시작부터 끝나기 직전까지 loop를 사용해야 한다.
서블릿의 life cycle이 있는데
init() -> service() -> destroy()로 구성되어있다.
서블릿이 실행될 때 한번만 호출됨.
일반적으로 데이터 초기화를 수행할 때 사용한다.
외부에서 servlet으로 전송된 특정 HTTP
요청(GET, POST)을 처리하는 생명주기 메소드.
doGet()과 doPost()가 service()의 역할을 분담해서 담당한다.
서비스는 페이지에 접속한 뒤에 call이 되며 새로고침할때마다 호출된다.
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
super.service(arg0, arg1);
}
서블릿을 컨트롤하는 servlet Container가 있는데 java는 main에서 어떤 메소드를 호출해서 사용했다면 서블릿은 servlet Container가 메소드를 호출한다.
함수를 사용하는 것은 개발자가 관여하는게 아니라 Container가 상황에 따라 알아서 사용하는 것으로 service()의 매개변수에 개발자가 별도의 인자값을 넘길 순 없음.
보통은 doGet()과 doPost()만 존재하고 service()를 사용하진 않는다.
servlet이 종료될 때 호출되는 생명주기 메소드.
보통 서버는 한번 실행되면 꺼지는 일이 없어서 자주 실행되진 않음.
서블릿 life cycle이 약간 확실하게 이해하지 못해서 이번주 스터디 주제로 정했다.. 어려워!