Pegar valor de um link

ae gente, estou fazendo uma coisinha pra web com arquitetura model 2, algo super simples e pequeno, só para exemplificar o uso do model 2, por isso não utilizo nenhum framework… não se faz necessário. Seguinte, tenho dois links em um html por ex:

<a href="servletControlador">Link 1</a>
<a href="servletControlador">Link 2</a>

…ok, agora no código do servlet, como eu faço para saber qual link fez a solicitação? Ja tentei usar os parametros name/value na tag <a> … mas ela não aceita value, só name… se eu tento algo como:

&lt;a href=&quot;servletControlador&quot; name=&quot;link1&quot; value=&quot;valor&quot;&gt;Link 1&lt;/a&gt;

…e depois chamar no objeto HttpServletRequest do servlet:

String str = request.getParameter&#40; &quot;link1&quot; &#41;

…o objeto str vai ter o valor null :? , oq eu preciso é saber no servlet qual link q fez a solicitação, para então decidir oq vou enviar no response (ai uso uns beans como modelo).

[]'s

[color=“darkblue”][size=“11”]“Talvez a ciência nunca descubra um sistema de comunicação em escritórios melhor que o intervalo para o café.” Earl Wilson[/size][/color]

Passe um parametro na url.
Tipo:

&lt;a href=&quot;servletControlador?pa1=1&quot;&gt;Link 1&lt;/a&gt;
&lt;a href=&quot;servletControlador?par1=2&quot;&gt;Link 2&lt;/a&gt;

No servlet vc pega:

String var = request.getParameter&#40;&quot;par1&quot;&#41;;
if&#40;var.equals&#40;&quot;1&quot;&#41; &#123;
//faz alguma coisa
&#125;else if&#40;var.equals&#40;&quot;2&quot;&#41; &#123;
//faz outra coisa.
&#125;

E ai conforme o parametro recebido vc direciona se codigo.

[]'s

po, mas é claaro… onde eu to com a cabeça, é ressaca de carnaval fazendo efeito ainda…!

:martelada:

[]'s

COMO eu faço isso em JSP ?

em jsp seria a mesma coisa, use o objeto implicito request:

&lt;% String valor = request.getParameter&#40; &quot;variavel&quot; &#41;; %&gt;

tá dando erro
HTTP Status 500 - Internal Server Error

type Exception report

message Internal Server Error

description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)


oot cause

java.lang.NullPointerException
at org.apache.jsp.index2_jsp._jspService(index2_jsp.java:50)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

O código que estou usando é esse: index2.jsp

  &lt;%@ page language=&quot;java&quot;%&gt;
&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Form1&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;%
  String var = request.getParameter&#40;&quot;opt&quot;&#41;;
  if &#40;var.equals&#40;&quot;formulario&quot;&#41;&#41; &#123; %&gt;
&lt;p&gt;TESTE&lt;/p&gt;
   &lt;% &#125; else if&#40;var.equals&#40;&quot;cadastro&quot;&#41;&#41; &#123; %&gt;
&lt;p&gt;TESTE2&lt;/p&gt;
   &lt;% &#125;

 %&gt;

&lt;a href=&quot;?opt=formulario&quot;&gt; TESTE  &lt;/a&gt;&lt;/BODY&gt;

&lt;/body&gt; &lt;/html&gt;

bem, não sei se é isso, mas no seu código tem duas tags de fechamento do corpo, </body> …

Não é … pq … o jsp nao verifica se a estrutura da pagina está correta …
para compilar o código.

…ahm, cara, não sei se é isso… mas, ao invéz de usar um else if, use somente um else …pois, acredito q se vc usa a estrutura:

if
else if
else if
else if…

ele vai esperar um ultimo else sozinho, não sei, talvez eu esteja falando bobagem… mas tente assim:

[code]String var = request.getParameter("opt");

if ( var.equals("formulario") )
out.println("TESTE");

else if ( var.equals("cadastro") )
out.println("TESTE2");

else
out.println( "nada" ); [/code]

…pq se vc coloca IF… ELSE IF… ELSE IF… e encerra a estrutura, o compilador vai se perguntar: “e se não for nenhum desses ELSE IF? Preciso de um ELSE final.” …sei la, try it! não testei seu codigo aqui.

tb … nao deu …
faz o seguinte … .testa ai, eh um codigo simmples … por issoq eu to achando q nao eh erro de programacao …

ah, coloque dentro de <form></form> :!:

ahhhh, cara, o erro é o seguinte… olhe só o código:

[code]<%
String var = request.getParameter("opt");

if (var.equals("formulario")) { %>
<p>TESTE</p>

<% } else if(var.equals("cadastro")) { %>
<p>TESTE2</p>
<% } %>

<a href="?opt=formulario"> TESTE </a>[/code]

ocorre o seguinte, a variavel opt não tem um valor qnd vc chama a página! … ela é null, ela só vai ter o valor String “formulario” qnd tu clicar no link href…, então, qnd vc chama ela pela primeira vez, ou seja, antes de clicar no link, ela é null … oq vc pode fazer é chamar diretamente do browser assim:

http://localhost:8080/seila/seu_arquivo.jsp?opt=formulario

…ou fazer uma verificação no código:

[code]String var = request.getParameter("opt");

if ( var != null ) {
//resto do seu código aqui
}
else
out.println( "null!!!" );
[/code]

Bom entao vai ter q ficar por isso mesmo …
depois eu vejo se tem um jeito de usar apenas uma página …

&lt;%@ page language=&quot;java&quot;%&gt;
&lt;%@ page import=&quot;java.io.*&quot; %&gt;
&lt;%@ page import=&quot;java.net.*&quot; %&gt;

&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Form1&lt;/TITLE&gt;

&lt;/HEAD&gt;
&lt;BODY&gt;




&lt;%
 String  var = request.getParameter&#40;&quot;opt&quot;&#41;;
  if &#40;var.equals&#40;&quot;formulario&quot;&#41;&#41;&#123; %&gt;
I SEE&lt;br&gt;
   &lt;% &#125;else &#123; var.equals&#40;&quot;cadastro&quot;&#41;; %&gt;
 DEAD PEOPLE&lt;br&gt;
   &lt;% &#125;

 %&gt;


 

&lt;a href=&quot;?opt=cadastro&quot;&gt; TESTE  &lt;/a&gt;

&lt;/body&gt; &lt;/html&gt;

esse codigo de cima ta errado !!!

No DHARMA!!!