首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过JDBC使用MySQL登录表单: Struts 2中驱动的模型

通过JDBC使用MySQL登录表单: Struts 2中驱动的模型
EN

Stack Overflow用户
提问于 2015-07-29 09:44:55
回答 1查看 1.4K关注 0票数 0

我是struts2的新手。我正在使用NetBeans8,Glassfish4和MySql6。

我正在做一个登录表格。我的问题是,我既没有得到错误,也没有得到任何输出。

单击submit后,我可以运行我的应用程序和登录页面,但是我的url更改为http://localhost:8080/Pharma/loginAction.action

请有人帮忙,你的建议将不胜感激。

LoginAction.java

代码语言:javascript
复制
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

代码语言:javascript
复制
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;
        }

    }

User.java

代码语言:javascript
复制
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;
    }

}

login.xml

代码语言:javascript
复制
<?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>

login.jsp

代码语言:javascript
复制
<%@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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-29 10:24:11

代码语言:javascript
复制
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配置文件名而不是login.xml应该使用struts.xml

而不是使用Statement,而是使用PrepareStatementcallablestatement来避免sql注入。

Link

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31696813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档