Search code examples
javadatabasestrutsdaostruts-1

In struts 1.3 how to retrieve data from database and display it using DAO


*M new to struts. I am making simple login page that display username and password by retrieving it from database. I m using DAO. I have LoginDAO.java, LoginAction.java and Displaydata.jsp pages. *

LoginDAO.java

 public boolean login(String user,String pass) throws SQLException
     {
         Connection con = getConnection();

         Statement st;
        try {
            st = con.createStatement();



                  st.executeQuery("select * from login where Username='" + user + "' and Password='" + pass + "'");


                return true;
            } catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

         return false;

     } 

LoginAction.java

public class LoginAction extends Action

{

    public ActionForward execute(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {



    DynaValidatorForm rf= (DynaValidatorForm) form;

 String username = rf.get("username").toString();
 String password = rf.get("password").toString();
 HttpSession session=request.getSession();
 session.setAttribute("user", username);

 Login dao= new Login();

 if(dao.login(username,password))
 {
      System.out.println("GOT");
        return mapping.findForward("success");}
    else
        {System.out.println("NOT");
    return mapping.findForward("failure");
        }
}
}

and also what do i write in Dislpaydata.jsp to display username and password in it dont want any java code in it. Thankyou


Solution

  • Right. Some time ago I built an application with Struts 1.x and MySql with login.

    LoginAction

    public ActionForward login( ... ) throws Exception {
        String forward;
        final String mail = PropertyUtils.getProperty(form, "mail");
        final String password = PropertyUtils.getProperty(form, "password");
        if (LoginService.getInstance().validate(mail, password)) {
            // Do something e.g. put name of user in session
            forward = SUCCESS;
        } else {
            forward = ERROR;
        }
        return mapping.findForward(forward);
    }
    

    LoginService

    public boolean validate(final String mail, final String password) 
                                                            throws ServiceException {
        try {
            final boolean valid;
    
            // Validate null and empty
    
            // Validate with DB
            final UserDAO dao = new UserDAO();
            final User user = dao.findByPk(mail);
            if (user == null) {
                valid = false;
            } else {
                if (password.equals(user.getPassword())) {
                    valid = true;
                } else {
                    valid = false;
                }
            }
            return valid;
        } catch (DAOException e) {
            throw new ServiceException("Error validating user and password.", e);
        }
    }
    

    UserDAO

    private static final String FIND_BY_PK_SQL 
                     = "SELECT mail, name, password, admin FROM user WHERE mail = ?";
    
    public User findByPk(final String mail) throws DAOException {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            conn = getConnection();
            ps = conn.prepareStatement(FIND_BY_PK_SQL);
            ps.setString(1, mail); // PK, NOT NULL
            rs = ps.executeQuery();
            if (rs.next()) {
                return fill(rs);
            }
            return null;
        } catch (final SQLException e) {
            throw new DAOException(e);
        } finally {
            // Close DB resources
        }
    }
    
    private User fill(final ResultSet rs) throws SQLException {
        final User user = new User();
        user.setMail(rs.getString("mail"));
        user.setName(rs.getString("name"));
        user.setPassword(rs.getString("password"));
        user.setAdmin(rs.getBoolean("admin"));
        return user;
    }
    

    In my case I have a table user with mail as a primary key. There are various forms.

    More examples:


    e.g. For show the name of variable user in session scope from the database:

    LoginAction

    if (LoginService.getInstance().validate(mail, password)) {
        final HttpSession session = request.getSession();
        final User user = UserService.getInstance().getUser(mail);
        session.setAttribute("user", user);
        forward = SUCCESS;
    }
    

    home.jsp

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
    
    Welcome,
    <bean:write scope="session" name="user" property="name" filter="false" />