我想在tomcat 7.0.52下的intellij 13.1上运行web项目。
此应用程序有3个角色 - admin / manager / user。
当我想访问管理员角色时,它会显示 404 Not Found :
这里是 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);
}
}
}
从登录它的渲染器到:
@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" />
如何解决这个问题?
答案 0 :(得分:1)
您在上下文路径/管理器中部署了Tomcat的Manager应用程序,因此以/ manager开头的任何请求都将路由到该应用程序。看起来您需要取消部署Tomcat的管理器应用程序,以允许您的应用程序处理以/ manager开头的URL。