O projeto é outro mas o princípio lógico estou seguindo o mesmo.
Estou mandando abaixo o que tenho, para que se possível me ajudem.
SgrDao.java
package br.com.fiabilite.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import br.com.fiabilite.bean.Sgr;
public class SgrDao {
private Connection cnn;
public SgrDao(Connection cnn) {
	this.cnn = cnn;
}
// insere sgr
public void InsereSgr(Sgr sgr){
	try {
		String sql = "INSERT INTO tbl_sgr " + "(sgr_localizacao)" + " values (?)";
		
		PreparedStatement ps = cnn.prepareStatement(sql);
		
		ps.setString(1, sgr.getSgr_localizacao());
		ps.execute();
		
	} catch (Exception e) {
		// mensagem de erro para o usuário
		throw new RuntimeException(e);
	}
}
// cria um array
public List<Sgr> getLista() throws SQLException {
	try {
		List<Sgr> sgrs = new ArrayList<>();
		
		PreparedStatement ps = this.cnn.prepareStatement("SELECT * FROM tbl_sgr");
		
		ResultSet rs = ps.executeQuery();
		while (rs.next()) {
			
			// criando o obj sgr
			Sgr sgr = new Sgr();
			
			sgr.setSgr_id(rs.getLong("sgr_id"));
			sgr.setSgr_localizacao(rs.getString("sgr_localizacao"));
			// adicionando o objeto à lista
			sgrs.add(sgr);
		}
		rs.close();
		ps.close();
		
		return sgrs;
		
	} catch (SQLException e) {
		throw new RuntimeException(e);
	}
}
// alterar registro
public void altera(Sgr sgr) {
	String sql = "UPDATE tbl_sgr set sgr_localizacao=? WHERE sgr_id=?";
	try {
		PreparedStatement ps = cnn.prepareStatement(sql);
		ps.setString(1, sgr.getSgr_localizacao());
		ps.setLong(2, sgr.getSgr_id());
		
		ps.execute();
		ps.close();
		
	} catch (SQLException e) {
		throw new RuntimeException(e);
	}
}
// remove registro
public void remove(Sgr sgr) {
	try {
		PreparedStatement ps = cnn.prepareStatement("DELETE FROM contatos WHERE id=?");
		
		ps.setLong(1, sgr.getSgr_id());
		
		ps.execute();
		ps.close();
	} catch (SQLException e) {
		throw new RuntimeException(e);
	}
}
}
AdicionaSgrLogic.java
package br.com.fiabilite.logica;
import java.sql.Connection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.fiabilite.bean.Sgr;
import br.com.fiabilite.dao.SgrDao;
public class AdicionaSgrLogic implements Logica {
public String executa(HttpServletRequest req, HttpServletResponse res) throws Exception{
	Connection cnn = (Connection) req.getAttribute("cnn");
	
	//buscando os parâmetros no request
	String local = req.getParameter("sgr_localizacao");
	
	// monta um objeto Sgr
    Sgr sgr = new Sgr();
    sgr.setSgr_localizacao(local);
    
    // salva a Sgr
    SgrDao dao = new SgrDao(cnn);
    dao.InsereSgr(sgr);
    return "mvc?logica=ListaContatosLogic";
}
}
ERRO
HTTP Status 500 – Internal Server Error
Type Exception Report
Message A lógica de negócios causou uma exceção
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
javax.servlet.ServletException: A lógica de negócios causou uma exceção
br.com.fiabilite.servlet.ControllerServlet.service(ControllerServlet.java:31)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause
java.lang.RuntimeException: java.lang.NullPointerException
br.com.fiabilite.dao.SgrDao.InsereSgr(SgrDao.java:33)
br.com.fiabilite.logica.AdicionaSgrLogic.executa(AdicionaSgrLogic.java:25)
br.com.fiabilite.servlet.ControllerServlet.service(ControllerServlet.java:26)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause
java.lang.NullPointerException
br.com.fiabilite.dao.SgrDao.InsereSgr(SgrDao.java:25)
br.com.fiabilite.logica.AdicionaSgrLogic.executa(AdicionaSgrLogic.java:25)
br.com.fiabilite.servlet.ControllerServlet.service(ControllerServlet.java:26)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Note The full stack trace of the root cause is available in the server logs.
Apache Tomcat/8.5.24