[使用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
方法中设置为请求属性)
答案 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";
}