JSP 를 사용하지 않고 javascript 에서 Java 를 호출 하는 방법
.
.
.
.
.
.
.
은 없다.
다만, servlet 과 AJAX 를 사용하여 Java 의 method 를 호출 할 수는 있다.
이렇게 사용하기 위해서는 servlet 라이브러리가 설치되어야 하는데
보통 WAS 에서 servlet 라이브러리를 제공한다.
만약 WAS 를 사용하지 않거나 라이브러리를 따로 사용한다면 javax.servlet.jar 파일을 다운로드 받아 설치하면 된다.
Maven 을 사용할 경우는
<!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
<scope>provided</scope>
</dependency>
위와 같이 메이븐에 추가를 하거나
https://mvnrepository.com/artifact/javax.servlet/servlet-api
여기에서 원하는 servlet 버전을 찾아 maven 에 추가해주면 된다.
Maven 을 사용하지 않고 다운로드 받을 경우도 위의 사이트에 들어가서
원하는 버전을 선택하고 Files 에서 jar 파일을 다운로드 받아서 사용하면 된다.
혹시 까먹을지도 모르니 Build Path 하는 방법을 남겨본다.
프로젝트 생성 후 우클릭
Build Path -> Configure Build Path 클릭
Libraries 탭에서 Add External JARs 클릭 후
위와 같이 진행하면 설치 완료.
----------
이 다음 불려질 Java 의 Class 를 설정한다.
package com.test.app;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
@WebServlet("/ServletTest")
public class ServletTest extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
System.out.println("Servlet 으로 Class 및 method 호출 완료.");
System.out.println(request.getParameter("Test"));
}
}
1. HttpServlet 으로 상속을 꼭 해줘야 한다.
2. doGet 이라는 method 또한 사용하여야 한다. 사실 다른걸로는 테스트 해보진 않았다.
마치 main 과 같은 method 가 필요할 것이고 이게 doGet 메서드라고 생각만 했을뿐....
이렇게 해두면 불려질 준비 완료.
----------
이제 부르기위해 이름을 지정하고 메모리상에 올려둬야 하는데 내가 찾은 방법으로는 두가지 이다.
1. 어노테이션 사용.
클래스 위쪽에 @WebServlet("/TestServlet") 어노테이션을 지정하는 방법.
2. web.xml 에 servlet mapping 하는 방법
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>com.test.app.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/Servlet/*</url-pattern>
</servlet-mapping>
위와 같이 web.xml 에 servlet mapping 을 한다.
----------
이제 불러보자
$.ajax({
url :"./TestServlet",
success :function(data) {
console.log("success");
},
error :function(xhr, status) {
console.log("Failed");
},
complete :function(xhr,status) {
console.log("Complete");
}
});
이렇게 하면 ServletTest class 를 호출 할 수 있게 된다.
이 class 에 여러가지 method를 넣어 실행하기도 하고 parameter 를 넘겨서 데이터 처리도 가능할터이니
유용하게 쓰이길 바래본다.
'일하딩 > Web' 카테고리의 다른 글
[CSS] Position 이란? (static, relative, sticky, fixed, absolute) (0) | 2020.07.26 |
---|---|
[Html] Button 태그 사용시 자동 submit 없애기 (0) | 2019.12.16 |
[Jsoup] Java 로 웹 크롤링 하기. (0) | 2019.12.03 |
[chart.js] javascript 로 차트 그리기 (2) | 2019.11.05 |
[AES] Java encrypt -> javascript decrypt (3) | 2019.10.29 |
댓글