【问题标题】:how to get userid and password from database and pass to Method in Spring MVC如何从数据库中获取用户名和密码并传递给 Spring MVC 中的方法
【发布时间】:2015-12-18 01:08:31
【问题描述】:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>User Login.</title>
</head>
<body>
    <h4>User Login.</h4>
    <form:form method="post" name="loginForm" action="login-check">
        <table>
            <tr>
                <td>User Name:</td>
                <td><form:input path="name" value="${form.name}"/></td>
            </tr>
            <tr>
                <td>Password:</td>
                <td><form:input path="password" value="${form.password}"/></td>
            </tr>
            <tr>
                <td colspan="2" align="right"><input type="submit"
                    value="Submit"></td>
            </tr>
        </table>
        <div style="color: red">${error}</div>
    </form:form>

</body>
</html>

这是我的控制器:

@RequestMapping("/login-check")
    public ModelAndView  logincheck(@ModelAttribute Form person) {
        // TODO Auto-generated method stub

        int value=service.checkLogin("name", "password");

        if(value>0)
        {

        return "loginsucess";

        }
        else
        {
            return "failure";
        }
    }

我有表单Bean class,其中我们有User Idpassword,还有更多field 有它的gettersetter 我想从jsp 页面获取输入,我有传入checkLogin method 这里我们定义check Login

public int checkLogin(String userName, String userPassword) {
        // TODO Auto-generated method stub
        String SQL_QUERY = " from Form as o where o.userName=? and o.userPassword=?";

        int rowCount = jdbcTemplate.queryForInt(SQL_QUERY);
        return rowCount;
    }

【问题讨论】:

  • 您是如何加载登录页面的?向我们展示你的控制器。
  • @RequestMapping("/login-form") public String loginForm(Model model, Form field) { return "login"; } 使用此代码

标签: java spring jsp model-view-controller


【解决方案1】:

您必须使用计数查询并为准备好的语句设置参数:

 String sql = "SELECT count(*) FROM Form WHERE username = ? and o.userPassword=?";
int count = jdbcTemplate.queryForInt(sql, new Object[] { userName, userPassword});

【讨论】:

  • 好的,但是我将如何从控制器中的 Jsp 页面获取价值
  • paste.ofcode.org/Q2wxG8RNKrf2fMxqzKyhYN 调用登录页面后出现此异常
  • service.checkLogin(person.getName(), person.getPassword()); 应该可以工作
  • 我也是这样做的,但是当我们将索引页面转到登录页面时,出现异常显示我发送给你的信息
【解决方案2】:

在您的代码中进行以下更改

@RequestMapping("/login-form")
public String loginForm(Model model, Form field) {
    model.addAttribute("person", new Form()); // added
    return "login";
}

在表单中添加了modelAttribute。并且不要在 form:input 中指定 value 属性,您的情况只需要 path 属性。

<form:form method="post" modelAttribute="person" name="loginForm" action="login-check">
    ...
    <td><form:input path="name"/></td>
    ...

@ModelAttribute中添加了

@RequestMapping("/login-check")
    public ModelAndView  logincheck(@ModelAttribute("person") Form person) {
        ...

现在 person 对象将从 jsp 中填充。确保使用有效的数据库查询。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 2012-07-13
  • 2020-02-15
  • 1970-01-01
  • 2022-11-19
  • 2015-01-24
相关资源
最近更新 更多