在浏览器的搜索栏中显示错误的URL,因为在登录,注销,索引页面之间导航时,由于Servlet



我想学习的是通过在页面之间导航来解决URL问题。

当我登录登录页面(http://localhost:1112/BookStoreWebsiteProject/backend/login.jsp(时,它会打开索引.jsp但其网址显示为http://localhost:1112/BookStoreWebsiteProject/backend/login

当我在网址定义为http://localhost:1112/BookStoreWebsiteProject/backend/login的索引jsp中注销时,它会打开网址地址http://localhost:1112/BookStoreWebsiteProject/backend/logout的登录论坛

登录服务座

@WebServlet("/backend/login")
public class AdminLoginServlet extends HttpServlet {
...
String page = "/backend/";
             RequestDispatcher requestDispatcher = request.getRequestDispatcher(page);
             requestDispatcher.forward(request, response);

注销服务版

@WebServlet("/backend/logout")
public class AdminLogoutServlet extends HttpServlet {
...
String page = "login.jsp";
        RequestDispatcher requestDispatcher = request.getRequestDispatcher(page);
        requestDispatcher.forward(request, response);

家庭仆人

@WebServlet("/backend/")
public class AdminHomeServlet extends HttpServlet {
...
String page = "index.jsp";
        RequestDispatcher dispatcher = request.getRequestDispatcher(page);
        dispatcher.forward(request, response);

我该如何解决它?

回答您关于设计 url 部分的问题。 通常,这是通过使用Java过滤器来完成的。在您的情况下,您可以使用 response.sendRedirect 执行以下操作:

登录服务座

/

backend/login --> backend/index.jsp

@WebServlet("/backend/login")
public class AdminLoginServlet extends HttpServlet {
...
String page = "/index.jsp";
response.sendRedirect(page);

注销服务版

/

backend/logout --> backend/logout.jsp

@WebServlet("/backend/logout")
public class AdminLogoutServlet extends HttpServlet {
...
String page = "logout.jsp";
response.sendRedirect(page); 

家庭仆人

请注意,您应该在网络中执行此部分.xml

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

让我知道这是否有帮助。

我的答案

String page = request.getContextPath() + "/backend/login.jsp";
response.sendRedirect(page);
String page = request.getContextPath() + "/backend/logout.jsp";
response.sendRedirect(page);
String page = request.getContextPath() + "/backend/index.jsp";
response.sendRedirect(page);

最新更新