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

时间:2014-01-04 12:51:02

标签: java jsp servlets model-view-controller

[使用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);
    }

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

  

现在,如何在应用程序启动时加载home.jsp页面之前调用此servlet?

如果“在应用程序启动时”是指“当用户第一次使用默认路径访问应用程序时”并且您想要的是默认调用的servlet而不是jsp,那么请尝试替换/home.jsp /show中的welcome-file-list,例如:

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

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

修改:关于评论中的其他问题。要使用默认值,您可以检查getParameter()是否返回null,如果是,则为本地变量分配默认值,例如:

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