您的位置:首页 > 编程语言 > Java开发

手把手struts入门示例

2008-03-05 14:59 309 查看
读书不求甚解,遇到不懂的先不用管它,照着指示做就行了。所谓实践出真知,做完不用我解析,你自己都会明白的。让我们先把它运行起来,培养点成就感再说。要不没有动力。
开发环境:
Tomcat 5.5
struts 1.3.8
SDK j2sdk 1.5
关于环境的配置可以参考我另外一篇文章《超简单配置Tomcat+struts》

我们要做的是一个简单的加法器,就是求1+1等于多少的。我们先看看效果图,所谓胸有成竹,心里有了成功后的形象才有明确的奋斗方向。



我们先来看看传统的JSP实现方法add.jsp


<%@ page contentType="text/html; charset=Shift_JIS" %>




<%!




private int atoi(String str) ...{


int ret = 0;




try ...{


ret = Integer.parseInt(str);


}




catch (NumberFormatException ex) ...{/**//* Intentionally left blank */}


return ret;


}






private int add(int i1, int i2) ...{


return i1 + i2;


}


%>


<%


String parm1 = request.getParameter("parm1");


String parm2 = request.getParameter("parm2");




if (parm1 != null && parm2 != null) ...{


int i1 = atoi(parm1);


int i2 = atoi(parm2);


%>


<H2><%=i1%>+<%=i2%>=<%=add(i1, i2)%></H2>


<%


}


%>




<FORM action="add.jsp">


<INPUT TYPE="TEXT" NAME="parm1" SIZE=6></input>+


<INPUT TYPE="TEXT" NAME="parm2" SIZE=6></input>


<INPUT TYPE="SUBMIT" VALUE="=">


</FORM>





在浏览器中访问http://localhost:8080/add.jsp 看到我们要实现的效果了吧,ps:开始有一点成就感了吧。

struts是mvs结构,为了简单起见,我们省略掉M,直接把业务逻辑写进C中,
我们需要准备的文件有:
jsp文件: ①index.jsp ②queryForm.jsp ③showResult.jsp
Controller: ①AddSampleQueryForm.java ②AddSampleAction.java


<!-- index.jsp -->




<%...@ page contentType="text/html; charset=Shift_JIS" %>




<HTML>


<BODY>


<jsp:include page="include/queryForm.jsp" flush="false"/>


</BODY>


</HTML>




<!-- queryForm.jsp -->




<%...@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>


<%-- struts1.1以下是uri="/tags/struts-html" -->


<html:form action="/add" focus="parm1">


<html:text property="parm1" size="6"/>+


<html:text property="parm2" size="6"/>


<html:submit property="submit" value="="/>


</html:form>




<!-- showResult.jsp -->




<%...@ page contentType="text/html; charset=Shift_JIS" %>




<%...@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>


<%-- struts1.1以下是uri="tags/struts-bean" -->


<HTML>


<BODY>


<H2>


<bean:write name="QueryForm" property="parm1" scope="request"/>+


<bean:write name="QueryForm" property="parm2" scope="request"/>=


<bean:write name="QueryForm" property="result" scope="request"/>


</H2>


<jsp:include page="include/queryForm.jsp" flush="true"/>


</BODY>


</HTML>


//AddSampleQueryForm.java


package samples.add;




import org.apache.struts.action.ActionForm;






public class AddSampleQueryForm extends ActionForm ......{


private String parm1;


private String parm2;


private String result;






public String getParm1() ......{


return parm1;


}






public void setParm1(String parm1) ......{


this.parm1 = parm1;


}






public void setParm2(String parm2) ......{


this.parm2 = parm2;


}






public String getParm2() ......{


return parm2;


}






public String getResult() ......{


return result;


}






public void setResult(String result) ......{


this.result = result;


}


}




//AddSampleAction.java


package samples.add;




import org.apache.struts.action.Action;


import org.apache.struts.action.ActionMapping;


import org.apache.struts.action.ActionForm;


import org.apache.struts.action.ActionForward;


import javax.servlet.http.HttpServletRequest;


import javax.servlet.http.HttpServletResponse;


//如果怕麻烦的话,可以只写下面两句,


//import org.apache.struts.action.*;


//import javax.servlet.http.*;


//上面的写法是让我们清楚知道我们具体需要什么东西






public class AddSampleAction extends Action ...{


public ActionForward execute(ActionMapping mapping,


ActionForm form,


HttpServletRequest request,


HttpServletResponse response)




...{


AddSampleQueryForm queryForm = (AddSampleQueryForm)form;


int parm1 = Integer.parseInt(queryForm.getParm1());


int parm2 = Integer.parseInt(queryForm.getParm2());


int result = parm1 + parm2 ;


queryForm.setResult(String.valueOf(result));


return mapping.findForward("success");


}


}



编译:
javac -classpath "C:/.../apache-tomcat-5.5.12/common/lib/servlet-api.jar";"H:/.../struts-1.3.8/lib/struts-core-1.3.8.jar";. *.java
生成AddSampleQueryForm.class AddSampleAction.class

tomcat 5.0以上的servlet 类库是servlet-api.jar ,5.0以下是servlet.jar
struts1.3.8的类库是struts-core-1.3.8.jar,1.1的话是struts.jar

配置:
struts-1.3.8/lib/下有一个struts-blank-1.3.8.war,把它拷贝到apache-tomcat-5.5.12/webapps/下就会自动解压,生成apache-tomcat-5.5.12文件夹(或者使用解压软件如Lhaplus),我们可以把文件的名字改成我们想要的名字,在这里我们改成add(需要把tomcat停止才能改名字),然后把我们把我们编写的文件配置进去。最后我们的目录是这样的:
add

│ index.jsp
│ showResult.jsp

├─include
│ queryForm.jsp

├─META-INF
│ │ MANIFEST.MF
│ │
│ └─maven
│ └─org.apache.struts
│ └─struts-blank
│ pom.properties
│ pom.xml

├─pages
│ Welcome.jsp

└─WEB-INF
│ struts-config.xml
│ validation.xml
│ web.xml

├─classes
│ │ MessageResources.properties
│ │
│ └─samples
│ └─add
│ AddSampleAction.class
│ AddSampleQueryForm.class

├─lib
│ antlr-2.7.2.jar
│ commons-beanutils-1.7.0.jar
│ commons-chain-1.1.jar
│ commons-digester-1.8.jar
│ commons-logging-1.0.4.jar
│ commons-validator-1.3.1.jar
│ oro-2.0.8.jar
│ struts-core-1.3.8.jar
│ struts-taglib-1.3.8.jar
│ struts-tiles-1.3.8.jar

└─src
│ build.xml
│ README.txt

└─java
MessageResources.properties

我们还需要修改一下struts-config.xml
找到<form-beans>... ...</form-beans> <action-mappings>... ...</action-mappings>,添加
<form-bean name="QueryForm" type="samples.add.AddSampleQueryForm"/>

<action path="/add" type="samples.add.AddSampleAction" name="QueryForm"
scope="request" validate="false">
<forward name="success" path="/showResult.jsp"/>
</action>
添加我们的配置后,效果如下
跟我走到这里不容易啊,我们很快就可以看见我们的成果了。
访问http://localhost:8080/add
大功告成!功德无量!(不行的话重起一下tomcat和浏览器,还不行?你把问题写下来,有时间的我会回复的。)


...


<struts-config>


...


<form-beans>


<form-bean name="QueryForm" type="samples.add.AddSampleQueryForm"/>


...


</form-beans>


...


<action-mappings>


<action path="/add" type="samples.add.AddSampleAction" name="QueryForm"


scope="request" validate="false">


<forward name="success" path="/showResult.jsp"/>


</action>


...


</action-mappings>


...


</struts-config>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: