Hi,

I'm experimenting with using annotations.  I created a Servlet with
annotations and then attempt to get the init parameters in the doGet()
method, but I keep getting a null value when I use
this.getServletConfig().  If I save the ServletConfig in an instance
variable from the init() method it works as expected.  Shouldn't the
this.getServletConfig() return the configuration object instead of a null?
What am I missing?

Here is a listing. The code is also attached. I've run it both with and
without a web.xml file (just the root element when present).
@WebServlet(
        name="myservlet",
        urlPatterns={"/"},
        initParams={
                @WebInitParam(name="name", value="Richard"),
                @WebInitParam(name="greeting", value="Hola")
        }
)
public class TheServlet extends HttpServlet {

      ServletConfig myConfig;

      public void init(ServletConfig config) throws ServletException{
           myConfig = config;
      }

    protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {

        // Set content type
          response.setContentType("text/plain");

       // Get initialization parameters

       //ServletConfig config = this.getServletConfig();
       //^^^^^^^^^^^^^^  The above returns null ^^^^^^^^

       ServletConfig config = myConfig;
       //^^^^^^^The above works ^^^^^^^^

       if(config != null){
              String name = config.getInitParameter("name");
              String greeting = config.getInitParameter("greeting");
              response.getWriter().println(greeting + " " +name);
       }else{
              response.getWriter().println("there is no config");
       }
  }
}

Thanks in advance!

Richard
-- 
Richard Monson-Haefel
https://twitter.com/rmonson
https://www.linkedin.com/in/monsonhaefel/

Reply via email to