由于后面的一些配置很大一部分都要用到struts的东西(或者思想),所以在这里对struts的配置进行一个比较详细的解释。
一. 按惯例,先讲包的引入:
就是下载的jakarta-struts里面lib下的包,这是使用struts框架的根本需要,也就是框架的支持。
二.紧接着就是配置文件(这也是最重要的一步,关系到程序能不能跑起来)。
由于是做的web project 所以一般的web项目的配置文件web.xml是必需的,WEB-INF, WEB-INF/classes, WEB-INF/lib.也是必需的。如果用到struts的标签的话(在struts框架上推荐使用),还要有一个WEB-INF/tlds
里面用来放jakarta-struts里的tld文件。
然后就是struts的配置文件struts-config.xml。这是使用这个框架的根本。
这两个配置文件的示例如下:
Web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<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>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>
<taglib>
<taglib-uri>http://jakarta.apache.org/struts/tags-bean</taglib-uri>
<taglib-location>/WEB-INF/tlds/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://jakarta.apache.org/struts/tags-html</taglib-uri>
<taglib-location>/WEB-INF/tlds/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://jakarta.apache.org/struts/tags-logic</taglib-uri>
<taglib-location>/WEB-INF/tlds/struts-logic.tld</taglib-location>
</taglib>
</web-app>
Struts-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<data-sources />
<form-beans >
<form-bean name="helloForm" type="com.ln.struts.form.HelloForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="helloForm"
name="helloForm"
path="/hello"
scope="request"
type="com.ln.struts.action.HelloAction">
<forward name="hello" path="/hello.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.ln.struts.ApplicationResources" />
</struts-config>
三.关于程序的书写:(以最出名的Hello World为例)
一般需要有一个form与一个action,还有jsp页面。Form用于与页面进行数据交互,然后由action通过form取得页面数据,进行相应的处理,然后通过调用return finforward进行页面转移控制。
示例如下:
HelloAction.java:
//Created by MyEclipse Struts
// XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_3.8.3/xslt/JavaClass.xsl
package com.ln.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.ln.struts.form.HelloForm;
/**
* MyEclipse Struts
* Creation date: 01-14-2005
*
* XDoclet definition:
* @struts:action path="/hello" name="helloForm" scope="request" validate="true"
* @struts:action-forward name="hello" path="/hello.jsp"
*/
public class HelloAction extends Action {
// --------------------------------------------------------- Instance Variables
// --------------------------------------------------------- Methods
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
HelloForm helloForm = (HelloForm) form;
helloForm.setMsg("Hello World!");
request.setAttribute("helloForm",helloForm);
return mapping.findForward("hello");
}
}
HelloForm.java:
//Created by MyEclipse Struts
// XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_3.8.3/xslt/JavaClass.xsl
package com.ln.struts.form;
import org.apache.struts.action.ActionForm;
/**
* MyEclipse Struts
* Creation date: 01-14-2005
*
* XDoclet definition:
* @struts:form name="helloForm"
*/
public class HelloForm extends ActionForm {
// --------------------------------------------------------- Instance Variables
/** msg property */
private String msg;
// --------------------------------------------------------- Methods
/**
* Returns the msg.
* @return String
*/
public String getMsg() {
return msg;
}
/**
* Set the msg.
* @param msg The msg to set
*/
public void setMsg(String msg) {
this.msg = msg;
}
}
hello.jsp
<%@ page language="java"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html>
<head>
<title>hello.jsp</title>
</head>
<body>
<html:form action="/hello" method="post">
<bean:write name="helloForm" property="msg"/>
</html:form>
</body>
</html:html>
index.jsp:
<%@ page language="java"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html>
<head>
<title>index.jsp</title>
</head>
<body>
This a struts page. <br>
<logic:redirect page="/hello.do"></logic:redirect>
</body>
</html:html>