Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MySQL中的Struts2登录错误_Java_Mysql_Struts2 - Fatal编程技术网

Java MySQL中的Struts2登录错误

Java MySQL中的Struts2登录错误,java,mysql,struts2,Java,Mysql,Struts2,我已经为Struts2创建了一个简单的登录应用程序,但无法使用本地MySQL数据库登录。我的代码如下: login.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html> <htm

我已经为Struts2创建了一个简单的登录应用程序,但无法使用本地MySQL数据库登录。我的代码如下:

login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s" %>  
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Login</title>
</head>
<body>
    <s:form action="loginprocess">  
    <s:textfield name="username" label="Username"></s:textfield>  
    <s:password name="password" label="Password"></s:password>  
    <s:submit cssStyle="float:left;" value="Login"></s:submit>  
    </s:form>
</body>
</html>
 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Login</title>
        </head>
    <body>
        Sorry username or password error!  
    <jsp:include page="login.jsp"></jsp:include>  
    </body>
    </html>
 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s" %>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>My Page</title>
</head>
<body>
    <h2>Welcome!</h2>
</body>
</html>
LoginTest.java

package com.login.struts2;
import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.PreparedStatement;  
import java.sql.ResultSet;  

public class LoginDao {
public static boolean validate(String username, String password){  
 boolean status=false;
 Connection conn = null;
  try
  {  
   String URL = "jdbc:mysql://localhost:3306/struts_register2";
   Class.forName("com.mysql.jdbc.Driver");
   conn = DriverManager.getConnection(URL, "root", "1235");
   PreparedStatement ps=conn.prepareStatement("select * from test where username=? AND password=?");  
   ps.setString(1,username);  
   ps.setString(2,password);
   ResultSet rs = ps.executeQuery();  
   status = rs.next();
 }
 catch(Exception e){e.printStackTrace();}  
 return status;  
}
}   
package com.login.struts2;

public class LoginTest {  
    private String username,password;  
    public String getUsername() {  
        return username;  
    }  
    public void setUsername(String username) {  
        this.username = username;  
    }  

    public String getUserpass() {  
        return password;  
    }   
    public void setUserpass(String password) {  
        this.password = password;  
    }  

    public String execute(){  
        if(LoginDao.validate(username, password)){  
            return "success";  
        }  
        else{  
            return "error";  
        }  
    }  
}  
web.xml

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD  
Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">  
<struts>  
 <package name="default" extends="struts-default">  
<action name="loginprocess" class="com.login.struts2.LoginTest">  
<result name="success">main.jsp</result>  
<result name="error">loginerror.jsp</result>  
</action>
</package>  
</struts>  
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>login.jsp</welcome-file>
        </welcome-file-list>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

index.jsp
login.jsp
支柱2
org.apache.struts2.dispatcher.ng.filter.strutspreadexecutefilter
支柱2
/*

如果我尝试在
LoginDao.java
处更改查询,通过使用
而不是
,它会将我重定向到
main.jsp
。我找不到解决方案。我的数据库中的字段带有用户名和密码的
“test”(VARCHAR(10)
。有什么想法吗?

密码的输入字段有一个名称
密码

<s:password name="password" label="Password"></s:password>  

这样,参数将被填充,您将不会有
null
值。

您的输入是什么,选择返回什么?在将用户名和密码插入stmt之前,您是否记录了它们?密码长度应该足够大,以存储强密码。@thst我的输入是对用户名和密码字段的测试e目前仅在数据库中记录。请将用户名和密码的值记录到stdout,这可能会显示意外字符。您的代码看起来正常。如果SQL查询没有返回您认为的值,则用户名/密码组合不是您认为的值,或者数据库中的值不是您认为的值。在任何情况下,您都必须使用退一步,检查你的假设。
public void setPassword(String password) {  
    this.password = password;  
}