struts2学习2

提前说明 为了简单我们往往复制工程,工程名改后注意要改项目名。myeclipse的改法是 右键单击项目名选property-->myeclipe-->web eclipse的改法是server-->server.xml

在host元素中增加或修改即可。

一验证:登陆小例子

页面:

1,用el表达式

<form action="login.do" method="post">
<div class="error">${actionErrors[0]}</div>
username:<input type="text" name="username"><span class="error">${fieldErrors.username[0]}</span><br>
password:<input type="password" name="pwd"><span class="error">${fieldErrors.pwd[0]}</span><br>
<input type="submit" value="submit">
</form>
<s:debug></s:debug>

记住要

<%@taglib prefix="s" uri="/struts-tags" %>

<s:debug>是用来查看request域中的值栈,其中fieldError是map类型actionError是数组类型(点击页面的debug看看最好,不要死记)

2,用struts标签

<form action="login.do" method="post">
<div class="error"><s:property value="actionErrors[0]"/> </div>
username:<input type="text" name="username"><span class="error"><s:property value="fieldErrors.username[0]"/> </span><br>
password:<input type="password" name="pwd"><span class="error"><s:property value="fieldErrors.pwd[0]"/> </span><br>
<input type="submit" value="submit">
</form>
<s:debug></s:debug>

3,也是struts标签,但是效果不同

<form action="login.do" method="post">
<div class="error"><s:actionerror/></div>
username:<input type="text" name="username"><span class="error"><s:fielderror><s:param>username</s:param></s:fielderror></span><br>
password:<input type="password" name="pwd"><span class="error"><s:fielderror><s:param>pwd</s:param></s:fielderror></span><br>
<input type="submit" value="submit">
</form>
<s:debug></s:debug>
action类:

我推荐先用汉字写出流程,在填充代码

public class LoginAction extends ActionSupport {
	//1.获取表单数据
	private String username;
	private String pwd;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	//2.验证表单数据
	@Override
	public void validate() {
		if(GenericValidator.isBlankOrNull(username)){
			this.addFieldError("username", "username is blank");
		}else if(GenericValidator.isBlankOrNull(pwd)){
			this.addFieldError("pwd", "pwd is blank");
		}
	}
	//3.验证业务逻辑
	@Override
	public String execute() throws Exception {
		if(username.startsWith("a")&&"123456".equals(pwd)){
			return Action.SUCCESS;
		}else{
			this.addActionError("username or pwd is error");
			return Action.ERROR;
		}
	}
	
	
}

其中要注意一 :变量名和页面对应name值保持一致,且要提供Set方法

二:validate对应配置文件<result>标签中的input(因为表示数据有误) execute对应error(表示业务逻辑错误)


struts配置文件

	<package name="" namespace = "/" extends="struts-default">
	<!-- 服务器启动时就会加载该配置文件 -->
		<action name="login" class="com.pk.web.action.LoginAction">
			<result>/welcome.jsp</result>
			<result name="error">/login.jsp</result>
			<result name="input">/login.jsp</result>
		</action>
	</package>



二 通过路径来访问action 首先还是路径是由(namespace+action+struts.action.extension)组成,404时要检查这里

第一种方式,最普通的方法一个包名对应一个类名 一个action名对应一个Action类中的方法

类的代码

public class LoginAction extends ActionSupport {
	
	public String saveUser() throws Exception {
		System.out.println("saveUser");
		return null;
	}
	public String updateUser() throws Exception {
		System.out.println("updateUser");
		return null;
	}
	public String deleteUser() throws Exception {
		System.out.println("deleteUser");
		return null;
	}
	public String showUser() throws Exception {
		System.out.println("showUser");
		return null;
	}
}

struts配置文件的代码

	<package name="user" namespace = "/user" extends="struts-default">
	
	<!-- 服务器启动时就会加载该配置文件 -->
		< action name="saveUser" class="com.pk.web.action.LoginAction" method="saveUser">
		</action>
		<action name="deleteUser" class="com.pk.web.action.LoginAction" method="deleteUser">
		</action>
		<action name="showUser" class="com.pk.web.action.LoginAction" method="showUser">

		</action>
		<action name="updateUser" class="com.pk.web.action.LoginAction" method="updateUser">
		</action> -->
	
	</package>

第二种方式一个action去掉method因为我们要通过路径来指定方法user/action名字!方法名字+后缀,但是这种很耗资源,不大推荐所以可以禁用

	<constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>


第三种方式,使用通配符

		<action name="*" class="com.pk.web.action.LoginAction" method="{0}User"></action>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值