java - 您尝试访问的页面(/manager/projects)不存在-tomcat7下的intellij 13.1

标签 java tomcat intellij-idea http-status-code-404

我想在 tomcat 7.0.52 下的 intellij 13.1 上运行 web 项目。

此应用程序有 3 个角色 - 管理员/经理/用户。

当我想访问经理角色时,它显示 - 404 Not found:

manager

这是 LoginServlet 的片段

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");

    HttpSession session = request.getSession();
    String email = request.getParameter("email");
    String password = MD5Utils.getMD5String(request.getParameter("password"));
    User user = null;
    try {
        user = new UserService().getByEmail(email);
    } catch (DAOException e) {
        log.error(e);
    }

    if (user != null) {
        if (!ValidationUtils.isNullOrEmpty(user.getEmail()) && user.getPassword().equals(password)) {
            session.setAttribute("user", user);
            log.info("Logged in: " + user.getFirstName() + " " + user.getLastName());
            if (session.getAttribute("waitUrl") != null) {
                String url = session.getAttribute("waitUrl").toString();
                response.sendRedirect(url);
            } else {
                String contextPath = request.getContextPath();

                if (user.getRoleId().equals(1)) { // 1=user role
                    response.sendRedirect(contextPath + "/user/tasks");
                } if (user.getRoleId().equals(2)) { // 2 manager role
                    response.sendRedirect(contextPath + "/manager/projects");
                } if (user.getRoleId().equals(3)) { // 3 admin role
                    response.sendRedirect(contextPath + "/admin/users");
                }

            }
        } else {
            request.setAttribute("loginErrors", "Wrong email or password");
            request.getRequestDispatcher("/pages/login.jsp").forward(request, response);
        }
    }
}

从 Login it's renderer 到:

@WebServlet("/manager/projects")
public class OutProjects extends HttpServlet {
    private static Logger log = Logger.getLogger(OutProjects.class);
    private ProjectService projectService;
    private List<Project> projects;

    @Override
    public void init() throws ServletException {
        projectService = new ProjectService();
        updateTable();
    }

    private void updateTable() {
        try {
            projects = projectService.getListOfObjects();
        } catch (DAOException e) {
            log.error(e);
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getSession().setAttribute("projects", projects);
        request.getRequestDispatcher("/pages/manager/projects.jsp").forward(request, response);
    }

和下一个jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<c:set var="language"
       value="${not empty param.language ? param.language : not empty language ? language : pageContext.request.locale}"
       scope="session"/>
<fmt:setLocale value="${language}"/>
<fmt:setBundle basename="com.java.task11.i18n.text"/>

<html lang="${language}">
<head>
    <title>Projects</title>
    <jsp:include page="header.jsp" />
</head>

<body>
<div class="container">
    <div id="tableContainer-1">
        <TABLE class="table table-bordered" >
            <thead>
            <tr>
                <th>#</th>
                <th><fmt:message key="project.name"/></th>
                <th><fmt:message key="project.description"/></th>
                <th><fmt:message key="project.notes"/></th>
                <th></th>
                <th></th>
            </tr>
            </thead>

            <tbody>
            <c:forEach var="project" items="${sessionScope.projects}">
                <form action="${pageContext.request.contextPath}/pages/manager/updateprojects" name="updateProject" method="post">
                    <tr>
                        <td>${project.id}</td>
                        <td>${project.projectName}</td>
                        <td>${project.description}</td>
                        <td>${project.notes}</td>

                        <td><button class="btn btn-inverse" type="submit" name="update" value="${project.id}">
                            <fmt:message key="button.update"/></button></td>
                        <td><button class="btn btn-danger" type="submit" name="delete" value="${project.id}">
                            <fmt:message key="button.delete"/></button></td>
                        <td><button class="btn btn-info" type="submit" name="project_id" value="${project.id}">
                            <fmt:message key="project.tasks"/></button></td>
                    </tr>
                </form>
            </c:forEach>

            <a href="${pageContext.request.contextPath}/pages/manager/addproject.jsp"> <fmt:message key="button.addProject"/></a>
            </tbody>
        </TABLE>
    </div>
</div>
</body>
</html>

我不知道为什么会这样?

我查看了 tomcat-users.xml:

<role rolename="admin" />
<role rolename="tomcat" />
<role rolename="developer" />
<role rolename="customer" />
<role rolename="user" />

<user username="admin" password="admin" roles="admin,tomcat,user,customer" />
<user username="nazar" password="nazar" roles="admin,tomcat,developer,customer,user" />
<user username="developer" password="developer" roles="admin,tomcat,developer,customer,user" />

如何解决这个麻烦?

最佳答案

您在上下文路径/manager 中部署了 Tomcat 的管理器应用程序,因此任何以/manager 开头的请求都将路由到该应用程序。看来您需要取消部署 Tomcat 的管理器应用程序,以允许您的应用程序处理以/manager 开头的 URL。

关于java - 您尝试访问的页面(/manager/projects)不存在-tomcat7下的intellij 13.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22665328/

相关文章:

java - 当我运行/调试文件的 main() 时,如何在 IntelliJ 中使用 SQLServerDriver?

java - Google助理只能用英语回答,但永远不会

java - 更改 JFrame 中的图像?

java - 在 Apache Tomcat 中部署应用程序时,应该将 application.properties 文件放在哪里?

java - 如何使用 Tomcat 和 Java 技术提供动态生成的文件?

java - 如何在 IntelliJ IDEA 中查看 JavaDoc?

java - Jackson 没有字符串参数构造函数/工厂方法来从字符串值 ('7b70f9fa-3861-4552-a72c-7fca341a4554' 反序列化)

java - 在不同的 Activity 中运用值(value)观

java - 将 cookie-config 设置为 httpOnly 并在 web.xml 中保护后无法读取 JSESSIONID cookie

java - 如何在intellij gradle项目中仅运行一个(当前)文件并忽略其他文件?