struts1.3学习
-
一、基本配置
- 参考博客
- 项目结构
- web.xml
<!-- struts配置 --> <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/config/struts-config.xml, /WEB-INF/config/struts-config-user.xml </param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <!--自启动--> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
- struts-config.xml
<form-beans> <!-- 登录form --> <form-bean name="loginForm" type="com.myframe.struts.form.LoginForm"></form-bean> </form-beans> <global-exceptions/> <global-forwards/> <action-mappings> <!--name对应formBean的name validate默认是false scope默认值是session parameter 通过这个值传的参数判断使用哪个方法--> <action path="/Login" type="com.myframe.struts.action.LoginAction" name="loginForm" validate="false" scope="request" parameter="method"> <!-- redirect默认是false--> <forward name="loginSuccess" path="/loginSuccess.jsp"></forward> <forward name="loginFaild" path="/loginFaild.jsp" redirect="false"></forward> </action> </action-mappings> <message-resources parameter="com.myframe.struts.ApplicationResources"/>
- UserForm.java
//ActionForm本质上是一种JavaBean,是专门用来传递表单数据的DTD(Data Transfer Object,数据传递对象)。 //它包括用于表单数据验证的validate()方法和用于数据复位的reset()方法。 public class UserForm extends ActionForm {//继承ActionFor //属性名一定要和表单中的name对应 private String u_id; private String u_name; private String u_pwd; private String u_realname; private String u_logintime; //setter/getter省略 }
- UserAction.java
public class UserAction extends DispatchAction {//继承DispatchAction //前台url:<%=basePath%>User.do?method=addUser可以执行addUser方法 public ActionForward addUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //这个form是根据给UserAction配置的Action(struts-config.xml中)的name对应的formbean的name,这样才会将数据填充到这个formbean中 UserForm userform = (UserForm) form; if("aaa".equals(userform.getU_name())){ //这里的mapping对应action配置的name return mapping.findForward("addSuccess"); }else { return mapping.findForward("addFaild"); } } }
-
二、使用验证
- 参考博客
-
struts1.X的验证分为1.重写validate (继承ActionForm) 2.配置xml(继承ValidatorForm)两种方式,老夫以为第一种会更实用些,所以下文就是以重写的方式使用struts的验证
- 配置 struts-config.xml
- 配置action 的validate="true" input="xx.jsp"
<!--使用验证要添加validate="true" 默认是false; input="xxx.jsp" 代表验证失败将值返回的页面 供回显使用--> <action path="/User" type="com.myframe.struts.action.UserAction" name="userForm" scope="request" parameter="method" validate="true" input="/addUser.jsp"> <!-- redirect默认是false--> <forward name="addSuccess" path="/addSuccess.jsp" ></forward> <forward name="addFaild" path="/addFaild.jsp" ></forward> </action>
- 重写userform的validate方法
@Override public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if(u_name==null||u_name.length()<=3){ errors.add("u_name",new ActionMessage("error.login.u_name",u_name)); } if(u_pwd==null||u_pwd.length()<=3){ errors.add("u_pwd",new ActionMessage("error.login.u_pwd",u_pwd)); } return errors; }
- 配置资源文件properties
- properties编码设置自动编译(setting->file encoding->transparent)
#UserForm验证 error.login.u_name=用户名不能为空或长度不能小于4 error.login.u_pwd=密码不能为空或长度不能小于4
- jsp中使用
<%--引入标签--%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <%--使用html:form标签--%> <html:form action="/User.do"> <!-- name的值要和formbean的值对应 --> <%--使用html:text、html:errors标签 其中property对应表单的name值--%> username: <html:text property="u_name"/><html:errors property="u_name"></html:errors><br> password: <html:text property="u_pwd"/><html:errors property="u_pwd"></html:errors><br> <input type="hidden" name="method" value="addUser"/> <input type="submit" value="submit" /> </html:form>
-
三、标签的使用