gpt4 book ai didi

java - 如果不使用validation.excludeMethods,则无法在同一操作类下调用两个不同的方法

转载 作者:太空宇宙 更新时间:2023-11-04 14:47:00 25 4
gpt4 key购买 nike

Struts.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>
<package name="default" extends="struts-default">

<action name="getLogin" class="login.action.LoginAction"
method="login">
<result name="success">/Profile.jsp</result>
<result name="input">/LoginError.jsp</result>
</action>

<action name="getRegistered" class="login.action.LoginAction"
method="register">
<result name="success">/Success.jsp</result>
<result name="input">/login.jsp</result>
</action>

</package>
</struts>

我试图将此 XML 中的两个 Action 映射到 Action 类中的两个不同方法

LoginAction.java:

package login.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import com.opensymphony.xwork2.ActionSupport;
import login.service.LoginDao;
import login.service.RegisterDao;

@SuppressWarnings("serial")
public class LoginAction extends ActionSupport implements ServletRequestAware,
ServletResponseAware {

private String username;
private String password;
private HttpServletRequest httpServletRequest;
private String firstname;
private String lastname;
private String regpassword;
private String conpassword;
private String regemail;
private String conemail;
private String phone;

public String register(){
RegisterDao rdao = new RegisterDao();
String registered = rdao.registerdao(firstname,lastname,regpassword,conpassword,regemail,conemail,phone);
if(registered == "TRUE"){
return SUCCESS;
}

return INPUT;
}


public String login() {
System.out.println("user name::: "+username);
httpServletRequest.getSession().setAttribute("key", username);
httpServletRequest.getSession().setAttribute("key", password);
LoginDao db = new LoginDao();
Boolean validate = db.loginresult(username, password);
if (validate == true) {
return SUCCESS;

} else {
return INPUT;
}
}

public HttpServletRequest getHttpServletRequest() {
return httpServletRequest;
}

public void setHttpServletRequest(HttpServletRequest httpServletRequest) {
this.httpServletRequest = httpServletRequest;
}

public String getFirstname() {
return firstname;
}

public void setFirstname(String firstname) {
this.firstname = firstname;
}

public String getLastname() {
return lastname;
}

public void setLastname(String lastname) {
this.lastname = lastname;
}

public String getRegpassword() {
return regpassword;
}

public void setRegpassword(String regpassword) {
this.regpassword = regpassword;
}

public String getConpassword() {
return conpassword;
}

public void setConpassword(String conpassword) {
this.conpassword = conpassword;
}

public String getRegemail() {
return regemail;
}

public void setRegemail(String regemail) {
this.regemail = regemail;
}

public String getConemail() {
return conemail;
}

public void setConemail(String conemail) {
this.conemail = conemail;
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}

public void setServletRequest(HttpServletRequest request) {
this.httpServletRequest = request;

}


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 setServletResponse(HttpServletResponse arg0) {
// TODO Auto-generated method stub

}



}

具有登录和注册方法的操作类:

登录.jsp

<%@ 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>
<center>
<%@ taglib uri="/struts-tags" prefix="s"%>
<s:form action="getLogin.action" method="post" validate="true">
<s:textfield label="Name" key="username"/>
<s:password label="Password" key="password"/>
<s:checkbox name="Rememberme" label="Remember Me" value="yes"
checked="checked"/>
<s:submit value="Sign in"/>
</s:form>
</center>
</body>
</html>

Login.jsp 重定向到 Action 类中的登录方法。早些时候它运行良好。现在这个 Action 带来了麻烦:

注册.jsp

<%@ 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>
<center>
<%@ taglib uri="/struts-tags" prefix="s"%>
<s:form action="getRegistered.action" method="post" validate="true">
<div>
<table>
<s:textfield label="First Name" key="firstname" />
<s:textfield label="Last Name" key="lastname" />
<s:password label="Create your password" key="regpassword" />
<s:password label="Confirm your password" key="conpassword" />
<s:textfield label="Email" key="regemail1" />
<s:textfield label="Re-Type Email" key="conemail" />
<s:textfield label="Phone" key="phone" />
<tr>
<td><s:submit value="Register" theme="simple"/></td>
<td><s:submit value="Cancel" theme="simple" onclick="document.forms[0].action='login.jsp';" /></td>
</tr>
</table>
</div>
</s:form>
</center>
</body>
</html>

Registration.jsp 重定向到 getRegistered 操作:

LoginAction-Validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<!-- Login page validation Starts -->
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>User Name is mandatory</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">5</param>
<param name="maxLength">10</param>
<param name="trim">true</param>
<message>User Name must be between 5 to 10 characters long</message>
</field-validator>
</field>

<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>Enter your password</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">5</param>
<param name="maxLength">10</param>
<param name="trim">true</param>
<message>Password must be between 5 to 10 characters long</message>
</field-validator>
<field-validator type="regex">
<param name="expression">((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{5,10})</param>
<message>Password must </message>
</field-validator>
</field>
<!-- Login page validation ends -->
</validators>

登录用户名和密码的验证 xml..

当我运行此代码时,它始终返回“INPUT”字符串,并在登录操作的情况下重定向到 LoginError.jsp,在注册操作的情况下重定向到 Login.jsp。请建议我如何在不使用validation.excludeMethods的情况下解决此问题

LoginAction-getRegistered-validation.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<!-- Registration validation Starts -->
<field name="firstname">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>Firstname is mandatory</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">5</param>
<param name="maxLength">10</param>
<param name="trim">true</param>
<message>First Name must be between 5 to 10 characters long</message>
</field-validator>
</field>
<field name="lastname">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>Lastname is mandatory</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">5</param>
<param name="maxLength">10</param>
<param name="trim">true</param>
<message>Last Name must be between 5 to 10 characters long</message>
</field-validator>
</field>
<!-- Registration validation ends -->
</validators>

我已经验证了名字和姓氏

最佳答案

在每个类的验证文件中,因此它验证此类中被 validation 拦截器拦截的所有操作/方法。您应该将第一个操作 getLogin 的验证逻辑分开,例如 LoginAction-getLogin-validation.xml ,并为 getRegistered 操作定义另一个验证文件,例如 >LoginAction-getRegistered-validation.xml。它们将按操作进行处理。此外,regex validator 有一个参数 regex,而不是 表达式

<field-validator type="regex">
<param name="regex"><![CDATA[((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{5,10})]]></param>
<message>Password must </message>
</field-validator>

关于java - 如果不使用validation.excludeMethods,则无法在同一操作类下调用两个不同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com