提前说明 为了简单我们往往复制工程,工程名改后注意要改项目名。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" %>
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>
<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; } } }
二: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; } }
<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>
<constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
第三种方式,使用通配符
<action name="*" class="com.pk.web.action.LoginAction" method="{0}User"></action>