簡體   English   中英

MySQL的Struts2登錄錯誤

[英]Struts2 login error with MySQL

我已經為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>

loginerror.jsp

 <%@ 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>

main.jsp中

 <%@ 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>

在struts.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>  

LoginDao.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;  
}
}   

LoginTest.java

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"?>
<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>

如果我嘗試通過使用OR而不是AND來更改LoginDao.java的查詢,它會將我重定向到main.jsp 我找不到解決方案。我的數據庫包含帶有"test" (VARCHAR(10)用戶名和密碼的"test" (VARCHAR(10)的字段。

密碼的輸入字段具有名稱password

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

然后,setter的名稱應相同。

public void setPassword(String password) {  
    this.password = password;  
}  

這樣,將填充參數,並且您將沒有null值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM