Controller.java
download
/*
* $Id:$
*/
package dcieslak;
import java.util.*;
import java.io.*;
import javax.transaction.*;
import javax.naming.*;
import javax.servlet.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.sql.*;
import javax.transaction.UserTransaction;
import org.apache.log4j.*;
/**
* Klasa bazowa dla kontrolerów
*/
abstract class Controller extends HttpServlet {
protected Connection _conn;
protected Logger _logger;
public void init()
throws ServletException {
BasicConfigurator.configure();
_logger = Logger.getLogger(getClass().getName());
ServletContext context = getServletContext();
try {
InitialContext initial = new InitialContext();
DataSource ds = (DataSource) initial.lookup(
"java:comp/env/jdbc/java2db");
_conn = ds.getConnection();
if(_conn == null)
throw new ServletException("empty conn");
}
catch(Exception exc) {
_logger.error("błąd inicjalizacji", exc);
throw new ServletException(exc);
}
}
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
req.setCharacterEncoding("iso-8859-2");
UserTransaction userTransaction;
try {
InitialContext initial = new InitialContext();
userTransaction = (UserTransaction)
initial.lookup("java:comp/UserTransaction");
}
catch(Exception exc) {
_logger.error("błąd doGet()");
throw new ServletException(exc);
}
try {
userTransaction.begin();
if (req.getParameter("zapisz:method") != null) {
zapisz(req);
}
else if (req.getParameter("usun:method") != null) {
usun(req);
}
else if (req.getParameter("dodaj:method") != null) {
dodaj(req);
}
pokaz(req);
userTransaction.commit();
}
catch(Exception exc) {
try {
userTransaction.rollback();
}
catch(SystemException exc2) {
throw new ServletException(exc);
}
throw new ServletException(exc);
}
ServletContext context = getServletContext();
String[] arr = getClass().getName().split("\\.");
RequestDispatcher disp = context.getRequestDispatcher(
"/" + arr[1] + ".jsp");
disp.forward(req, res);
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
doGet(req, res);
}
public void pokaz(HttpServletRequest req)
throws Exception {
throw new ServletException("pokaz() should be redefined");
}
public void zapisz(HttpServletRequest req)
throws Exception {
throw new ServletException("zapisz() should be redefined");
}
public void dodaj(HttpServletRequest req)
throws Exception {
throw new ServletException("dodaj() should be redefined");
}
public void usun(HttpServletRequest req)
throws Exception {
throw new ServletException("usun() should be redefined");
}
}
(...)
Nie ma bowiem łatwych odpowiedzi.
Nie istnieje nic takiego jak najlepsze
rozwiązanie - zarówno jeśli chodzi o
narzędzia,
jak i języki czy systemy operacyjne. Są
jedynie systemy, które mogą być bardziej
odpowiednie w konkretnych okolicznościach.
I tu właśnie do gry wchodzi pragmatyzm.
Nie należy przywiązywać się do żadnej
określonej metody, ale mieć na tyle rozległą
wiedzę i doświadczenie, by w danej sytuacji
wybrać dobre rozwiązanie.
(...)
Andrew Hunt, David Thomas
"Pragmatyczny Programista"