본문 바로가기
일하딩/Web

[Servlet] JSP 를 사용하지 않고 javascript 에서 Java 호출 하기.

by 별난형 2019. 11. 1.

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

 

Maven Repository: javax.servlet » servlet-api

Professional Java Data: RDBMS, JDBC, SQLJ, OODBMS, JNDI, LDAP, Servlets, JSP, WAP, XML, EJBs, CMP2.0, JDO, Transactions, Performance, Scalability, Object and Data Modeling (2001)by Carl Calvert Bettis, Michael Bogovich, Sean Rhody, Mark Wilcox, Kelly Lin P

mvnrepository.com

 

여기에서 원하는 servlet 버전을 찾아 maven 에 추가해주면 된다.

 

Maven 을 사용하지 않고 다운로드 받을 경우도 위의 사이트에 들어가서

 

원하는 버전을 선택하고 Files 에서 jar 파일을 다운로드 받아서 사용하면 된다.

 

혹시 까먹을지도 모르니 Build Path 하는 방법을 남겨본다.

 

프로젝트 생성 후 우클릭

 

Build Path 설정 창 여는 방법

Build Path -> Configure Build Path 클릭

 

외부 Jar 파일 설치 방법

Libraries 탭에서 Add External JARs 클릭 후

 

jar 파일 선택

위와 같이 진행하면 설치 완료.

 

----------

 

이 다음 불려질 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 를 넘겨서 데이터 처리도 가능할터이니

 

유용하게 쓰이길 바래본다.

 

댓글