如何在应用程序启动时触发 servlet 执行



[使用 JEE, MVC, servlets, JSP]web.xml我指定home.jsp页面作为应用程序入口点:

<welcome-file-list>
    <welcome-file>/home.jsp</welcome-file>
</welcome-file-list>

在我的应用程序中,我有下一个servlet:

@WebServlet("/show")
public class ShowPostsController extends HttpServlet {
   private static final long serialVersionUID = 1L;
   @EJB
   private PostDAOLocal postDao;
   protected void doGet(HttpServletRequest request, HttpServletResponse response)  
   throws ServletException, IOException 
   {
         List<Post> posts = null;
         String sort = request.getParameter("sort"); 
         // current page number
         int page = Integer.parseInt(request.getParameter("page")); 
         // the number of entries to show on a "page" 
         int postsPerPage = Integer.parseInt(request.getParameter("postsPerPage")); 
         if(sort.equals("byVisitors"))
          posts = postDao.getMostVisitedPosts();
         else if(sort.equals("byComments"))
          posts = postDao.getMostCommentedPosts();
         else
              posts = postDao.getNewestPosts(page, postsPerPage);  
        request.setAttribute("posts", posts);
        RequestDispatcher dispatcher = request.getRequestDispatcher("home.jsp");
        dispatcher.forward(request, response);
    }

现在,我怎样才能使这个servlet在应用程序启动时加载页面之前home.jsp被调用?(因为我想显示一些从数据库中提取的home.jsp数据,并在 servlet 的 doGet 方法中设置为请求属性)

现在,我怎样才能使这个servlet在应用程序启动时加载主页.jsp页面之前被调用?

如果"在应用程序启动时"

是指"当用户使用默认路径首次访问应用程序时",并且您想要的只是默认调用 servlet 而不是 jsp,那么尝试将/home.jsp替换为welcome-file-list中的 /show,例如:

<welcome-file-list>
    <welcome-file>/show</welcome-file>
</welcome-file-list>

如果不起作用,请尝试在show之前不使用前导斜杠。

编辑:关于评论中的另一个问题。要使用默认值,您可以检查getParameter()是否返回 null,如果是,则为局部变量分配默认值,例如:

String sort = request.getParameter("sort"); 
if (sort == null) {
    sort = "someDefaultValue";
}

在应用程序启动时加载 servlet,您需要编辑 web.xml

<servlet>
<servlet-name>******</servlet-name>
<display-name>******</display-name>
<servlet-class>******</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> 

最新更新