登陆失败停留在该页面怎么设置啊?

登陆失败停留在该页面怎么设置啊?

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--1、配置一个HandlerMapping,并将url与request对应起来-->
    <bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <!--配置mappings-->
        <property name="mappings">
            <!--配置main请求对应的handler,当输入/main时,就会调用下面的handler进行处理-->
            <props>
                <prop key="/login">
                    loginHandler
                </prop>
            </props>
        </property>
    </bean>

    <!--2、配置Handler-->
    <bean id="loginHandler" class="com.imooc.handler.MyHandler"></bean>

    <!--3、配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--配置前缀-->
        <property name="prefix" value="/"></property>
        <!--配置后缀-->
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>
package com.imooc.handler;


import com.imooc.entity.User;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

/**
 * SpringMVC要求自己创建一个Handler处理器,完成具体业务逻辑
 *Handler类需要去实现Controller接口,并完成其中的方法
 */
public class MyHandler implements Controller {
    @Override
    public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
        //获取request中的数据
        String username = httpServletRequest.getParameter("name");
        String password = httpServletRequest.getParameter("pwd");
        User user = new User();
        //ModelAndView是装载数据模型和逻辑视图的
        ModelAndView modelAndView = new ModelAndView();
        if(password!=null){
            user.setUsername(username);
            user.setPassword(password);
            //添加模型数据
            //会自动将模型放到request域当中
            modelAndView.addObject("USER",user);

            //添加逻辑视图success.jsp
            modelAndView.setViewName("success");
        }else {
            modelAndView.addObject("MSG","密码不能为空");
        }
        return modelAndView;
    }
}

一个url只能对应一个Handler,判断密码是否为空也在Handler内处理,那一个Handler怎么跳转到多个视图解析器呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿满 2019-05-29 14:40:35

同学你好,建议同学在jsp页面中添加<%@ page isELIgnored="false"%>试试呢?如:

http://img1.sycdn.imooc.com//climg/5cee295c00012aad04360081.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 96年的nash #1
    老师请看我回复里的问题,现在的问题是失败后跳转到JSP页面后,无法用EI表达式为其赋值,传回来的username是个空值
    2019-05-29 14:44:10
  • 好帮手慕阿满 回复 提问者 96年的nash #2
    同学你好,登录失败后跳转到jsp页面中,是无法获取username,还是无法给其赋值呢?怀疑同学的web-app版本低于3.0,所以在jsp页面中无法使用EL表达式。建议同学添加<%@ page isELIgnored="false"%>再试试。另外问一下同学,跳转到成功页面后能否使用EL表达式获取值呢?祝:学习愉快~
    2019-05-29 15:56:31
提问者 96年的nash 2019-05-29 12:07:05

这么改可以吗?

package com.imooc.handler;


import com.imooc.entity.User;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

/**
 * SpringMVC要求自己创建一个Handler处理器,完成具体业务逻辑
 *Handler类需要去实现Controller接口,并完成其中的方法
 */
public class MyHandler implements Controller {
    @Override
    public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
        //获取request中的数据
        String username = httpServletRequest.getParameter("name");
        String password = httpServletRequest.getParameter("pwd");
//        if ("".equals(password)){
//            System.out.println("password是空的");
//        }
        User user = new User();
        //ModelAndView是装载数据模型和逻辑视图的
        ModelAndView modelAndView = new ModelAndView();
        if(!"".equals(password)){
            System.out.println("password不是空的");
            System.out.println("password="+password);
            user.setUsername(username);
            user.setPassword(password);
            //添加模型数据
            //会自动将模型放到request域当中
            modelAndView.addObject("USER",user);

            //添加逻辑视图success.jsp
            modelAndView.setViewName("success");
        }else {
            modelAndView.addObject("MSG","密码不能为空");
            modelAndView.addObject("USERNAME",username);
            modelAndView.setViewName("login");
        }
        return modelAndView;
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--1、配置一个HandlerMapping,并将url与request对应起来-->
    <bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <!--配置mappings-->
        <property name="mappings">
            <!--配置main请求对应的handler,当输入/main时,就会调用下面的handler进行处理-->
            <props>
                <prop key="/login">
                    loginHandler
                </prop>
            </props>
        </property>
    </bean>

    <!--2、配置Handler-->
    <bean id="loginHandler" class="com.imooc.handler.MyHandler"></bean>

    <!--3、配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--配置前缀-->
        <property name="prefix" value="/"></property>
        <!--配置后缀-->
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

失败后可以跳回登陆页面了,但是username为什么填充不上啊?还是空白

<%--
  Created by IntelliJ IDEA.
  User: 胡小虎
  Date: 2019/5/29
  Time: 10:42
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>登陆界面</title>
    <style>
        form{
            width:260px;
            margin:0 auto;
        }
    </style>
</head>
<body>
    <form action="/login" method="post">
        <fieldset>
            <legend>用户注册登陆界面</legend>
            <p>
                <label for="name">用户名:</label>
                <input type="text" id="name" name="name" placeholder="<c:if test="${USERNAME!=null}">${USERNAME}</c:if>">
            </p>
            <p>
                <label for="pwd">密码:</label>
                <input type="pwd" id="pwd" name="pwd">
            </p>
            <p>
                <input type="submit" value="登陆">
            </p>
        </fieldset>
    </form>
</body>
</html>


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师