springmvc传值问题

发布于 2022-09-06 15:26:49 字数 2901 浏览 16 评论 0

我根据spring入门中的代码,建立了一个简单的登录模块,但是,在学习展示层时候遇到了一个奇怪的问题,在开始login.jsp中,只有密码中type="password"的值能够传给后端,用户名传的数值为null。
我的问题是:

  1. 为什么值传不进去?
  2. loginCommand是怎么取到传进去的值的?

我的配置如下:
web层,LoginController类

 @RequestMapping(value = "/index.html")
    public String loginPage() {
        return "login";
    }

    @RequestMapping(value = "/loginCheck.html")
    public ModelAndView loginCheck(HttpServletRequest request, LoginCommand loginCommand) {
    //loginCommand只有 userName 和 password 两个属性
        System.out.println("userName: " + loginCommand.getUserName());
        System.out.println("password: " + loginCommand.getPassword());
        boolean isValidUser = userService.hasMatcherUser(loginCommand.getUserName(),
                loginCommand.getPassword());

        System.out.println(isValidUser);
        if (!isValidUser) {
            return new ModelAndView("error", "error", "用户名或密码错误。");
        } else {
            User user = userService.findUserByUserName(loginCommand
                    .getUserName());
            user.setLastIp(request.getLocalAddr());
            user.setLastVisit(new Date());
            userService.loginSuccess(user);
            request.getSession().setAttribute("user", user);
            return new ModelAndView("success");
        }
    }

web.xml

 <!--①从类路径下加载Spring配置文件,classpath关键字特指类路径下加载-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:smart-context.xml</param-value>
  </context-param>
  <!--②负责启动Spring容器的监听器,它将引用①处的上下文参数获得Spring配置文件的地址-->
  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
  <!--Spring MVC的主控Servlet-->
  <servlet>
    <servlet-name>smart</servlet-name>
    <servlet-class>
      org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>3</load-on-startup>
  </servlet>
  <!--③Spring MVC处理的URL-->
  <servlet-mapping>
    <servlet-name>smart</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>

smart-servlet.xml

    <!-- 扫描web包,应用Spring的注解 -->
<context:component-scan base-package="com.smart.web"/>
        <!-- ①②配置视图解析器,将ModelAndView及字符串解析为具体的页面 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:viewClass="org.springframework.web.servlet.view.JstlView"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" />
 </beans>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

舂唻埖巳落 2022-09-13 15:26:49

你要看一下你的页面参数名称和实体bean中字段名称是否一致,框架只是帮你解析你的http请求参数,映射到你设置的对象里了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文