Parametri di init in una Servlet

Parametri di init in una Servlet

E' possibile che dobbiate creare delle Servlet che richiedano dei parametri iniziali.

Impostare questi parametri è abbastanza facile, sia se li registriamo nel web.xml che non.

Nel primo caso la sintassi per la Servlet sarà una cosa del genere:

<web-app>
 <servlet>
  <servlet-name>MyServlet</servlet-name>
  <servlet-class>mypackage.MyServlet</servlet-class>
  <init-param>
   <param-name>nome</param-name>
   <param-value>MattePuffo</param-value>
  </init-param>
.......
</servlet>
........
</web-app>

In pratica abbiamo aggiunto il tag init-param.

Se invece non vogliamo registrare le Servlet nel file web.xml, dobbiamo usare l'annotazione @WebInitParam:

@WebServlet(name = "MyServlet", urlPatterns = {"/MyServlet"})
@WebInitParam(name = "nome", value = "MattePuffo")
public class MyServlet extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("NOME:" + getServletConfig().getInitParameter("nome"));
 
        } finally {
            out.close();
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }
}

Indichiamo il nome del parametro e il valore.

Poi sotto lo leggiamo con il metodo getServletConfig, che ritorna un oggetto ServletConfig.

Io ormai preferisco la seconda opzione, e cioè non usare il file web.xml.

Enjoy!!