I created a
ServletContextListener
and annotated it. In the contextInitialized()
method, I set the servlet name, its class, and a mapping and we are done.
We can then deploy the project and watch the magic. Here is the Apache Maven project: dynamic-servlet.zip
ServletContextListenerImpl.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | /* * Copyright 2012 Blue Lotus Software, LLC. * Copyright 2012 John Yeary. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.bluelotussoftware.servlet; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.ServletRegistration; import javax.servlet.annotation.WebListener; /** * * @author John Yeary * @version 1.0 */ @WebListener public class ServletContextListenerImpl implements ServletContextListener { @Override public void contextInitialized( final ServletContextEvent sce) { final ServletContext servletContext = sce.getServletContext(); final ServletRegistration.Dynamic dynamic = servletContext.addServlet( "Example Servlet" , ExampleServlet. class ); dynamic.addMapping( "/" ); final Map<String, ? extends ServletRegistration> map = servletContext.getServletRegistrations(); for (String key : map.keySet()) { servletContext.log( "Registered Servlet: " + map.get(key).getName()); } } @Override public void contextDestroyed( final ServletContextEvent sce) { //NO-OP } } |
ExampleServlet.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | /* * Copyright 2012 Blue Lotus Software, LLC. * Copyright 2012 John Yeary. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.bluelotussoftware.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * * @author John Yeary * @version 1.0 */ public class ExampleServlet extends HttpServlet { /** * Processes requests for both HTTP * <code>GET</code> and * <code>POST</code> methods. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet ExampleServlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1> Servlet ExampleServlet at " + request.getContextPath() + "</h1> "); out.println("<p style=\"font-size:24px;font-weight:bold;\"> Hello World!</p> "); out.println("</body>"); out.println("</html>"); } finally { out.close(); } } /** * Handles the HTTP * <code>GET</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP * <code>POST</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } } |
0 comments :
Post a Comment