| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 
 | package org.apache.struts.webapp.example;
 
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import javax.sql.RowSet;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.ModuleException;
import org.apache.struts.util.MessageResources;
import org.apache.commons.beanutils.PropertyUtils;
 
public final class LogonAction extends Action {
 
    public ActionForward execute(ActionMapping mapping,
				 ActionForm form,
				 HttpServletRequest request,
				 HttpServletResponse response)
	throws Exception {
 
        Locale locale = getLocale(request);
 
		DataSource dataSource = this.getDataSource(request, "webserver");
 
		if (dataSource == null) {
			ActionErrors errors = new ActionErrors();
			errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.database.missing"));
		    saveErrors(request, errors);
	        return (mapping.getInputForward());
		}		
 
		MessageResources messages = getResources(request);
 
		Connection connection = null;
		Statement st = null;
		ResultSet rs = null;
		String query = null;
		RowSet rowset = null;
		int ResultCount = 0;
 
		String username = (String)PropertyUtils.getSimpleProperty(form, "username");
	    String password = (String)PropertyUtils.getSimpleProperty(form, "password");
 
		try {
			 connection = dataSource.getConnection();
			 query = "select count(*) as rowcount from tb_users where login='"+username+"' and password='"+password+"'";
			 st = connection.createStatement();
			 rs = st.executeQuery(query);
 
			 rs.next();
			 ResultCount = rs.getInt("rowcount") ;			 
 
			 rs.close();
			 st.close();
		 } catch (Exception ex) {
			 ActionErrors errors = new ActionErrors();
			 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.database.connection"));
			 this.saveErrors(request, errors);
			 return (mapping.getInputForward());
		 } finally {
			 try {
			     connection.close();
			 } catch (Exception ignored) {
			 }
		 }	
 
		if(ResultCount == 0) {
		    ActionErrors errors = new ActionErrors();
	        errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("error.password.mismatch"));
	        this.saveErrors(request, errors);
	        return (mapping.getInputForward());
		}
		else
		{
			HttpSession session = request.getSession();
			session.setAttribute(Constants.USER_KEY, username);
 
			if (mapping.getAttribute() != null) {
		            if ("request".equals(mapping.getScope()))
		                request.removeAttribute(mapping.getAttribute());
		            else
		                session.removeAttribute(mapping.getAttribute());
		    }
 
			return (mapping.findForward("success"));
		}
    }
} | 
Partager