Olá eu sou novo no desenvolvimento java e tenho uma dúvida que creio que seja básica
Eu preciso pegar a informação de um campo de pesquisa no HTML e colocar dentro de um JAVA.
Estou tentando fazer isso na mesma página conforme segue
<div class="col-md-3">
<p>
<b id="reg" name="reg">Região</b>
</p>
<select id="Regiao" name="Regiao" class="form-control show-tick" data-live-search="true">
<%
dadosfiltro.setRegiao(request.getParameter("Regiao"));
%>
<option><%=dadosfiltro.getRegiao()%></option>
<% } %>
</select>
</div>
Neste exemplo o dado selecionado seria inserido na mesma listagem
Amigo, você deve criar um servlet e submeter o formulário passando seu Servlet no action deste form.
No seu servlet extenda HttpServlet
Ex:
@WebServlet(name = "SeuServlet ", urlPatterns = {"/SeuServlet "})
public class SeuServlet extends HttpServlet {
e no seu método request que deverá implementado, você deve pegar o parâmetro.
ex:
String regiao = request.getParameter("Regiao");
Segue um exemplo passando valor de um radioButton para o servlet.
ribclauport, Muito obrigado por seu retorno… Então, meus radiobuttons estão dentro de um form (abaixo). Este meu form tem bastante informação, não se isso pode influenciar. Enfim, depois de muito me quebrar decidi passar as informações para um select (combobox) e desta forma as informações chegam à SERVLET. Quanto ao livro eu já o tenho, porem não consegui ler muito. Só li os três primeiros capítulos. <%@page import="java.util.List,com.ib.beans.consulta"%> <%@page contentType="text/html"…
[]'s
Desculpa mas não entendi direito.
Quando crio um servlet ele necessariamente sai da página que tenho aberta?
Não tenho um form, consigo colocar dentro da div e executar quando selecionado meu dado no select?
Eu preciso que ao selecionar o dado no campo do select seja inserido esse valor novamente no select
Bom,
Vou citar um exemplo bem besta kkk mas que é simples pra conceituar o servlet.
Pense em uma pessoa (página JSP) e um carteiro (Servlet) que irá entregar uma carta com AR (Será devolvido ao remetente preenchido).
A pessoa envia a carta, o carteiro trata a carta e entrega ao destinatário. Depois o carteiro devolve o AR preenchido a pessoa que enviou.
O servlet vai fazer este papel do carteiro. Ele recebe uma requisição, trata ela e retorna algo para a tela.
No seu caso você não tem um form, mas deve criar um. No atributo action você deve apontar qual será o servlet que irá tratar essa requisição.
Ao proceder o seu JSP por algum botão que submeta o seu form, no Java (Servlet) você conseguirá pegar as informações que você inseriu em seu JSP.
Mas, primeiramente você terá que entender o que é um JSP e um Servlet, ler algum tutorial. Veja no Youtube como iniciar.
Fica um pouco complicado te passar codificação sem entender o conceito.
[]'s
Obrigado entendi sua explicação porém ainda tenho dúvidas.
Vou tentar explicar a minha necessidades.
Tenho uma caixa de seleção de informações de Regições que consulto no banco de dados.
Quando eu selecionar a região que quero, exemplo MATO GROSSO o outro campo de seleção deve listar apenas os dados da região selecionada Exemplo Cuiabá, Rondonópolis, Sorriso.
Eu estava fazendo da forma que enviei, quando abro o sistema ele busca no banco todos os dados e preenche.
Preciso de uma forma de executar esta atividade sem sair da página, atualizando apenas a div onde esta a seleção, consigo realizar estas atividades, a única coisa que não consigo é selecionar a informação no campo de Região e colocar em uma variável no java.
Espero ter informado melhor
<div class="col-md-3">
<p>
<b id="reg" name="reg">Região</b>
</p>
<select id="Regiao" name="Regiao" class="form-control show-tick" data-live-search="true">
<% for(Regiao regiao: fdao.listarRegiao()){ %>
<option><%=regiao.getRegiao()%></option>
<% } %>
</select>
</div>
</div>
<div class="row clearfix">
<div class="col-md-3">
<p>
<b>Filial</b>
</p>
<select class="form-control show-tick" data-live-search="true">
<%
dadosfiltro.setRegiao(request.getParameter("Regiao"));
%>
<% for(Filial filial: fdao.listarFilial()){ %>
<option><%=filial.getFilial()%></option>
<% } %>
</select>
</div>
Putz
No seu caso são duas requisições ao banco. ou uma arquitetura mais complexa.
Tem um exemplo aqui ( Popular combobox em funçao de outro combobox usando JSP + MySQL ) mas que o primeiro combobox é populado manualmente.
Ai seria mais fácil. No seu caso você terá que trazer Região do banco, popular o combo e ao selecionar preencher o segundo combo com as cidades.
Vejo ai uma necessidade de usar JSTL, o que vai ser um pouco mais avançado.
Aqui tem um exemplo ([Resolvido] ComboBox JSP e a JSTL não trás nada )
Problema é que, demanda de um pouco de conhecimento tanto em JSP como em JSTL.
Essa sua necessidade é para fins de aprendizado ou necessidade no trabalho?
É para um sistema que estou desenvolvendo na minha empresa.
Imaginei que fossem duas consultas no banco.
Quando abro a página já insiro os dados do banco no sistema.
A necessidade seria apenas PEGAR o dado do campo REGIAO pois a estrutura de consulta com ele inserio no WHERE da consulta no banco já esta pronta.
Só não consigo colocar o dado selecionado na variável JAVA.
Vou estudar os links que mandou e ja dou um retorno.
Muito obrigado pela atenção.
Olá solucionai da seguinte forma
Servlet pega dados
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
PreparedStatement stmt = null;
List<Regiao> regioes = new ArrayList<>();
int idregiao = 0;
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = ConexaoMySQL.getConexaoMySQL();
java.sql.Statement st = conn.createStatement();
st.executeQuery("SELECT DISTINCT REGIAO FROM `orcamentocontrole` ORDER BY REGIAO");
ResultSet rs = st.getResultSet();
while (rs.next()) {
idregiao++;
Regiao regiao = new Regiao();
regiao.setRegiao(rs.getString("REGIAO"));
regiao.setId(idregiao);
regioes.add(regiao);
}
ConexaoMySQL.FecharConexao();
} catch (SQLException | ClassNotFoundException ex) {
Logger.getLogger(FiltroDAO.class.getName()).log(Level.SEVERE, null, ex);
ConexaoMySQL.FecharConexao();
}
DadosFiltro.setId(Integer.parseInt(request.getParameter("idregiao")) - 1);
DadosFiltro.setRegiao(regioes.get(DadosFiltro.getId()).getRegiao());
}
Java faz o Filtro
public List<Filial> listarFilial() {
PreparedStatement stmt = null;
String reg = "";
if (DadosFiltro.getRegiao() == null) {
reg = "";
} else {
reg = DadosFiltro.getRegiao();
}
List<Filial> filiais = new ArrayList<>();
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = ConexaoMySQL.getConexaoMySQL();
java.sql.Statement st = conn.createStatement();
st.executeQuery("SELECT DISTINCT DESCRICAO_FILIAL FROM `orcamentocontrole` WHERE `REGIAO` LIKE '%" + reg + "' ORDER BY DESCRICAO_FILIAL");
ResultSet rs = st.getResultSet();
while (rs.next()) {
Filial filial = new Filial();
filial.setFilial(rs.getString("DESCRICAO_FILIAL"));
filiais.add(filial);
}
ConexaoMySQL.FecharConexao();
} catch (SQLException | ClassNotFoundException ex) {
Logger.getLogger(FiltroDAO.class.getName()).log(Level.SEVERE, null, ex);
ConexaoMySQL.FecharConexao();
}
return filiais;
}
.jsp realiza o filtro
<div id="divregiao" class="col-md-3">
<p>
<b>Região</b>
</p>
<select id="camporegiao" name="camporegiao" class="form-control show-tick" data-live-search="true">
<% for(Regiao regiao: fdao.listarRegiao()){ %>
<option value=<%=regiao.getId()%>><%=regiao.getRegiao()%></option>
<% } %>
</select>
</div>
</div>
<div class="row clearfix">
<div class="col-md-3">
<div id="divfilial">
<p>
<b>Filial</b>
</p>
<select id="campofilial" name="campofilial" class="form-control show-tick" data-live-search="true">
<% for(Filial filial: fdao.listarFilial()){ %>
<option value=<%=filial.getId()%>><%=filial.getFilial()%></option>
<% } %>
</select>
</div>
</div>
Javascript chama servlet quando selecionado dado
$(document).ready(function () {
$('select[name=camporegiao]').change(function () {
$.ajax({
type: 'GET',
url: '../../FiltroFilial',
data: 'idregiao=' + $('select[name=camporegiao]').val(),
statusCode: {
404: function () {
alert('Pagina não encontrada');
},
500: function () {
alert('erro no servidor')
}
},
success: function (dados) {
$("#divfilial").load(" #divfilial");
$("#tabelaorc").load(" #tabelaorc");
}
});
});
});
Valeu
Parabéns pelo esforço.
Marquei seu comentário como Resolução e adicione [RESOLVIDO] ao título.
valeu