java - 通过 JDBC 使用 MySQL 登录表单 : Model driven in Struts 2

标签 java mysql struts2

我是 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

使用 PrepareStatementcallablestatement 代替 Statement 来避免 SQL 注入(inject)。

Link

关于java - 通过 JDBC 使用 MySQL 登录表单 : Model driven in Struts 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31696813/

相关文章:

php - 见过的功能,就像这里一样

mysql - 在 MySQL 中选择 2 个相关表

mysql - 如何将结果从一行链接到同一张表上的另一行

java - 套接字积压行为

java - 如果没有 Maven,则无法解析 org.springframework.beans.factory.support.BeanNameGenerator 类型

java - 在队列之间移动消息

java - 如何使用 Struts 2 在 JSP 中打印 session 属性

macos - 如何在 Mac 10.6 上运行 JRE 7

java - 使用值 [Ljava.lang.String;@......] 设置表达式 X 时出错

java - 从外部 jsp 页面显示对话框(Struts2、java)