在配置LOG4J的时候,
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- ================================================================= -->
<!-- a rolling file appender -->
<!-- ================================================================= -->
<appender name="StrutsTest.log" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="c:/StrutsTest.log" />
<param name="Threshold" value="DEBUG"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d (%L) %-5p %c %x - %m%n"/>
</layout>
</appender>
<!-- use this to turn on debug to a rolling file. -->
<category name="src.java">
<priority value="debug" />
<appender-ref ref="StrutsTest.log" />
</category>
</log4j:configuration>
<param name="File" value="c:/StrutsTest.log" />中路径不能写成c:、StrutsTest.log
<param name="Threshold" value="DEBUG"/>是用来过滤log,只把debug log打到文件里。
<category name="src.java">
<priority value="debug" />
<appender-ref ref="StrutsTest.log" />
</category>
而没有用<root>是因为避免struts自带的log打到文件里。
在起server的时候,让web.xml去调自己的selvet,
<servlet-name>action</servlet-name>
<servlet-class>src.java.app.PJActionServlet</servlet-class>
把log4j读入:
String path = getServletConfig().getInitParameter("config-path");
if (path != null && !path.equals("")) {
configDir = path;
}
configDir = getServletContext().getRealPath(configDir);
DOMConfigurator.configure(concatPath(configDir, "log4j.xml"));
ANT的使用没什么问题。
在用validate插件的时候,from一定要继承ValidatorForm,不知道为什么ValidatorActionForm不可以。
在用ties插件的时候,
在最外层的Layout.jsp中用
<title>
<tiles:getAsString name="title"/>
</title>
<tiles:insert attribute="body"/>
配置的时候,
<definition name="Welcome.body.tile" path="/pages/Layout.jsp">
<put name="title" value="Welcome"/>
<put name="body" value="/pages/Welcome.jsp"/>
</definition>
在用css的时候,把css目录bulid到project的目录下
<link href="<%=request.getContextPath()%>/css/style.css" rel="stylesheet" type="text/css">
由于路径问题,很可能没用到CSS。
ACTION中
mapping.getAttribute() 得到的是form的名字,
request.getAttribute(mapping.getAttribute())得到的是form,当然前提是scope是request。
如果不是request,则是session.getAttribute(mapping.getAttribute());
在国际化的问题上,主要用到的是
<bean:message key=""/>
以上只是经验之谈,写的很乱,主要是给自己以后的学习有个参考。
希望对初学者有些帮助。
大家可以谈谈自己的经验。