자바의 리플렉트 기능을 알아보자.
주로 메서드명이나 생성자명 등 에 접근할때 사용한다.
아래 예제를 통해 간단히 알아보자.
[ex] 해당클래스의 메서드명을 출력해보기
예제) http://localhost:8282/프로젝트명/test.jsp?id=11&pw=22&addr=33&tel=44
예제) http://localhost:8282/프로젝트명/test.jsp?id=11&pw=22&addr=33&tel=44
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page import="com.joo.member.model.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.lang.reflect.*" %>
<%
Class c=Class.forName("com.joo.member.model.Member");
Member member=(Member)c.newInstance();
member.setId(request.getParameter("id"));
for (Enumeration<String> names=request.getParameterNames() ; names.hasMoreElements() ; ) {
String paramName=names.nextElement();
for( Method method : c.getDeclaredMethods()){
String methodName=method.getName().toLowerCase();
if(methodName.equals("set"+paramName)){
method.invoke(member,request.getParameter(paramName));
// 메서드객체.invoke( 해당메서드가있는클래스객체, 파라미터?? ) : 메서드를실행함
}
}
}
%>
<%=member.getId()%>
<%=member.getPw()%>
<%=member.getAddr()%>
<%=member.getTel()%>
[ex] reflect 패키지 살펴보기
import java.lang.reflect.*;
class A{
public static void main(String args[]) throws Exception{
Class c=B.class;
B o=(B)c.newInstance();
Method method=c.getDeclaredMethod("a",int.class); // a라는 메서드명을 가져온다
// 오버로딩에의한 구분으로 매개변수 자료형까지 두번째 인자에 기입한다.
method.invoke(o,100);
}
}
class B{
void a(int v){
System.out.println(v);
}
}
1. newInstance() 메서드로 객체화 시켜 메모리에 올려준다.
2. Method method=c.getDeclaredMethod(메서드명, 파라미터타입) 메서드를 통해 메서드를 가져온다.
3. method.invoke(o, 100) 불러온 메서드 실행
'JSP' 카테고리의 다른 글
ajax( jQuery ) (0) | 2019.03.28 |
---|---|
서블릿에서의 화면 이동 (0) | 2019.03.27 |
JSP 액션태그 ( <jsp:useBean> ) (0) | 2019.03.27 |
JSP 에러 페이지 설정 (0) | 2019.03.27 |
JSP 경로 / 파일관련 (0) | 2019.03.09 |