Код ниже структуры не работает должным образом - PullRequest
0 голосов
/ 25 сентября 2019

Я создал страницу входа с проверкой.Проблема в том, что всякий раз, когда я пытаюсь проверить форму, как я даю нулевое поле, это должно дать мне логику проверки.Но проблема в том, что он напрямую переходит на страницу сбояЭто не относится к методам, которые я написал для проверки.Я создал интерфейс с абстрактным методом, и этот метод определен в файле validator.java, но эта логика не проверяется.

Я хочу, чтобы он проверял, есть ли какая-либо ошибка проверки или нет,Если есть какая-либо ошибка проверки, просто измените значение логического флага на false.А затем отобразить ошибку проверки.Страница сбоя предназначена только для случая, когда пароль не совпадает с заданным паролем.

Это страница входа в систему

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html>
<head>
<title>Login Example</title>
</head>
<body>
 <html:form action="/Login" >
    Username : <html:text property="userName" /><html:errors property = "userName"/>
        <br>
    Password : <html:password property="password" /><html:errors property = "password"/>
        <br>
        <html:submit value="Login" />
    </html:form>
</body>
</html>

Это web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>LoginPage</display-name>
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
</web-app>

Это Struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">

<struts-config>
    <form-beans>      
        <form-bean name="loginForm" type="com.loginForm.loginForm"/>
    </form-beans>
    <action-mappings>
        <action name="loginForm" input = "/login.jsp" validate = "true" parameter = "com.loginForm.ForValidation" path="/Login" type="com.loginAction.loginAction"  >
            <forward name="success" path="/success.jsp"/>
            <forward name="failure" path="/failure.jsp"/>
        </action>
    </action-mappings>
    <message-resources parameter = "com.login.resources.AppliationResources" />
</struts-config>

Это loginForm.java

package com.loginForm;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

public class loginForm extends ActionForm implements ForValidation{

     String userName = null;
     String password = null;
     boolean flag = true;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
  @Override
    public void reset(ActionMapping mapping, HttpServletRequest request) {
       this.password = null;
       this.userName = null;

    }

    @Override
    public boolean evaluate(ActionForm form, ActionMessages msg) {
        // TODO Auto-generated method stub
        System.out.print("loginForm");
        return flag;
    } 
}

Это ForValidation

package com.loginForm;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMessages;

public interface ForValidation {
    boolean evaluate(ActionForm form,ActionMessages msg);
}

Это валидатор

package com.loginForm;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

public class validator implements ForValidation{

    public boolean evaluate(ActionForm form,ActionMessages msg){
        loginForm lf = (loginForm) form;
        System.out.print("validator");
        if(lf.userName == null ||lf.userName.length() == 0){
            lf.flag = false;
            msg.add("userName",new ActionMessage("UserName.Can.not.be.Empty"));
            System.out.print("pr");
        }
        if(lf.password == null || lf.password.length() == 0){
            msg.add("password",new ActionMessage("password.not.entered"));
        }
        if(lf.userName.length() < 5 ){
            msg.add("userName",new ActionMessage("userName.Limit"));
        }
        return lf.flag;
    }

}

Это loginAction

package com.loginAction;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.loginForm.loginForm;

public class loginAction extends Action {

      @Override
        public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
            loginForm lForm = (loginForm) form;

            if (lForm.getUserName().equalsIgnoreCase("Anubhav")
                    && lForm.getPassword().equals("mishra")) {
                return mapping.findForward("success");
            } else
                System.out.print("loginAction");
                return mapping.findForward("failure");
        }
}

Это страница с ошибкой

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h2>you have entered a wrong password</h2>
<h3>want to try again go to the below link</h3>
<a href= "login.jsp">Click HerE</a>
</body>
</html>

Это страница успеха

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>

<html>
<head>
<title>Successful Login Page</title>
</head>
<body>
      <h2>Welcome
       <bean:write name="loginForm" property="userName" />
      </h2>
      <a href="login.jsp">Logout</a>
</body>
</html>

Это свойствафайл

UserName.Can.not.be.Empty = Please Enter UserName
password.not.entered = Please Enter Password
userName.Limit = UserName cannot be less than 5
...