经过不懈的努力终于能够用eclipse来做struts了。我使用的是strutsIDE。在这之前还想用myeclipse,结果要收费,后来 听说可以用破解版的,装上试了一下,嘿嘿不行,电脑太烂,内存太小,运行很慢,就把它给卸了。后来就选择了strutsIDE,其实刚开始的时候也是没有 成功,应为我用的eclipse版本比较高,在家等了一个寒假来了以后发现可以了。现在我把一点经验教训告诉给大家。
Eclipse使用StrutsIDE开发struts 在没有Struts经验之前,最好的办法是先建立一个Struts开发平台,先做出一个Hello world的小程序,然后再来研究它实现的原理。
实验功能说明:在一个jsp页面(HelloWorld.jsp)中,输入你的名字,通过struts 将你的名字加上Helloword字样,然后在另外一个jsp页面(ShowHelloWorld.jsp)显示出来。
从安装到运行的详细步骤:
一、安装StrutsIDE 和Eclipse HTML Editor
从Http://sourceforge.jp 网址下载最新版本的StrutsIDE 和Eclipse HTML Editor,分别对应两个zip包,解压后拷到
eclipse/plugins目录下。
二、创建测试工程
如果已经完成了上面步骤,现在可以重新启动eclipse,使新安装的插件生效,开始正式开发了。
1、创建Dynamic Web Project工程:
File->new->others, 打开新建向导对话框,在树中找到web->Dynamic Web Project,选中,点击next按钮。在projects name中输入HelloWorldStruts,点击finished。这时,我们在eclipse的package explorer中会看到新建的工程HelloWorldStruts,创建完成。
2.加入struts框架
File->new->others,打开新建向导对话框,找到 Amateras->Struts->Add Struts Support,选中点击next按钮,选择 Web Application Root的路径为 /HelloStruts/WebContent 点击Finish按钮。这时,在eclipse的package explorer中会看到增加了很多struts的库文件,在WEB-INF下也增加了很多struts的配置文件。到此我们已经在项目加入了 Struts框架。
3.写Helloword.jsp页面
右击Hellowordstruts工程中的WebContent目录上->new ->other->jsp添加一个HelloWorld.jsp文件,在这个文件中,用户输入自己的用户名,然后提交,源代码清单如下:
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ page c%>
<html>
<head>
<title>Struts Hello world Demo</title>
</head>
<body>
输入你的用户名,提交显示结果:
<html:form action="/HelloWorld" focus="username">
用户名称:<html:text property="username" size="25" />
<html:submit property="submit" />
</html:form>
</body>
</html>
注意到第一行的:
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
这里到我们添加了struts的taglib的引用,struts标签库的使用,在后续的文章中将陆续介绍。
4.写struts 中hello word Action实现
在HelloWorldStruts/src目录下,在包中添加HelloWorldAction类,它继承自org.apache.struts.action.Action,并实现其execute方法。
其代码清单如下:
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.*;
import org.apache.struts.action.*;
public class HelloWorldAction extends Action {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response) throws Exception {
HelloWorldForm form = (HelloWorldForm) actionForm;
ActionErrors errors = new ActionErrors();
String username = form.getUsername();
username += ",Hello world!";
request.setAttribute("hello", username);
return actionMapping.findForward("success");
}
}
5.写struts 中hello word ActionForm实现
在HelloWorldStruts/src目录下,添加HelloWorldForm类,它继承自org.apache.struts.action.ActionForm,在里面只有一个username属性,其代码清单如下:
import javax.servlet.http.*;
import org.apache.struts.action.*;
public class HelloWorldForm extends ActionForm {
private static final long serialVersionUID = 3256445798169261619L;
private String username;
public HelloWorldForm() {
username = null;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return this.username;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
username = null;
}
}
6、写ShowHelloWorld.jsp页面
右击Hellowordstruts工程中的WebContent目录上->new ->other->jsp添加一个ShowHelloWorld.jsp文件,在这个文件中,显示输出结果,代码清单如下:
<html>
<head>
<title>Show Hellow world</title>
</head>
<body>
<h2><%= request.getAttribute("hello")%></h2>
</body>
</html>
7、配置struts_config.xml文件
在WebContent/WEB-INF目录下修改struts-config.xml文件,添加HelloWorldAction和HelloWorldForm的映射,代码清单如下:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd ">
<struts-config>
<form-beans>
<form-bean name="HelloWorldForm" type="HelloWorldForm"/>
</form-beans>
<action-mappings>
<action path="/HelloWorld" type="HelloWorldAction"
name="HelloWorldForm" scope="request" input="">
<forward name="success" path="/ShowHelloWorld.jsp"/>
</action>
</action-mappings>
<message-resources parameter="resources.application"/>
</struts-config>
8、运行:
好了,所有的代码都已经编好了,在HelloWorld.jsp文件上->右键->run as -> run on server
这样就行了,其实很简单也。做完之后我还是很兴奋