[使用 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>