莉芙·莫妮卡 2024-02-07 08:28 采纳率: 26.7%
浏览 26
已结题

这里点击登录后为啥提示404了,路径和代码都没有错


<!-- 
    登录系统的主界面 
-->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>学生管理系统-管理登录</title>
<style type="text/css">
h2, #login_button, div {
    text-align: center;
}

table {
    background-color: #c1e4e9;
    padding: 8px;
    border: 2px;
}

#login_button {
    padding: 20px;
}

div {
    text-color: red;
}
</style>

</head>
<body>
    <form action="login" method="post">
        <table align="center">
            <tr>
                <td colspan="2"><h2>学生管理系统</h2></td>
            </tr>
            <tr>
                <td align="right">用户名:</td>
                <td><input type="text" name="username" /></td>
            </tr>
            <tr>
                <td align="right">密码:</td>
                <td><input type="password" name="password" /></td>
            </tr>
            <tr>
                <td id="login_button" colspan="2"><input type="submit"
                    name="submit" value="登录" /></td>
            </tr>
        </table>
    </form>
    <div>${massage }</div>
</body>
</html>


package fuz.web.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import fuz.object.User;
import fuz.service.UserService;

/**
 * 登录(管理员)
 */
@WebServlet(name="/LoginServlet", value="/login")
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.设置请求编码,目的是为了处理中文乱码
        request.setCharacterEncoding("UTF-8");
        
        //2.获取表单提交
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        HttpSession session = request.getSession();
        User user = new User(username, password);
        
        //3.处理登录业务,也就是调用业务层
        UserService userService = new UserService();
        boolean bool = userService.login(user);
    
        //4.根据返回结果跳转页面
        if(bool) {
            //登录成功 就会来到学生管理系统的首页
            session.setAttribute("user", user);
            response.sendRedirect("main.jsp");
        }else {
            //登录失败 说明用户名和密码不正确 从而提示错误信息
            request.setAttribute("massage", "用户名和密码不正确");
            request.getRequestDispatcher("index.jsp").forward(request, response);
        }
    }

}

展开全部

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-02-07 08:29
    关注

    引自免费微信小程序:皆我百晓生

    针对您提出的问题,用户在点击登录后出现404错误,路径和代码本身看似没有问题。然而,在Web应用中遇到404错误通常有以下几个原因:

    1. Servlet映射配置与实际请求路径不匹配: 您的LoginServlet类中的注解@WebServlet(name="/LoginServlet", value="/login")指定了处理/login路径的HTTP请求。这与HTML表单中的action属性<form action="login" method="post">是相匹配的。因此,如果服务器上部署的上下文路径设置正确的话,理论上不会因这个原因导致404。

    2. 部署环境问题: 请确保您的Web应用程序已成功部署,并且部署时的上下文路径(Context Path)正确无误。若Web应用的根目录不是服务器的默认根目录,则访问URL应包含上下文路径。

    3. 服务器配置问题: 确保服务器如Tomcat、Jetty等已正确配置,能够识别并处理.jsp文件。有时服务器配置不当会导致静态资源或Servlet映射无法正常工作。

    4. web.xml配置缺失: 如果您使用的是Servlet 3.0之前的版本,需要在web.xml中为LoginServlet指定相应的servlet-mapping。但根据您提供的代码来看,由于使用了注解方式,所以这个问题应该不存在。

    5. 页面文件位置问题: 检查main.jspindex.jsp文件是否位于正确的目录下,且它们的相对路径对于服务器来说是可访问的。

    6. URL重写与过滤器影响: 若项目中有URL重写或者过滤器规则,可能会拦截或修改原本要转发到的URL,从而导致404。

    为了进一步排查,请按照以下步骤进行:

    • 检查服务器日志以获取更详细的错误信息。
    • 确认LoginServlet中的业务逻辑执行是否正确,特别是UserService.login(user)方法。
    • 使用浏览器开发者工具查看实际发出的HTTP请求以及响应的状态码和路径。
    • 验证部署后的应用实际运行URL,例如:http://yourserver/context_path/login 是否可以被访问到。

    基于上述分析,当前给出的代码片段并未发现直接导致404错误的问题。建议从服务器配置、应用部署及日志信息等方面着手排查。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月19日
  • 创建了问题 2月7日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部