验证表单返回错误信息

一:利用requst返回错误提示

在Action类中操作requst对象(另附文介绍),然后按Servlet方式处理。具体代码如下:

struts.xml
	<package name="user" namespace="/" extends="struts-default">
		<!-- 解决struts2.5 通配符调用无效的问题 -->
		<global-allowed-methods>regex:.*</global-allowed-methods>

		<action name="*_*" class="com.lhb.StrutsText.{1}" method="{2}">
			<result name="success">/success.jsp</result>
			<result name="input">/user_login.jsp</result>
		</action>

	</package>

Action
	private static Logger log = Logger.getLogger(User.class);
	private UserBean user = new UserBean();// 手动实例化

	@Override
	public UserBean getModel() {
		// TODO Auto-generated method stub
		return user;
	}

	public String check() {
		HttpServletRequest request = ServletActionContext.getRequest();
		if (!"admin".equals(user.getUseName())) {
			request.setAttribute("usererror", "用户名不正确");
			return INPUT;
		} else if (!"123".equals(user.getPassword())) {
			request.setAttribute("pwerror", "密码不正确");
			return INPUT;
		}
		return SUCCESS;
	}
JSP
	<form action="./User_check.do">
		用户名:<input type="text" name="useName"><span>${usererror}</span><br/>
		密码:<input type="password" name="password"><span>${pwerror}</span><br/>
		<input type="submit" value="提交">
	</form>
访问执行如下路径:http://localhost:8080/StrutsText/user_login.jsp并提交数据

运行结果:


测试成功。
当然上述事例中,如果requst对象在多个类或多个地方使用,可以构建一个Action基类,利用该基类获取requst的常用对象,实际使用的Action去继承上述基类。代码修改如下:
Action基类
public class BasicAction extends ActionSupport{
	public 	HttpServletRequest request;
	public HttpServletResponse response; 
	public HttpSession session;
	public ServletContext application;
	public BasicAction() {
		// TODO Auto-generated constructor stub
		request = ServletActionContext.getRequest();
		response=ServletActionContext.getResponse(); 
		session =request.getSession();
		application=request.getServletContext();
		//.........	
	}

}
Action修改为:
public class User extends BasicAction implements ModelDriven<UserBean> {
	private static Logger log = Logger.getLogger(User.class);
	private UserBean user = new UserBean();// 手动实例化

	@Override
	public UserBean getModel() {
		// TODO Auto-generated method stub
		return user;
	}

	public String check() {
		if (!"admin".equals(user.getUseName())) {
			this.request.setAttribute("usererror", "用户名不正确");
			return INPUT;
		} else if (!"123".equals(user.getPassword())) {
			this.request.setAttribute("pwerror", "密码不正确");
			return INPUT;
		}
		return SUCCESS;
	}

}

二:利用struts返回错误提示

除了上述使用request方法外,还可以使用struts返回错误提示,具体代码如下:
Action修改为:
	private static Logger log = Logger.getLogger(User.class);
	private UserBean user = new UserBean();// 手动实例化

	@Override
	public UserBean getModel() {
		// TODO Auto-generated method stub
		return user;
	}

	public String check() {
		if(!"admin".equals(user.getUseName())){
			this.addFieldError("userName", "用户名不正确!");
			return INPUT;
		}else if(!"123".equals(user.getPassword())){
			this.addFieldError("passWord","密码不正确!");
			return INPUT;
		}
		return SUCCESS;
	}
jsp代码修改如下:
因为需要使用struts标签,所以需要在jsp引入struts标签库
 <%@ taglib prefix="s" uri="/struts-tags"%>
	<form action="./User_check.do">
		用户名:<input type="text" name="useName"><br/>
		密码:<input type="password" name="password"><br/>
		<s:fielderror>
			<s:param>userName</s:param>
			<s:param>passWord</s:param>
		</s:fielderror>
		<input type="submit" value="提交">
	</form>
访问执行如下路径:http://localhost:8080/StrutsText/user_login.jsp并提交数据





运行结果为:

测试成功!
因为其返回值都为系统默认返回值,可以调用validate方法,改进Action代码
Action代码修改如下:
	private static Logger log = Logger.getLogger(User.class);
	private UserBean user = new UserBean();// 手动实例化

	@Override
	public UserBean getModel() {
		// TODO Auto-generated method stub
		return user;
	}

	public String check() {
		return SUCCESS;
	}

	@Override
	public void validate() {
		// TODO Auto-generated method stub
		if (!"admin".equals(user.getUseName())) {
			this.addFieldError("userName", "用户名不正确!");
		} else if (!"123".equals(user.getPassword())) {
			this.addFieldError("passWord", "密码不正确!");
		}
	}
访问执行如下路径:http://localhost:8080/StrutsText/user_login.jsp并提交数据


运行结果:

测试成功!
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值