我是 struts2 的新手。我正在使用 NetBeans8、Glassfish4 和 MySql6。
我正在制作一个登录表单。我遇到的问题是我没有收到错误或任何输出。
我可以运行我的应用程序,并且在单击提交后在我的登录页面上没有任何反应,但我的网址更改为 http://localhost:8080/Pharma/loginAction.action
请有人帮忙,我们将非常感谢您的建议
LoginAction.java
package package_login;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.lang3.StringUtils;
public class LoginAction extends ActionSupport implements ModelDriven<User>{
User user=new User();
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public User getModel() {
return user;
}
public void validate(){
if(StringUtils.isEmpty(user.getEmail())){
addFieldError("email","Please entered your email");
}
if(StringUtils.isEmpty(user.getPassword())){
addFieldError("password","Please entered your password");
}
}
public String execute() throws ClassNotFoundException, SQLException {
LoginService loginService= new LoginService();
if(loginService.verifyLogin(user)){
return "logged";
}
return "login";
}
}
LoginService.java
package package_login;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
class LoginService {
public boolean verifyLogin(User user) throws ClassNotFoundException, SQLException{
Class.forName("com.mysql.jdbc.Driver");
Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/erp","root","ali$");
Statement st= con.createStatement();
ResultSet rs= st.executeQuery("select password,email from login where email='"+user.getEmail()+"'" );
while(rs.next()){
// if(user.getEmail().equals(rs.getString("email"))&& user.getPassword().equals("password")){
// return true;
}
// }
return false;
}
}
用户.java
package package_login;
class User {
private String email;
private String password;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
登录.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- Configuration for the default package. -->
<package name="package_login" extends="struts-default">
<action name="loginAction" class="package_login.LoginAction">
<result name="logged">/welcome.jsp</result>
<result name="login">/login.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>
登录.jsp
<%@taglib uri="/struts-tags" prefix="s"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<s:form action="loginAction">
<s:textfield key="email" label="Email"/>
<s:password key="password" label="Password"/>
<s:submit value="login"/>
</s:form>
</body>
</html>
最佳答案
ResultSet rs= st.executeQuery("select email from login where email='"+user.getEmail()+"' and password='"+user.getPassword()+"'" );
if(rs.next())
{
return true;//if valid user, return true
}
else
return false;
和
您正在使用 struts 配置文件名 login.xml
。
struts 配置文件名应使用 struts.xml
,而不是 login.xml
使用 PrepareStatement
或 callablestatement
代替 Statement
来避免 SQL 注入(inject)。
关于java - 通过 JDBC 使用 MySQL 登录表单 : Model driven in Struts 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31696813/