public class Task {
private Long id;
private String titulo;
private boolean concluida;
// Construtor sem argumentos
public Task() {}
// Getters e Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
// Demais getters e setters...
}
// JavaBean
public class Task {
private Long id;
private String titulo;
private boolean concluida;
// Getters e setters...
}
// DAO
public class TaskDao {
public void save(Task task) {
// Código para persistir no banco
}
public List findAll() {
// Retorna todas as tarefas
}
public void delete(Long id) {
// Remove uma tarefa
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Lista de Tarefas</title>
</head>
<body>
<h1>Minhas Tarefas</h1>
<ul>
<c:forEach items="${tarefas}" var="tarefa">
<li>
${tarefa.titulo}
<c:if test="${tarefa.concluida}">
(Concluída)
</c:if>
</li>
</c:forEach>
</ul>
</body>
</html>
@WebServlet("/tarefas")
public class TarefaController extends HttpServlet {
private TaskDao taskDao = new TaskDao();
@Override
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException, IOException {
// Obtém dados do Model
List tarefas = taskDao.findAll();
// Disponibiliza para a View
req.setAttribute("tarefas", tarefas);
// Encaminha para a View
req.getRequestDispatcher("/WEB-INF/views/tarefas.jsp")
.forward(req, resp);
}
}
public class Produto implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String nome;
private String descricao;
private BigDecimal preco;
private Integer estoque;
// Construtor padrão
public Produto() {
}
// Construtor completo
public Produto(Long id, String nome,
String descricao,
BigDecimal preco,
Integer estoque) {
this.id = id;
this.nome = nome;
this.descricao = descricao;
this.preco = preco;
this.estoque = estoque;
}
// Getters e setters...
}
@WebServlet("/produtos")
public class ProdutoController extends HttpServlet {
private ProdutoDAO dao = new ProdutoDAO();
@Override
protected void doGet(
HttpServletRequest req,
HttpServletResponse resp
) throws ServletException, IOException {
String acao = req.getParameter("acao");
if ("novo".equals(acao)) {
// Exibir formulário
req.getRequestDispatcher(
"/WEB-INF/views/produto-form.jsp"
).forward(req, resp);
} else {
// Listar produtos
List produtos = dao.listarTodos();
req.setAttribute("produtos", produtos);
req.getRequestDispatcher(
"/WEB-INF/views/produtos.jsp"
).forward(req, resp);
}
}
@Override
protected void doPost(
HttpServletRequest req,
HttpServletResponse resp
) throws ServletException, IOException {
// Processar formulário
// ...
}
}
Logger logger = Logger.getLogger(ProdutoController.class.getName());
logger.info("Requisição recebida: " + acao);
@Test
public void testProdutoPrecoNegativo() {
Produto p = new Produto();
assertThrows(IllegalArgumentException.class,
() -> p.setPreco(new BigDecimal(-10)));
}
@Before
public void setUp() {
// Configura banco de teste e insere dados
}
public class ProdutoDAO {
private Connection getConnection() throws SQLException {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
return DriverManager.getConnection(
"jdbc:mysql://localhost:3306/loja",
"usuario", "senha");
} catch (ClassNotFoundException e) {
throw new SQLException("Driver não encontrado", e);
}
}
public void inserir(Produto p) throws SQLException {
String sql = "INSERT INTO produtos (nome, descricao, preco, estoque) VALUES (?, ?, ?, ?)";
try (Connection conn = getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, p.getNome());
stmt.setString(2, p.getDescricao());
stmt.setBigDecimal(3, p.getPreco());
stmt.setInt(4, p.getEstoque());
stmt.executeUpdate();
}
}
}