Struts 开发简单例子
想要成功运行一个基于struts的web例子,需要对struts有一个基本的了解,掌握struts的MVC模型是如何封装如何进行控制的转交等。下面就从代码寻找答案。
1,首先在web.xml中进行servlet的定义。
<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/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
以上代码,定义一个ActionServlet,用来捕获相应的动作。即用户端的连接请求,在此处被ActionServlet捕获。根据下面的<servlet-mapping>是将捕获到请求,根据后缀交给相应的servlet(action)。随后就会根据struts-config.xml文件中的配置,进行处理。
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.shtml</url-pattern>
</servlet-mapping>
2,
首先声明要用到的formbean,并指定完整包路径
<form-beans>
<form-bean name="testBean" type="strutstest.action.TestBean"/>
</form-beans>
<action-mappings>中指明了所有action所映射到的formbean类,让formbean进行处理,同时还指定了返回结果之后的跳转路径。
<action-mappings>
<action name="testBean" 对应的formbean名
path="/test/saveUser" 访问路径,即捕获到的请求
type="org.apache.struts.beanaction.BeanAction"> Action的类型
<forward name="success" path="/index.jsp" /> 返回成功时的跳转路径
</action>
<action name="testBean"
parameter="*" 表示无条件跳转,优先级最高,不交付给相应的formbean进行处理。*表示无条件跳转,如果为相应的方法名,则表示指定方法进行处理。
path="/test/index" type="org.apache.struts.beanaction.BeanAction"
validate="false"> 表示不需要验证处理,否则交付验证
<forward name="success" path="/web/index.html" />
</action>
<action name="testBean" path="/test/updateUser" type="org.apache.struts.beanaction.BeanAction">
<forward name="success" path="/web/uccess.html" />
</action>
<action name="testBean" path="/test/getUser" type="org.apache.struts.beanaction.BeanAction" >
<forward name="success" path="/web/success.html" />
</action>
</action-mappings>
3,下面看看整个网页代码的编写
<%@ page contentType="text/html" %>
<%@ taglib uri="struts-logic" prefix="logic" %>
<%@ taglib uri="struts-bean" prefix="bean" %>
<%@ taglib uri="struts-html" prefix="html" %>标签库的声明,如下面的<html:link>标签
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<html:link page="/test/saveUser.do"> 指定连接的url。do为web.xml中声明的action的捕获后缀
saveUser
</html:link>
<html:link page="/test/getUser.do?id=22">带参数的url
getUser
</html:link>
<html:link page="/test/updateUser.do">
UpdateUser
</html:link>
</body>
</html>
4,formbean文件
package strutstest.action;
// 继承BaseBean
import org.apache.struts.beanaction.BaseBean;
public class TestBean extends BaseBean {
public static final String SUCCESS = "success" ; //处理之后的返回值
public static final String FAILURE = "failure" ;
public TestBean() { }
private String id; //formbean对象所涉及到的数据
private int age;
private String name;
private String address;
// getter setter 省略,此例子简单,没有用到该bean来传递数据
// 定义几个业务方法
public String saveUser()
{
System.out.print( " 添加用户.. " );
return SUCCESS;
}
public String updateUser()
{
System.out.print( " update user.. " );
return SUCCESS;
}
public String getUser()
{
if (id == null )
{
System.out.print( " 没有此用户 " );
return FAILURE; // 导向失败
}
System.out.print( " 用户id= " + id);
return SUCCESS;
}
}
最后,程序就可以运行了。只需要简单是四个部分,例子就能跑通。