У меня есть проблема с моим lišta-dados.jsp: Мой Servlet:Как перечислить данные с помощью JSP?
package br.com.cad.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import br.com.cad.basica.Contato;
import br.com.cad.dao.ConsultaDados;
public class PesquisaCPF extends HttpServlet{
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
HttpSession session = request.getSession();
Contato user = null;
String cpf = request.getParameter("cpf");
System.out.println(cpf);
try {
ConsultaDados dao = new ConsultaDados();
user = dao.getContato(cpf);
}
catch (Exception e){
System.out.println(e.getMessage());
}
if (user == null) {
session.invalidate();
request.setAttribute("msg", "CPF não encontrado");
request.getRequestDispatcher("checa.jsp").forward(request, response);
}
else{
session.setAttribute("user", user);
request.getRequestDispatcher("checa.jsp").forward(request, response);
}
}
}
Мой Dao:
package br.com.cad.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import br.com.cad.basica.Contato;
public class ConsultaDados extends ConnectDb{
public Contato getContato(String cpf){
Connection c = this.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
try{
ps = c.prepareStatement("select * from dados_cadastro where pf_cpf = ?");
ps.setString(1, cpf);
rs = ps.executeQuery();
if (rs.next()){
Contato user = new Contato();
user.setEmail(rs.getString("pf_email"));
user.setSenha(rs.getString("pf_senha"));
user.setNome(rs.getString("pf_nome"));
user.setSobrenome(rs.getString("pf_ultimonome"));
user.setCpf(rs.getString("pf_cpf"));
user.setRg(rs.getString("pf_rg"));
//user.setDataNascimento("pf_dt_nasc");
user.setTelefone(rs.getString("pf_telefone"));
user.setCelular(rs.getString("pf_celular"));
user.setSexo(rs.getString("pf_sexo"));
user.setEndereco(rs.getString("pf_endereco"));
user.setBairro(rs.getString("pf_bairro"));
user.setCidade(rs.getString("pf_cidade"));
user.setEstado(rs.getString("pf_estado"));
user.setSangue(rs.getString("pf_sangue"));
user.setAlergia(rs.getString("pf_alergia"));
user.setCirurgia(rs.getString("pf_cirugia"));
user.setDiabete(rs.getString("pf_diabete"));
user.setSoropositivo(rs.getString("pf_soro_positivo"));
return user;
}
}
catch (SQLException e){
e.printStackTrace();
}
finally{
if (rs != null) {
try { rs.close(); } catch (SQLException e) { ; }
rs = null;
}
if (ps != null) {
try { ps.close(); } catch (SQLException e) { ; }
ps = null;
}
if (c != null) {
try { c.close(); } catch (SQLException e) { ; }
c = null;
}
}
return null;
}
}
И у меня есть веб-формы, чтобы посмотреть конкретную информацию:
<body>
<form action="lista-dados.jsp" method="POST">
<label for="cpf">Busque o CPF</label>
<br>
<input type="text" id="cpf" required name="cpf">
<button type="submit">Consultar</button><...>
Мой списокa-dados.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="br.com.cad.servlet.PesquisaCPF,br.com.cad.dao.ConsultaDados" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8" />
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="dao" class="br.com.cad.dao.ConsultaDados"/>
<table>
${dao.cpf}
<tr>
<td>${user.nome}</td>
<td>${user.email}</td>
<td>${user.endereco}</td>
</tr>
</table>
</body>
</html>
Я могу войти в свой home.jsp через сервлет. и у меня есть некоторые сомнения в моей lišta-dados.jsp, Что проблема, когда я поставил СПЛ номер и нажмите на кнопку отправить я получаю сообщение об ошибке:
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /lista-dados.jsp at line 17
14:
15: <table>
16:
17: ${dao.cpf}
18: <tr>
19: <td>${user.nome}</td>
20: <td>${user.email}</td>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause
javax.el.PropertyNotFoundException: Property 'cpf' not found on type br.com.cad.dao.ConsultaDados
javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:237)
javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:214)
javax.el.BeanELResolver.property(BeanELResolver.java:325)
javax.el.BeanELResolver.getValue(BeanELResolver.java:85)
org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
org.apache.el.parser.AstValue.getValue(AstValue.java:183)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:1026)
org.apache.jsp.lista_002ddados_jsp._jspService(lista_002ddados_jsp.java:85)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
Я не вижу никакой переменной с именем cpf в вашем классе 'ConsultaDados'. где это? находится в суперклассе? –
@RasoulTaheri Но в моем классе Contato, который я не вставлял в эту цепочку, есть переменная cpf с вашими методами getters/seters. и мой класс ConsultaDados вызывает экземпляр этого открытого Contato getContato (String cpf) –
, когда вы используете '$ {dao.cpf}', это означает, что у вас есть переменная с именем cpf, которая является общедоступной или hava-методом getter. и он помещается в текущий класс или его суперкласс. –