Jump to content

Archived

This topic is now archived and is closed to further replies.

kfss

Looping

Recommended Posts

Olá pessoal, estou com um probleminha estou dando um submit automatico em um form para executar um servlet e gerar um arquivo XML so que o meu problema é justamente esse arquivo XML que está retornando para mesma pagina onde esta o botao sendo assim quando ele retorna para pagina ele executa novamente o submit automatico e fica em um looping alguem pode de ajudar a resolver?

 

<form name="IdentityProviderForm" action="ProcessResponseServlet" method="post">		<input type="hidden" name="SAMLRequest" value="<%=samlRequest%>"/>		<input type="hidden" name="RelayState" value="<%=relayState%>"/>		<input type="hidden" name="returnPage" value="identity_provider.jsp">		<input type="hidden" name="samlAction" value="Generate SAML Response">

<script>	 document.IdentityProviderForm.submit.click();	 </script>

Isso é o script que estou usando... será que alguem sabe me dizer como resolver??? As paginas são .JSP

 

[ ] s

 

Kleber

Share this post


Link to post
Share on other sites

Tenta assim

<form name="IdentityProviderForm" action="ProcessResponseServlet?submit=1" method="post">		<input type="hidden" name="SAMLRequest" value="<%=samlRequest%>"/>		<input type="hidden" name="RelayState" value="<%=relayState%>"/>		<input type="hidden" name="returnPage" value="identity_provider.jsp">		<input type="hidden" name="samlAction" value="Generate SAML Response">

Aí no script você coloca assim

 

<script>	 <%	 if (request.getParameter("submit") == null) {	 %>	 document.IdentityProviderForm.submit.click();	 <%	 } %>	 </script>

Ou seja, na primeira vez ele vai entrar no if, na segunda não pois você estara enviando um parâmetro submit na URL então ele será diferente de null.

Share this post


Link to post
Share on other sites

Tenta assim

<form name="IdentityProviderForm" action="ProcessResponseServlet?submit=1" method="post">		<input type="hidden" name="SAMLRequest" value="<%=samlRequest%>"/>		<input type="hidden" name="RelayState" value="<%=relayState%>"/>		<input type="hidden" name="returnPage" value="identity_provider.jsp">		<input type="hidden" name="samlAction" value="Generate SAML Response">
Aí no script você coloca assim
<script>	 <%	 if (request.getParameter("submit") == null) {	 %>	 document.IdentityProviderForm.submit.click();	 <%	 } %>	 </script>
Ou seja, na primeira vez ele vai entrar no if, na segunda não pois você estara enviando um parâmetro submit na URL então ele será diferente de null.
Ué não funcionou continua dando um looping!Será que você sabe uma outra forma???

Share this post


Link to post
Share on other sites

tente assim no script entaum

 

<script>var submit = <%=request.getParameter("submit") %>if (submit != 1) { document.IdentityProviderForm.submit.click();</script>

Share this post


Link to post
Share on other sites

tente assim no script entaum

<script>var submit = <%=request.getParameter("submit") %>if (submit != 1) { document.IdentityProviderForm.submit.click();</script>
Meu ja to apanhando uns dias com isso viu... tentei esse jeito que você me passou agora e tb não foi... ele continua dando um looping o engraçado é que ele da o looping mais chega uma hora que ele passa para o proximo passo.. que eh um submit em um outro botão...Ta embaçado, mais alguma sugestão???[]s

Share this post


Link to post
Share on other sites

você colocou o parametro submit na url??colocou no action o ?submit=1 como esta descrito abaixo??

 

<form name="IdentityProviderForm" action="ProcessResponseServlet?submit=1" method="post">

se você ja colocou entaum tente dessa maneira

<script>  <%	 if (request.getParameter("submit") == null) {	out.println("  document.IdentityProviderForm.submit.click();");	 }   %></script>

 

 

 

[utilize a TAG CODE. A TAG CODEBOX ocupa espaço desnecessário na tela.]

Share this post


Link to post
Share on other sites

você colocou o parametro submit na url??colocou no action o ?submit=1 como esta descrito abaixo??

<form name="IdentityProviderForm" action="ProcessResponseServlet?submit=1" method="post">
se você ja colocou entaum tente dessa maneira
<script>  <%	 if (request.getParameter("submit") == null) {	out.println("  document.IdentityProviderForm.submit.click();");	 }   %></script>
[utilize a TAG CODE. A TAG CODEBOX ocupa espaço desnecessário na tela.]Opa eu tinha colocado sim... mais mesmo assim não ta indo!E como se ele ignorasse essa condição do IF.. estranho continua dando o Looping!

você colocou o parametro submit na url??colocou no action o ?submit=1 como esta descrito abaixo??

<form name="IdentityProviderForm" action="ProcessResponseServlet?submit=1" method="post">
se você ja colocou entaum tente dessa maneira
<script>  <%	 if (request.getParameter("submit") == null) {	out.println("  document.IdentityProviderForm.submit.click();");	 }   %></script>
[utilize a TAG CODE. A TAG CODEBOX ocupa espaço desnecessário na tela.]Opa eu tinha colocado sim... mais mesmo assim não ta indo!E como se ele ignorasse essa condição do IF.. estranho continua dando o Looping!

Share this post


Link to post
Share on other sites

Faz o seguinte entaum...

 

Dentro do seu Servlet você coloca

 

request.setAtribute("varSubmissao", "1");

no seu jsp faz o seguinte

 

<script><%String varSubmissao = (String) request.getAtribute("varSubmissao"); if (varSubmissao == null)  {%>document.IdentityProviderForm.submit.click();<%}%></script>

Share this post


Link to post
Share on other sites

Faz o seguinte entaum...Dentro do seu Servlet você coloca

request.setAtribute("varSubmissao", "1");
no seu jsp faz o seguinte
<script><%String varSubmissao = (String) request.getAtribute("varSubmissao"); if (varSubmissao == null)  {%>document.IdentityProviderForm.submit.click();<%}%></script>
Opa.. em que lugar do servlet que eu ponho pq eu coloquei no topo, e em outro dois lugares e deu erro nessa linha nem deixa compilar![]s

Share this post


Link to post
Share on other sites

dentro do seu metodo doPost

Puts... não deixou compilar mesmo assim.. meu metodo doPost ta assim:
public void doPost(HttpServletRequest request, HttpServletResponse response)	  throws ServletException, IOException {	String samlAction = request.getParameter("samlAction");	String SAMLRequest = request.getParameter("SAMLRequest");	String returnPage = request.getParameter("returnPage");	String username = request.getParameter("username");	String password = request.getParameter("password");	String relayStateURL = request.getParameter("RelayState");	boolean continueLogin = true;
Aonde eu devo colocar?

Share this post


Link to post
Share on other sites

dentro do seu metodo doPost

Puts... não deixou compilar mesmo assim.. meu metodo doPost ta assim:
public void doPost(HttpServletRequest request, HttpServletResponse response)	  throws ServletException, IOException {	String samlAction = request.getParameter("samlAction");	String SAMLRequest = request.getParameter("SAMLRequest");	String returnPage = request.getParameter("returnPage");	String username = request.getParameter("username");	String password = request.getParameter("password");	String relayStateURL = request.getParameter("RelayState");	boolean continueLogin = true;
Aonde eu devo colocar?
Opa eu achei o que tava errado era o
request.setAttribute("varSubmissao", "1");
está com apenas um T quando na verdade são dois Attribute.Intaum mais mesmo assim não funcionou! :SNão sei mai so que eu faço so ta faltando isso para resolver esse problema!

Share this post


Link to post
Share on other sites

colocou o request.getAttribute("varSubmissao"); no jsp com 2 t tambem???

 

se sim tente fazer da seguinte forma no jsp.

 

<script><%String varSubmissao = (String) request.getAtribute("varSubmissao");-----------------------------------------------------------------------------faça isso daqui para testar e verifique oq está vindo no varSubmissaoalert(<%=varSubmissao %>);-----------------------------------------------------------------------------if (varSubmissao == null)  {out.println("document.IdentityProviderForm.submit.click();";}%></script>

Share this post


Link to post
Share on other sites

colocou o request.getAttribute("varSubmissao"); no jsp com 2 t tambem???se sim tente fazer da seguinte forma no jsp.

<script><%String varSubmissao = (String) request.getAtribute("varSubmissao");-----------------------------------------------------------------------------faça isso daqui para testar e verifique oq está vindo no varSubmissaoalert(<%=varSubmissao %>);-----------------------------------------------------------------------------if (varSubmissao == null)  {out.println("document.IdentityProviderForm.submit.click();";}%></script>
Velho, nem ta executando o ALERT tipo ta retornando essa pagina de erro depois do looping.type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Unable to compile class for JSPGenerated servlet error:Syntax error, insert "}" to complete ClassBodyAn error occurred at line: 70 in the jsp file: /identity_provider.jspGenerated servlet error:Syntax error on token "<", ) expectedAn error occurred at line: 70 in the jsp file: /identity_provider.jspGenerated servlet error:Syntax error, insert ";" to complete StatementGenerated servlet error:Syntax error, insert "}" to complete BlockGenerated servlet error:Syntax error, insert "else Statement" to complete IfStatementGenerated servlet error:Syntax error, insert "}" to complete BlockGenerated servlet error:Syntax error on token "}", delete this token org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapperjava:510) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) servlets.ProcessResponseServlet.doGet(ProcessResponseServlet.java:243) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)root cause org.apache.jasper.JasperException: Unable to compile class for JSPGenerated servlet error:Syntax error, insert "}" to complete ClassBodyAn error occurred at line: 70 in the jsp file: /identity_provider.jspGenerated servlet error:Syntax error on token "<", ) expectedAn error occurred at line: 70 in the jsp file: /identity_provider.jspGenerated servlet error:Syntax error, insert ";" to complete StatementGenerated servlet error:Syntax error, insert "}" to complete BlockGenerated servlet error:Syntax error, insert "else Statement" to complete IfStatementGenerated servlet error:Syntax error, insert "}" to complete BlockGenerated servlet error:Syntax error on token "}", delete this token org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.jaa:84) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:413) org.apache.jasper.compiler.Compiler.compile(Compiler.java:297) org.apache.jasper.compiler.Compiler.compile(Compiler.java:276) org.apache.jasper.compiler.Compiler.compile(Compiler.java:264) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) servlets.ProcessResponseServlet.doGet(ProcessResponseServlet.java:243) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)Essa linha 70 q esta aparecendo ai eh justamente onde começa o SCRIPT que estamos tentando fazer funcionar!
LINHA 70<script><%String varSubmissao = (String) request.getAtribute("varSubmissao");-----------------------------------------------------------------------------faça isso daqui para testar e verifique oq está vindo no varSubmissaoalert(<%=varSubmissao %>);-----------------------------------------------------------------------------if (varSubmissao == null)  {out.println("document.IdentityProviderForm.submit.click();";}%></script>

Share this post


Link to post
Share on other sites

você colocou no codigo as linhas-----------------------------------------------------------------------------faça isso daqui para testar e verifique oq está vindo no varSubmissao-----------------------------------------------------------------------------c colocou tire, deixe apenas a linha do alertquando você tira o alert(<%=varSubmissao%>); o código funciona?

Share this post


Link to post
Share on other sites

você colocou no codigo as linhas-----------------------------------------------------------------------------faça isso daqui para testar e verifique oq está vindo no varSubmissao-----------------------------------------------------------------------------c colocou tire, deixe apenas a linha do alertquando você tira o alert(<%=varSubmissao%>); o código funciona?

Eu não tinha colocado a linha não.. eh que quando postei copiei do seu Post... mesmo assim não funciona! velho, ta complicado..Ele da o looping umas 5 vezes e retorna a pagina de erro.. que postei anteriormente! na realidade essa pagina sempre aconteceu desde do primeiro post tipo assim ele da o looping aparece essa pagina e passa para o proximo passo.. é muito estranho!Não sei mais to até com dor de cabeça :S http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

Share this post


Link to post
Share on other sites

ele chega a dar o alert, s sim o que aparece no alert?

 

cara outra coisa, nessa parte do código

out.println("document.IdentityProviderForm.submit.click();");
estava faltando fechar um parentese por isso gerou aquele erro enorme, fecha o parentese e tenta novamente.

Share this post


Link to post
Share on other sites

ele chega a dar o alert, s sim o que aparece no alert?

Ele não da o Alert.... so entra no looping e depois quando sai da a pagina de erro..Vou postar aqui o codigo completo..
<%@ page import="util.RequestUtil" %><%@ page import="java.lang.String" %><%@ page import="java.net.URLEncoder" %><html><head>  <meta http-equiv="content-type" content="text/html; charset=UTF-8">  <link href="global/style.css" type="text/css" rel="stylesheet"/>  <title>SAML-based Single Sign-On Service for Google Apps for Your Domain - Test Tool</title></head><body>  <h1>PARTNER - Identity Provider</h1>  <%	String samlRequest = request.getParameter("SAMLRequest");	String domainName = "facsumare.com.br";	String username = request.getParameter("username");	if (username == null) {	  username = "";	}	//If SAML parameters still null, then authnRequest has not yet been	//received by the Identity Provider, so user should not be logged in.	if (samlRequest == null) {  %> 	  <p><div style="padding:0px 8px;border:solid 1px #000;background:#ddd">	  <p><center><img src="global/warning.gif"></center>	  <p><b>Note: The user cannot be authenticated, and a SAML response cannot be 	  sent, until a SAML request is received from the service provider. </b></p>	  </div>  <%	} else {				  String error = (String) request.getAttribute("error");	  if (error != null) {	  %>		<p><font color="red"><b><%= error %></b></font><p>	  <%	  }	  String issueInstant = (String) request.getAttribute("issueInstant");	  String providerName = (String) request.getAttribute("providerName");	  String acsURL = (String) request.getAttribute("acsURL");	  String relayState = (String) request.getAttribute("relayStateURL");	  %>	  	  <form name="IdentityProviderForm" action="ProcessResponseServlet" method="post">		<input type="hidden" name="SAMLRequest" value="<%=samlRequest%>"/>		<input type="hidden" name="RelayState" value="<%=relayState%>"/>		<input type="hidden" name="returnPage" value="identity_provider.jsp">		<input type="hidden" name="samlAction" value="Generate SAML Response">				<p><div style="padding:6px 0px;border-top:solid 1px #3366cc;border-bottom:solid 1px #3366cc">		  <b>Step 4: Partner Handles SAML Request, Authenticates User</b>		</div>		<p>The following values have been parsed from the SAML request:</p>		<p>		<ul>		  <li><b>Issue Instant</b> - <%=issueInstant%></li>		  <li><b>Provider Name</b> - <%=providerName%></li>		  <li><b>ACS URL</b> - <%=acsURL%></li>		</ul>		<p>		  <b>Note:</b> These are all values that you will receive from the 		  service provider in a SAML transaction.		</p>		<p><b>User Login Details</b></p> 		<p>During this step, you also authenticate the user. The reference code 		is designed to log a user into the account <b>demouser@psosamldemo.net		</b>. However, the reference implementation does not actually 		authenticate the user; it assumes that the authentication is successful. 		You will need to modify the reference code to call your internal 		mechanism for authenticating users.</p>		<!-- Stage II: Display a Username and Password Field -->		<!-- Remove the comments around the following four lines in Stage II -->	   		  <blockquote>			<p>Username: <input type="text" name="username" value=""/></p>			<p>Password: <input type="password" name="password" value=""/></p>			<p>			  <b>Note:</b> The submit buttons in step 5 submit the username and			  password to the ProcessResponseServlet.			</p>		  </blockquote>				<!-- Stage II: Hide default username values -->		<!-- Comment out the following three lines in Stage II -->		 <!-- 		<blockquote>		  <p>Username: <%=username%>@<%=domainName%>		  <p>Password: ******		</blockquote>		-->		<p><div style="padding:6px 0px;border-top:solid 1px #3366cc;border-bottom:solid 1px #3366cc">		  <b>Step 5: Partner Generates SAML Response</b>		</div>		<p>In this step, you can click the <b>Generate SAML Response</b> button, 		prompting the reference implementation to generate a SAML response 		indicating that the user (demouser@psosamldemo.net) is authorized to 		reach the Gmail service. When you click the <b>Generate SAML 		Response</b> button, you will execute the ProcessResponseServlet's 		<b>doPost</b> method.</p>		<p>		<center>		  <input type="submit" name="samlButton" id="identity" value="Generate SAML Response"> 		  </center>		<p><br>	  </form>	  <% 	  String samlResponse = (String) request.getAttribute("samlResponse");	  if (samlResponse != null) {		if (username != null) {	  %>		  <%-- This is a hidden form that POSTs the SAML response to the ACS.--%>		  <form name="acsForm" action="<%=acsURL%>" method="post" target="_top">			<div style="display: none">			<textarea rows=10 cols=80 name="SAMLResponse"><%=samlResponse%> </textarea>			<textarea rows=10 cols=80 name="RelayState">http://mail.google.com/a/facsumare.com.br</textarea>			</div>		  </form>	  <%		} else {	  %> 		  <p><span style="font-weight:bold;color:red">			You must enter a valid username and password to log in.		  </span></p>	  <%		}	  %>		<span id="samlResponseDisplay" style="display:inline">		<b> Generated and Signed SAML Response </b>		<p><div class="codediv"><%=RequestUtil.htmlEncode(samlResponse)%></div>		<p>The SAML response contains the following variables:</p>		<p>		<ul>		  <li>			<p>			  <b>RESPONSE_ID</b> - A 160-bit string containing a set of 			  randomly generated characters. The code calls the 			  <b>Util.createID()</b> method to generate this value.			</p>		  </li>		  <li>			<p>			  <b>ISSUE_INSTANT</b> - A timestamp indicating the date and time 			  that the SAML response was generated. The code calls the 			  <b>Util.getDateAndTime()</b> method to generate this value.			</p>		  </li>		  <li>			<p>			  <b>ASSERTION_ID</b> - A 160-bit string containing a set of 			  randomly generated characters. The code calls the 			  <b>Util.createID()</b> method to generate this value.			</p>		  </li>		  <li>			<p>			  <b>USERNAME_STRING</b> - The username for the authenticated user. 			  Modify the <b>ProcessResponseServlet.login()</b> method to return 			  the correct value.			</p>		  </li>		  <li>			<p>			  <b>NOT_BEFORE</b> - A timestamp identifying the date and time 			  before which the SAML response is deemed invalid. The code sets 			  this value to the <b>IssueInstant</b> value from the SAML request.			</p>		  </li>		  <li>			<p>			  <b>NOT_ON_OR_AFTER</b> - A timestamp identifying the date and time			  after which the SAML response is deemed invalid.			</p>		  </li>		  <li>			<p>			  <b>AUTHN_INSTANT</b> - A timestamp indicating the date and time 			  that you authenticated the user.			</p>		  </li>		</ul>		<p>		<center><input name="btn1" type="button" id="btn1" onClick="java script:document.acsForm.submit.click()" value="Submit SAML Response">		</center>		</span>			 <script>	 document.IdentityProviderForm.submit.click();	 </script>	   </body></html>

Share this post


Link to post
Share on other sites

tente fazer o que eu t falei mais na hora do submit do form naum use o .click

 

<script><%String varSubmissao = (String) request.getAtribute("varSubmissao");if (varSubmissao == null)  {out.println("document.IdentityProviderForm.submit();";}%></script>

 

tente postar isso no forum de java, talvez os kras d la consigam resolver.

Share this post


Link to post
Share on other sites

tente fazer o que eu t falei mais na hora do submit do form naum use o .click

<script><%String varSubmissao = (String) request.getAtribute("varSubmissao");if (varSubmissao == null)  {out.println("document.IdentityProviderForm.submit();";}%></script>
tente postar isso no forum de java, talvez os kras d la consigam resolver.
Tentei isso e não funcionou!Falow Valeu!

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.