ssh登录提交后跳转界面404错误

初学者,一个简单的动态web项目,用的ssh(springmvc+spring+hibernate)构建,做的一个登录的小案例,用户名和密码都是代码写死的,点击登录按钮,跳转到对应的的页面。项目目录结构如下:
图片描述

index.jsp是项目的主界面,也就是登录界面,主要表单代码如下:

<form class="login-box" action="person/login" method="post">
        <div class="username"><span>用户名</span><input type="text" name="username"></div>
        <div class="passowrd"><span>密码</span><input type="password" name="password"></div>
        <div class="login-btn"><input type="submit" name="" value="登录"></div>
</form>

对应的Controller主要代码如下:

@Controller
@RequestMapping(value="/person")
public class PersonController {

    @Autowired
    private PersonService personSerivce;

    @RequestMapping("/login")
    public String login(String username,String password,Map<String, Object> map) {
        if(username.equals("admin") && password.equals("admin")) {
            map.put("username", username);
            return "main";
        }
        return "error";
    }
}

视图解析器我在springmvc.xml中也配置了

<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/>
</bean>

为什么我这里点击登录提交后,页面不是跳转到main.jsp这个页面而是报错404呢?
图片描述

求大佬帮忙解答下。

阅读 5.2k
5 个回答

controller修改下:

@Controller
public class PersonController {

    @Autowired
    private PersonService personSerivce;

    @RequestMapping("/person/login")
    public String login(String username,String password,Map<String, Object> map) {
        if(username.equals("admin") && password.equals("admin")) {
            map.put("username", username);
            return "main";
        }
        return "error";
    }
}

-----------------补充
action改成这个

<form class="login-box" action="/person/login" method="post">
        <div class="username"><span>用户名</span><input type="text" name="username"></div>
        <div class="passowrd"><span>密码</span><input type="password" name="password"></div>
        <div class="login-btn"><input type="submit" name="" value="登录"></div>
</form>

检查下你得url匹配,看你提供的controller拦截的是/login,表单提交的是person/login,确认下person路径有配置么

form的action属性改为${pageContext.request.contextPath}/person/login

你这个是进入你的controller时报的404错误,也就是说没有找到你的login,你检查一下你的前端控制器,有没有指定后缀

4开头的都是客户端错误,检查路径

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题