Exibir informações de duas tabelas do bd em um mesmo form?

Olá Pessoal!

Gostaria de exibir os itens de um pedido feito no mesmo formulário onde é visualizado as informações de quem fez o pedido. Pois desejo fazer um update no pedido mostrando os itens deste pedido!

A pagina JSP que mostra as informações de quem fez o pedido está descrito abaixo:

<%-- 
    Document   : index
    Created on : 17/01/2017, 20:57:39
    Author     : Jairo
--%>
<%@page import="br.com.jairo.modelo.ItensVenda"%>
<%@page import="br.com.jairo.modelo.Venda"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.util.List"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib tagdir="/WEB-INF/tags" prefix="tagsJairo" %>
<tagsJairo:verificaUsuario/>
<c:import url="cabecalho.jsp"/>
<h1>Atualização de Pedidos</h1>
<form id="formAlteraPedido" method="post" action="AlteraPedido"
    <div class="campos">
        <label for="vencodigo">Codigo do Pedido.:</label>
        <input type="text" name="vencodigo" value="${param.vencodigo}" readonly size="10" <br><br>
    </div>
    <div class="campos">
        <label for="vendata">Data do Pedido.:</label>
        <input type="date" name="vendata" id="vendata" value="${param.vendata}" size="10" readonly <br><br>
    </div>
    <div class="campos">
        <label for="vencli">Nome do Cliente.:</label>
        <input type="text" name="vencli" value="${param.vencli}" readonly size="10" <br><br>
    </div>
    <div class="campos">
        <label for="venvaltotal">Valor Total do Pedido.:</label>
        <input type="text" name="venvaltotal" value="${param.venvaltotal}" readonly size="10"<br>
    </div>
    <div class="campos">
        <label for="venobs">Observações do Pedido.:</label>
        <input type="text" name="venobs" value="${param.venobs}" size="100" <br>
    </div>
    <div class="campos">
        <label for="vensituacao">Pedido Concluido.:</label>
        <input type="checkbox" name="vensituacao" value="${param.vensituacao}"<br>
    </div>
    <input type="submit" name="Atualizar" value="Atualizar" 
</form

Abaixo o método que utilizo para atualizar o pedido. Lembrando que é para atualizar somente o pedido não os itens do pedido.

//metodo que altera o pedido feito pelo usuario
public void alteraPedido(Venda vendas) throws SQLException {
    String sql = "update vendas set vendata=?, vencli=?, venvaltotal=?, venobs=?, vensituacao=? where vencodigo=?";
    PreparedStatement ps = null;

    try {
        ps = conexao.prepareStatement(sql);
        ps.setDate(1, new java.sql.Date(vendas.getVenData().getTime()));
        ps.setString(2, vendas.getVenCli());
        ps.setDouble(3, vendas.getVenValTotal());
        ps.setString(4, vendas.getVenObs());
        ps.setBoolean(5, vendas.getVenSituacao());
        ps.setInt(6, vendas.getVenCodigo());
        ps.execute();
    } catch (SQLException er) {
        Logger.getLogger(VendaDAO.class.getName()).log(Level.SEVERE, null, er);
    } finally {
        ps.close();
    }
}

Abaixo segue o servlet:

public class AlteraPedido extends HttpServlet {

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, ParseException, SQLException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        String codigo = request.getParameter("vencodigo");
        String venData = request.getParameter("vendata");
        String cliente = request.getParameter("vencli");
        String valorTotal = request.getParameter("venvaltotal");
        String obs = request.getParameter("venobs");
        String sit = request.getParameter("vensituacao");

        Venda venda = new Venda();
        venda.setVenCodigo(Integer.parseInt(codigo));

        DateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
        if (venData != null) {
            Date dataFormatada = formatoData.parse(venData);
            venda.setVenData(dataFormatada);
        }

        venda.setVenCli(cliente);
        venda.setVenValTotal(Double.parseDouble(valorTotal));
        venda.setVenObs(obs);

        if (sit != null) {
            venda.setVenSituacao(true);
        }
        //venda.isVenSituacao();

        VendaDAO vendaDAO = new VendaDAO();
        vendaDAO.alteraPedido(venda);

        ItensVendaDAO itensVendaDAO = new ItensVendaDAO();

        try {
           //ESTE TRECHO DO CODIGO É PARA EXIBIR OS ITENS DO PEDIDO
            List listaPedidosPendentes = itensVendaDAO.getListaItensVendaPendentes();
            request.setAttribute("sessaoPendente", listaPedidosPendentes);
        } catch (SQLException erro) {
            Logger.getLogger(AlteraPedido.class.getName()).log(Level.SEVERE, null, erro);
        }
        RequestDispatcher rd = request.getRequestDispatcher("/PedidosCRUD");
        rd.forward(request, response);
    }

Abaixo segue o método para exibir os itens do pedido:

    //metodo que retorna a lista de itens da venda pendentes
    public List getListaItensVendaPendentes() throws SQLException {
        String sqli = "select * from itensvenda";
        PreparedStatement ps = null;
        ResultSet rs = null;
        List<ItensVenda> listaItensVendaPendentes = new ArrayList<ItensVenda>();
        try {
            ps = conexao.prepareStatement(sqli);
            rs = ps.executeQuery();
            while (rs.next()) {
                ItensVenda itensVenda = new ItensVenda();
                itensVenda.setItensCodigo(rs.getInt("itenscodigo"));
                itensVenda.setItensCodVenda(rs.getInt("itenscodvenda"));
                itensVenda.setItensCodProd(rs.getInt("itenscodprod"));
                itensVenda.setItensQuant(rs.getInt("itensquant"));
                itensVenda.setItensTotalVenda(rs.getDouble("itenstotalvenda"));
                listaItensVendaPendentes.add(itensVenda);
            }
            //System.out.println(listaItensVendaPendentes);
            return listaItensVendaPendentes;
        } catch (SQLException er) {
            Logger.getLogger(ItensVendaDAO.class.getName()).log(Level.SEVERE, null, er);
        } finally {
            //conexao.close();
            //ps.close();
            //rs.close();
        }
        return null;
    }

Como informei acima não consigo exibir os itens do pedido neste mesmo formulário, mas se eu fizer um jsp separado e um servlet separado somente para exibir os itens do pedido, eu consigo mostrar os itens do pedido.

Abaixo o jsp que fiz somente para exibir os itens do pedido:

<%-- 
    Document   : index
    Created on : 17/01/2017, 20:57:39
    Author     : Jairo
--%>
<%@page import="br.com.jairo.modelo.ItensVenda"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.util.List"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib tagdir="/WEB-INF/tags" prefix="tagsJairo" %>
<tagsJairo:verificaUsuario/>
<c:import url="cabecalho.jsp"/>
<h1>Atualização De Pedidos</h1>
<table border="1"
    <tr
        <tdSeq.</td><td>Cod. da Venda</td><td>Cod. do Produto</td><td>Qtd.</td><td>Valor Total</td>
    </tr
    <%
                List listaItensPendentes = (List) request.getAttribute("sessaoItensPendentes");

                for (Iterator iterator = listaItensPendentes.iterator(); iterator.hasNext();) {
                    ItensVenda itensVenda = (ItensVenda) iterator.next();%>
    <tr>
        <td><%=itensVenda.getItensCodigo()%></td>
        <td><%=itensVenda.getItensCodVenda()%></td>
        <td><%=itensVenda.getItensCodProd()%></td>
        <td><%=itensVenda.getItensQuant()%></td>
        <td><%=itensVenda.getItensTotalVenda()%></td>
    </tr>
    <%
                }
    %>
</table
<c:import url="rodape.jsp"/>

O servlet:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.jairo.controle;

import br.com.jairo.dao.ItensVendaDAO;
import br.com.jairo.modelo.ItensVenda;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Jairo
 */
public class ListaPendente extends HttpServlet {

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, SQLException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        ItensVendaDAO itensVendaDAO = new ItensVendaDAO();
        try {
            List listaItensPendentes = itensVendaDAO.getListaItensVendaPendentes();
            request.setAttribute("sessaoItensPendentes", listaItensPendentes);
            RequestDispatcher rd = request.getRequestDispatcher("/itens.jsp");
            rd.forward(request, response);
        } catch (SQLException erro) {
            Logger.getLogger(ListaPendente.class.getName()).log(Level.SEVERE, null, erro);
        }
    }

Como fazer para mostrar estes itens do pedido em um mesmo formulário ou jsp?

na sua servlet onde você manda os dados do cliente, para serem exibidos, você também pode mandar os produtos que ele comprou, assim sendo, é só exibir na JSP. Deu para saca?

Pedi ajuda a um amigo, e o mesmo conseguiu solucionar o problema. Ficou da seguinte forma:

No arquivo alterapedidos.jsp:

<%-- 
    Document   : index
    Created on : 17/01/2017, 20:57:39
    Author     : Jairo
--%>
<%@page import="br.com.jairo.modelo.ItensVenda"%>
<%@page import="br.com.jairo.modelo.Venda"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.util.List"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib tagdir="/WEB-INF/tags" prefix="tagsJairo" %>
<tagsJairo:verificaUsuario/>
<c:import url="cabecalho.jsp"/>
<h1>Atualização de Pedidos</h1>
<form id="formAlteraPedido" method="post" action="AlteraPedido">
    <div class="campos">
        <label for="vencodigo">Codigo do Pedido.:</label>
        <input type="text" name="vencodigo" value="${sessionScope.venda.venCodigo}" readonly size="10"<br><br>
    </div>
    <div class="campos">
        <label for="vendata">Data do Pedido.:</label>
        <input type="date" name="vendata" id="vendata" value="${sessionScope.venda.venData}" size="10" readonly <br><br>
    </div>
    <div class="campos">
        <label for="vencli">Nome do Cliente.:</label>
        <input type="text" name="vencli" value="${sessionScope.venda.venCli}" readonly size="10" <br><br>
    </div>
    <div class="campos">
        <label for="venvaltotal">Valor Total do Pedido.:</label>
        <input type="text" name="venvaltotal" value="${sessionScope.venda.venValTotal}" readonly size="10" <br>
    </div>
    <div class="campos">
        <label for="venobs">Observações do Pedido.:</label>
        <input type="text" name="venobs" value="${sessionScope.venda.venObs}" size="100"<br>
    </div>
    <div class="campos">
        <label for="vensituacao">Pedido Concluido.:</label>
        <input type="checkbox" name="vensituacao" value="${sessionScope.venda.venSituacao}"<br>
    </div>
    <input type="submit" name="Atualizar" value="Atualizar" />
</form>

<form id="formItensVenda" method="post" action="ListaPendente">
    <tagsJairo:listaPedidosPendentesTable
</form>
<c:import url="rodape.jsp"/>

No metodo da classe ItensVendaDAO:

//metodo que retorna a lista de itens da venda
public List<ItensVenda> getItensVenda(int itensCodVenda) throws SQLException {
    String sql = "select i.*, p.proddescricao, p.prodvalor from itensvenda i inner join produtos p on p.prodcodigo = i.itenscodprod where itenscodvenda = " + itensCodVenda;
    PreparedStatement ps = null;
    ResultSet rs = null;
    List<ItensVenda> listaItensVenda = new ArrayList<ItensVenda>();
    try {
        ps = conexao.prepareStatement(sql);
        rs = ps.executeQuery();
        while (rs.next()) {
            ItensVenda itensVenda = new ItensVenda();
            itensVenda.setItensCodVenda(rs.getInt("itenscodvenda"));
            itensVenda.setItensCodProd(rs.getInt("itenscodprod"));
            itensVenda.setProdDescricao(rs.getString("proddescricao"));
            itensVenda.setItensQuant(rs.getInt("itensquant"));
            itensVenda.setProdValor(rs.getDouble("prodvalor"));
            itensVenda.setItensTotalVenda(rs.getDouble("itenstotalvenda"));
            listaItensVenda.add(itensVenda);
        }
    } catch (SQLException er) {
        Logger.getLogger(ItensVendaDAO.class.getName()).log(Level.SEVERE, null, er);
    } finally {
        //conexao.close();
        rs.close();
        ps.close();
    }
    return listaItensVenda;
}

No metodo da classe VendaDAO:

//metodo que carrega o pedido
public Venda carregaPedido(int codigo) throws SQLException {
    String sql = "select vencodigo, vendata, vencli, venvaltotal, venobs, vensituacao from vendas where vencodigo=?";
    PreparedStatement ps = null;
    ResultSet rs = null;
    Venda venda = new Venda();

    try {
        ps = conexao.prepareStatement(sql);
        ps.setInt(1, codigo);
        rs = ps.executeQuery();

        while (rs.next()) {
            venda.setVenCodigo(rs.getInt(1));
            venda.setVenData(rs.getDate(2));
            venda.setVenCli(rs.getString(3));
            venda.setVenValTotal(rs.getDouble(4));
            venda.setVenObs(rs.getString(5));
            venda.setVenSituacao(rs.getBoolean(6));
        }
    } catch (SQLException er) {
        Logger.getLogger(VendaDAO.class.getName()).log(Level.SEVERE, null, er);
    } finally {
        rs.close();
        ps.close();
    }

    return venda;
}

Foi criada uma nova servlet:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.jairo.controle;

import br.com.jairo.dao.ItensVendaDAO;
import br.com.jairo.dao.VendaDAO;
import br.com.jairo.modelo.Venda;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Jairo
 */
public class CarregaPedido extends HttpServlet {
   
    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException{
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        Venda venda = new Venda();

        String codigo = request.getParameter("vencodigo");
        /*
        //String venData = request.getParameter("vendata");
        //String cliente = request.getParameter("vencli");
        //String valorTotal = request.getParameter("venvaltotal");
        //String obs = request.getParameter("venobs");
        //String sit = request.getParameter("vensituacao");

        venda.setVenCodigo(Integer.parseInt(codigo));

        DateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
        if (venData != null) {
            Date dataFormatada = formatoData.parse(venData);
            venda.setVenData(dataFormatada);
        }

        venda.setVenCli(cliente);
        venda.setVenValTotal(Double.parseDouble(valorTotal));
        venda.setVenObs(obs);

        if (sit != null) {
            venda.setVenSituacao(true);
        }
        //venda.isVenSituacao();
*/
        VendaDAO vendaDAO = new VendaDAO();
        ItensVendaDAO itensVendaDAO = new ItensVendaDAO();
        try {
            venda = vendaDAO.carregaPedido(Integer.parseInt(codigo));
            List listaPedidosPendentes = itensVendaDAO.getItensVenda(Integer.parseInt(codigo));
            request.getSession().setAttribute("venda", venda);
            request.getSession().setAttribute("itensVenda", listaPedidosPendentes);
        } catch (SQLException ex) {
            Logger.getLogger(CarregaPedido.class.getName()).log(Level.SEVERE, null, ex);
        }

        RequestDispatcher rd = request.getRequestDispatcher("alterapedidos.jsp");
        rd.forward(request, response);
    } 

O trecho do arquivo listapedidos.tag que foi modificado:

out.println("<td><a href='CarregaPedido?vencodigo=" + codigo + "'>
<img src='imagens/altera.png' alt='Alterar'/></a></td>");

Com estas alterações o sistema fez o que eu gostaria!