2014-11-28 9 views
0

저는 지금 JSP 애플리케이션을 만들고 있습니다. 나는 현재 .jsp 파일에 onclick="window.open('./my_path','PREVIEW','width=600, height=300'); 을 사용하여 특정 크기의 새 창에서 상대 URL을 시작하는 버튼을 만들었습니다. 그러나 일부 Java 코드를 Servlet 내에서 실행해야하며 JSP 파일에 논리를 넣고 싶지는 않습니다. 어쨌든 내가 할 수 있니?java 서블릿에서 상대 주소를 여는 방법이 있습니까?

EDIT : 자바 스크립트로 유효성 검사를 먼저하고 싶습니다. 현재는 jsp에 있습니다. 유효성 검사를 한 후 서버에서 처리하고 싶은 서버 프로세스를 기반으로 새 창을 열고 싶습니다.

생각해 보면 <input type="submit" name="Function" onclick="javascriptFunction()" style="WIDTH: 130px" value="Edit">입니다. 그런 다음 서블릿에서 doPost(...){ if(request.getParameter("Function"){//do something cool; //process open javascript window} }

이유는 주문 유지가 필요하다는 것입니다.

답변

0

먼저 JSP, servlet 및 web.xml의 관련 부분을 포함하면 매우 유용 할 것입니다. 나는 이것이 당신이 찾고있는 것에 가깝다고 믿습니다.

중요한 개념은 JSP가 서버에서 처리된다는 것입니다. 실제로 JSP는 서블릿으로 사전 컴파일됩니다. 그래서 당신의 uri가 myserv를 해결하고 요청을 myjsp에 전달하면 요청을 다른 서블릿으로 전달합니다. .setAttribute 및 .getAttribute 메소드는 요청 컨텍스트에서 서버의 서블릿 간 통신을 목적으로합니다.

그래서이 같은 web.xml을 대략 있다고 가정 : 다음

<servlet> 
    <servlet-name>myserv</servlet-name> 
    <servlet-class>com.mydom.myserv</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>myserv</servlet-name> 
    <url-pattern>/myserv/*</url-pattern> 
    </servlet-mapping> 
    <servlet> 
    <servlet-name>myjsp</servlet-name> 
    <jsp-file>/myjsp.jsp</jsp-file> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>myjsp</servlet-name> 
    <url-pattern>/myjsp.jsp</url-pattern> 
    </servlet-mapping> 

당신은 대략 다음과 같습니다의 doPost와 서블릿이 있습니다

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
request.setAttribute("relpath", myRelPathObj.getRelPath()); 
request.getRequestDispatcher("myjsp.jsp").forward(request, response); 
return; 
. 
. 
. 

는 그런 다음 식 태그는 JSP가를 대략 like :

onclick="window.open('./<%=request.getAttribute("relpath")%>','PREVIEW','width=600, height=300'); 
+0

jsp를 함께 사용하는 방법이 있습니까? – jQwierdy

+0

@jQwierdy JavaScript는 서버가 아닌 클라이언트에서 실행됩니다. 클라이언트에서 서블릿으로 ajax 요청을하고 반환 된 값을 기반으로 새 창을 열려고하는 것 같습니다. – Threadid

+0

문제는 내가 약한 대형 레거시 시스템으로 작업하고 있다는 것입니다. 따라서 가능한 한 현지화 된 변경 작업을 수행하려고 노력 중이므로 시스템에서 Java를 쉽게 지원합니다. 따라서 AJAX가 훌륭한 옵션이 될 것이라고 생각합니다. 내가 그것을 얻을 수 있고 당신에게 알려주는지보기 위해 그것을 볼 것입니다, 고마워요! – jQwierdy