XML部分:
<servlet:>
<servlet>
<servlet-name>check</servlet-name>
<servlet-class>test2.Check</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/conf/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>check</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<param-name>配置初始化参数
<load-on-startup>标明此servlet在服务器启动时创建的实例数目
<Filter过滤器:>
<filter>
<filter-name>encoding</filter-name>
<filter-class>test2.EnCoding</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<默认页的设置:>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<标签库:>
<taglib>
<taglib-uri>struts-bean.tld</taglib-uri>
<taglib-location>WEB-INF/struts-bean.tld</taglib-location>
</taglib>
jsp引用方式<%@ taglib uri="struts-bean.tld" prefix="bean" %>
<错误处理:>
<error-page>
<error-code>404</error-code>
<location>/common/404.jsp</location>
</error-page>
或
<error-page>
<error-code>java.lang.NullPointerException</error-code>
<location>/common/404.jsp</location>
</error-page>
Struts部分:(注:子元素书写顺序为:<data-sources>)、<form-beans>、<global-exceptions>、<global-forwards>、<action-mappings>、<controller>、<message-resources>、<plug-in>
<数据源:>
<data-sources>
<data-source key="oracleDB1" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<set-property property="url" value="jdbc:oracle:thin:@127.0.0.1:1521:XDF" />
<set-property property="maxActive" value="5" />
<set-property property="username" value="scott" />
<set-property property="password" value="tiger" />
<set-property property="autoCommit" value="true" />
</data-source>
</data-sources>
注:一个数据源可以写多个<data-source>子元素。
key:数据源标识,保存于ActionServlet的ServletContext中m,用于将来在程序代码访问该数据源。
driverClassName:数据库驱动完整类名。
url:要连接的数据库URL。
maxActive:同时打开的数据库连接的最大数目。
username、password:连接数据库的用户名和密码。
autoCommit:设置SQL语句执行后是否自动提交。
<ActionForm Bean:>
<form-beans>
<form-bean name=” formBean1” type=”beanClass1”>
<form-bean name=” beanName2” type=” beanClass2”>
<form-bean name=”registForm” type=”org.apache.struts.action.DynaActionForm”>
<form-property name=”name” type=”java.lang.String” />
<form-property name=”password” type=”java.lang.String” />
</form-bean>
</form-beans>
name:Bean的名字,以后可以通过名字来访问特定的Bean。
type:Bean所属的类名,包括所在包的完整路径。
<form-property>中type的类型为:java.lang.BigDecimal、java.lang.BigInteger、java.lang.Boolean、java.lang.Byte、java.lang.Character、java.lang.Class、java.lang.Double、java.lang.Float、java.lang.Integer、java.lang.Long、java.lang.Short、java.lang.String、java.sql.Date、java.sql.Time、java.sql.Timestamp。(java基本类型的封装类型,都是存在HashMap中的所以返回类型为Object需要强转)
<异常处理:>
<global-exception>
<exception key="error.name.required" path="error.jsp" scope="request" type="classmate.MyException" />
</global-exception>
<ActionForward:>
<global-forwards>
<forward name=”error” path=”error.jsp” />
<forward name=”login” path=”right.jsp” />
</global-forwards>
name:Action中使用此标识来查找确定目标响应页面。
path:指定目标响应页面的相对URL。
redirect:标明页面转向的方式。(注:其值为forward()或response.sendRedirect();在action此属性为全局变量,对所有的action起作用)
contextRelative:设置寻找路径是绝对路径还是相对路径,true是相对。
<Action:>
<action-mappings>
<acion path=”/login” type=”classmate.LoginAction” name=”formBean1” scope=”request”
input=”/login.jsp” />
<action path=”/regist” forward=”/regist.jsp” />
</action-mappings>
path:客户端请求的目标页面URL。
type:用于处理请求的处理器Action对象所属的类名,包括所在包的完整路径。
scope:该ActionForm Bean的使用范围,通常为request或session。
input:处理请求出错时转向的页面。
validate:用于表明是否进行表单验证。为true时在填充ActionBean Form时进行validate验证。
redirect:标明页面转向的方式。(注:其值为forward()或response.sendRedirect();在action此属性为局部变量,只对于此action起作用)
name:用于自动接收该请求表单信息的ActionForm Bean的名字,该名字必须在前面使用<form-Bean>元素声明过。
unknown:默认为false。该属性设置为true,就是声明这个Action将处理整个应用中所有未找相应处理Action的请求,当然,一个应用系统中也只能一个unknown属性可以设为true
validate:设置为true,则在调用Action对象上的perform()方法前,ActionServlet将调用ActionForm bean的validate()方法来进行输入检查
<RequestProcessor扩展类的声明:>
<controller processorClass=”classmate.MyRequestProcessor” />
processorClass:RequestProcessor扩展类的类名,包括所在包的完整路径。
<消息资源包:>
<message-resources parameter="test.MyResource" />
资源包扩展名:properties
<Struts插件:>
<plug-in ClassName="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
<set-property property="stopOnFirstError" value="false" />
</plug-in>
数据源使用示例:
xml配置:
<data-sources>
<data-source key="oracleDB1" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<set-property property="url" value="jdbc:oracle:thin:@127.0.0.1:1521:XDF" />
<set-property property="maxActive" value="5" />
<set-property property="username" value="scott" />
<set-property property="password" value="tiger" />
<set-property property="autoCommit" value="true" />
</data-source>
<data-source key="oracleDB2" type="org.apache.commons.dbcp.BasicDataSource">
........................................................
</data-source>
</data-sources>
业务处理类:
public class DBUser{
DataSource datasource;
public DBUser(DataSource datasource){
this.datasource=datasource;
Connection con=datasource.getConnection();
}
}
Action:
ServletContext context=servlet.getServletContext();
DataSource datasource=(DataSource)context.getAttribute(request,"oracleDB1");
动态表单ActionForm Bean使用示例:
xml配置:
<form-beans>
<form-bean name=”registForm” type=”org.apache.struts.action.DynaActionForm”>
<form-property name=”name” type=”java.lang.String” />
<form-property name=”pwd1” type=”java.lang.String” />
<form-property name=”pwd2” type=”java.lang.String” />
</form-bean>
</form-beans>
<action-mapping>
<action path=”/registSubmit” type=”classmate.RegistAction” name=”registForm” scope=”request” input=”/error.jsp” />
</action-mapping>
Action:
DynaActionForm dyform=(DynaActionForm)form;
String name=(String)dyform.get(”name”);
String pwd1=(String)dyform.get(”pwd1”);
String pwd2=(String)dyform.get(”pwd2”);
<action path = "/processuser" type = "com.sinosoft.temp.ui.control.facade.UIAgUserProcessFacade" >
<forward name = "prepareInsert" path = "/system/user/edituser.jsp?actiontype=insert" />
<forward name = "query" path = "/system/user/queryuserresult.jsp" />
<forward name = "delete" path = "/processuser.do?actiontype = query">
</action>