import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;

public class _testfiles_2F_jspInJavascript2_2E_jsp extends javax.servlet.http.HttpServlet{
String testJspString = "testJspString"; 

public void _jspService(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
		throws java.io.IOException, javax.servlet.ServletException {
javax.servlet.jsp.PageContext pageContext = null;
javax.servlet.ServletContext application = null;
javax.servlet.ServletConfig config = null;
javax.servlet.jsp.JspWriter out = null;
Object page = null;
javax.servlet.http.HttpSession session = null;

try {
out.print(""+
 testJspString 
);
  

        if( request.getAttribute("SoapURL") != null )
        {
        
out.print(""+
 (String)request.getAttribute("SoapURL")
);

        }
        else
        { 
        
 } 
 } catch (java.lang.Exception e) {} 
}}