setAttribute de jsp para servlet

8 respostas
D

Pessoal to com uma duvida tremenda aqui,
Exemplo: eu tenho um listaunidades.jsp nesta jsp eu crio um link na listagem para passar o codigo da unidade selecionada para cadastrar leitos

<a href="cadastroLeitos.jsp?op=c&codigo=<% out.println(u.getCodUnidade()); %>" >

ai estou passando o codigo da unidade para o cadastroleitos.jsp, como passar este codigo para gravar no servlet apartir do cadastro de leitos agora?

no meu servlet tenho o seguinte codigo, só que na verdade não funciona pq o codigo tem q ser passado no cadastro de leitos e nao estou conseguindo fazer o cadastro leitos receber o codigo que vem do listar unidade, o codigo é passado porem não estou sabendo recebe-lo na tela de cadastro de leito.

switch (op) {
                //novo
        	case 'c':
                leito.setIdLeito(request.getParameter("idLeito"));
                leito.setStatus(Boolean.parseBoolean(request.getParameter("status")));
                unidade.setCodUnidade(Integer.parseInt(request.getParameter("codigo")));
                request.setAttribute("unidade", unidade);
                leito.setUnidade(unidade);
                lDAO.salvar(leito);

                break;

se alguem poder ajudar com algum exemplo.. obrigado.

8 Respostas

G

Na sua Servlet, através da interface HttpServlerRequest, basta fazer isso:

request.getParameter("id");

Se você postar o código inteiro será melhor de analisar.

[]'s

D
ok, vai ser gigante o código hehehe só que o codigo que tem que ser passado é de unidade e não de leito. e isso vem da do listarUnidade.jsp que é este
<a href="leitos?op=c&codigo=<% out.println(u.getCodUnidade()); %>" >
                                Leitos</a>
o certo seria no href ser passado a pagina
<a href="cadastroleitos.jsp?op=&codigo=<% out.println(u.getCodUnidade()); % >" >
pq no jsp de cadastroleito tenho que pegar este valor colocar em algum campo pra ser mostrado, e depois sim salvar e chamar o servlet pra salvar o codigo de unidade juntamente como os dados do leito. eu sinceramente não sei como :(

este eh o cadastroleitos.jsp,

<%@page import="ni.pojos.Unidade"%>
<jsp:useBean class="ni.pojos.Unidade" id="unidade" />
<%@page import="ni.pojos.Leito"%>
<jsp:useBean class="ni.pojos.Leito" id="leitos"/>
<%@page contentType="text/html" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>C.A.I.S. Clemente Ferreira de Lins-SP - Cadastro de Leitos</title>
		<script type="text/javascript" src="js/jquery.js"></script>
		<script type="text/javascript" src="js/jquery.validate.js"></script>
		<link type="text/css" rel="stylesheet" href="css/estilo2.css" media="screen" />
		<script type="text/javascript" src="js/global.js"></script>
    </head>
    <body>
		<div id="cabecalho">
			<p class="p_topo">Cadastro de Leitos<p />
        </div>
        <div id="menu">
            <ul class="listaMenu">
				<li>
					<a href="" class="icones"><img alt=""  src="Imagens/voltar.png" class="img_menu"></a>
					<em>Voltar</em>
				</li>
				<li>
					<a href="entrada.html" class="icones"><img alt=""  src="Imagens/menu.png" class="img_menu"></a>
					<em>Menu</em>
				</li>
            </ul>
        </div>
        <div id="area_trabalho">
			<form action="leitos?op=<%= request.getParameter("op") %>" method="post" class="forms">
            <% if (request.getParameter("op").equals("c")) { %>
				<fieldset>
					<label>
						<span>Código Leito</span>
						<input type="text" name="cod" readonly="true"/>		
					</label>
					
					<label>
						<span>Id</span> 
						<input type="text" name="idLeito" />
					<label>
					
					<label>
						<span>Status</span>
						<input type="radio" name="status" value="true">Ativo
						<input type="radio" name="status" value="false">Inativo		
					</label>
					
					<input type="submit" value="Cadastrar" class="btn"/>
				</fieldset>           
            <% }else {
                leitos = (Leito)request.getAttribute("leito");
                unidade = (Unidade)request.getAttribute("unidade");              
            %>
				<fieldset>
                                    <label
                                        <span>Codigo Unidade</span>
                                        <input type="text" name="codigo" value="<%= unidade.getCodUnidade() %>" readonly="true" />

                                </label>
					<label>
						<span>Código</span>
						<input type="text" name="cod" value="<%= leitos.getCodigoLeito() %>"readonly="true" />
					</label>
					
					<label>
						<span>Id</span>
						<input type="text" name="idLeito" value="<%= leitos.getIdLeito() %> "/>	
					</label>
						<span>Status</span>		
						<input type="radio" name="status" value="true" />Ativo
						<input type="radio" name="status" value="false" />Inativo	
					</label>
					
					<input type="submit" value="Salvar" class="btn"/>
				</fieldset>
            <% } %>
			</form>
		</div>
        <div id="rodape">
            <p class="p_rodape">Powered By: Unilins</p>
        </div>
    </body>
</html>

servlet leitos

package ni.servlets;

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import ni.daos.LeitoDAO;
import ni.daos.UnidadeDAO;
import ni.pojos.Leito;
import ni.pojos.Unidade;

public class ServletLeitos extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        doPost(request,response);
    }


    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

        Leito leito = new Leito();
        LeitoDAO lDAO = new LeitoDAO();
        Unidade unidade = new Unidade();
        UnidadeDAO uDAO = new UnidadeDAO();
        RequestDispatcher dispatcher = null;


        char op = request.getParameter("op").charAt(0);

        switch (op) {
                //novo
        	case 'c':
                leito.setIdLeito(request.getParameter("idLeito"));
                leito.setStatus(Boolean.parseBoolean(request.getParameter("status")));
                unidade.setCodUnidade(Integer.parseInt(request.getParameter("codigo"))); //creio que nao deveria ser aqui
                request.setAttribute("unidade", unidade); //creio que nao deveria ser aqui
                leito.setUnidade(unidade);
                lDAO.salvar(leito);

                break;
            
            case 'r':
              leito = lDAO.buscaLeito(Integer.parseInt(request.getParameter("cod")));
              request.setAttribute("leito",leito);
              dispatcher = request.getRequestDispatcher("cadastroLeitos.jsp?op=u");
              dispatcher.forward(request, response);
              return;
            
            //atualizar
            case 'u':
                leito.setCodigoLeito(Integer.parseInt(request.getParameter("cod")));
                leito.setIdLeito(request.getParameter("idLeito"));
                leito.setStatus(Boolean.parseBoolean(request.getParameter("status"))); 
                unidade.setCodUnidade(Integer.parseInt(request.getParameter("codigo")));  //creio que nao deveria ser aqui
                request.setAttribute("unidade", unidade);  //creio que nao deveria ser aqui
                leito.setUnidade(unidade);

                lDAO.atualizar(leito);

                break;
            //exluir
            case 'd':
                leito.setCodigoLeito(Integer.parseInt(request.getParameter("cod")));
                lDAO.excluir(leito);


        }
        dispatcher = request.getRequestDispatcher("listarLeitos.jsp");
        dispatcher.forward(request, response);
    }
}
G

Se eu entendi a sua necessidade, é melhor você passar os objetos de uma jsp para a outra direto, dessa forma, apresentando os dados e solicitando a confirmação do usuário.

O exemplo seguinte mostra como você pode requisitar os objetos que estão na sessão:

&lt;%@page contentType="text/html" pageEncoding="UTF-8"%&gt;
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;
&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %&gt;
&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt; 
&lt;%@ taglib tagdir="/WEB-INF/tags" prefix="caelum" %&gt;

&lt;jsp:useBean id="dao" class="caelum.Contato"/&gt;

&lt;c:import url="cabecalho.jsp" /&gt;
Formulário para alteração de contatos:<br/>
&lt;form action="mvc" method="POST"&gt;
    Id: &lt;input type="text" name="id" value="&lt;c:out value='${param.id}'/&gt;"&gt;<br/>
    Nome: &lt;input type="text" name="nome" value="&lt;c:out value='${param.nome}'/&gt;"&gt;<br/>
    E-mail: &lt;input type="text"name="email" value="&lt;c:out value='${param.email}'/&gt;"&gt;<br/>
    Endereço: &lt;input type="text" name="endereco" value="&lt;c:out value='${param.endereco}'/&gt;"&gt;<br/>
    Data de Nascimento: &lt;input type="text" name="dataNascimento" value="&lt;c:out value='${param.dataNascimento}'/&gt;"&gt;<br/>
    &lt;input type="hidden" name="logica" value="AlteraContatoLogic"/&gt;
    &lt;input type="submit" value="Enviar"/&gt;
&lt;/form&gt;

Através desse:

value="&lt;c:out value='${param.endereco}'/&gt;

… você consegue pegar os objetos.

Espero que ajude!

[]'s

G

Essas tags são JSTL:

http://www.oracle.com/technetwork/java/index-jsp-135995.html

[]'s

D

é na verdade e +/- isso que eu quero neh passar de uma jsp direto para a outra e depois passar as informações para o servlet contendo as informações de ambas…
para mim o exemplo que postou é uma forma que ainda não sei “trabalhar” aqueles meio chucro ainda hehe…

vou procurar entender pra poder fazer…
mais eu ainda tenho a necessidade ainda depois de passar o objeto unidade “codigo” para o servlet do leito depois…

fico agradecido por tentar me ajudar…
[]'s

G

Dê uma olhada nessa apostila aqui, velhinho. Espero que possa lhe ser útil.

[]'s

D

positivo irei olhar, Obrigado novamente ! :smiley:
hehe

[]'s

G

Considero importante frisar que essa apostila da caelum é fantástica, não sabia nem como funcionava um servlet e numa noite de estudo consegui pegar conceitos importantes e trabalhos ao longo do projeto que tinha pela frente. Realmente uma grande ajuda, me foi recomendada por um amigo aqui do GUJl, estude-a e você conseguirá evoluir bastante. (mas ainda tem muito por vir… muito!)

Criado 18 de junho de 2011
Ultima resposta 18 de jun. de 2011
Respostas 8
Participantes 3