Java MySQL中的Struts2登录错误
我已经为Struts2创建了一个简单的登录应用程序,但无法使用本地MySQL数据库登录。我的代码如下: login.jspJava 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
<%@ 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;
}