Servlets Servlet:在doGet()方法中重定向到索引而不是显示视图的正确方法
鉴于此doGet实现:Servlets Servlet:在doGet()方法中重定向到索引而不是显示视图的正确方法,servlets,Servlets,鉴于此doGet实现: @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (request.getParameterMap().isEmpty()) { // DAO initialized in init() method Collectio
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (request.getParameterMap().isEmpty()) {
// DAO initialized in init() method
Collection<User> users = resource.getUsers();
if (users != null){
HttpSession session = request.getSession();
session.setAttribute("users", users);
}
request.getRequestDispatcher("/WEB-INF/users/index.jsp").forward(request, response);
}
else {
String name = request.getParameter("name");
// DAO initialized in init() method
User user = resource.getUser(name);
if (user == null){
request.setAttribute("message", "Unknown user: " + name);
request.getRequestDispatcher("/WEB-INF/errors/404.jsp").forward(request, response);
}
else {
HttpSession session = request.getSession();
session.setAttribute("user", user);
request.getRequestDispatcher("/WEB-INF/users/show.jsp").forward(request, response);
}
}
}
问题:
request.getParameterMap.isEmpty是测试参数存在的首选方法吗?
有没有办法从Servlet的上下文或注释推断视图的位置/WEB-INF/users/?
request.getParameterMap.isEmpty是测试参数存在的首选方法吗
是的。但这不是针对您的特定情况的正确解决方案。如果最终用户提供了名称以外的任意参数,则代码将失败,导致参数映射不为空,从而输入需要名称参数的块。您应该明确地检查请求参数名称本身
有没有办法从Servlet的上下文或注释推断视图的位置/WEB-INF/users/
使用推荐或不推荐的MVC框架,除非100%是内部/私人/爱好,因此纯粹出于学习目的
String name = request.getParameter("name");
if (name == null) {
Collection<User> users = resource.getUsers();
// ...
}
else {
User user = resource.getUser(name);
// ...
}