锘??xml version="1.0" encoding="utf-8" standalone="yes"?> <struts> <package name="enterpriceculture" namespace="/" extends="struts-default"> 浠婂ぉ婕旂ずEL琛ㄨ揪寮忕殑鏃跺欏彂鐜拌嚜宸眏sp鐨勫熀紜瀹炲湪鏄杽寮憋紝鍦ㄨ繖涓緢綆鍗曠殑闂涓婅糠鎯戜簡寰堜箙銆?/p>
棣栧厛鍦ㄧ湅閬囧埌鐨勯棶棰橈細 鍦ㄦ祻瑙堝櫒鍦板潃杈撳叆錛岃〃紺轟紶鍏ヤ竴涓弬鏁皌est錛屽間負123 鍙戠幇姣棤緇撴灉錛屽啀浣跨敤requestScope灝濊瘯鍙栧嚭錛?/p>
鍙戠幇榪樻槸姣棤緇撴灉錛屾劅鍒伴潪甯歌寮傦紝閬傚共鑴嗕嬌鐢╦ava鑴氭湰灝濊瘯鍙栧嚭銆?/p>
涔嬪悗鍙戠幇錛岃嫢浣跨敤宸蹭笅浠g爜鍚憆equest浣滅敤鍩熻祴鍊鹼紝鍒欑敤涓婇潰浠g爜鍙互鍙栧嚭 JAVA鑴氭湰錛?/p>
緇撹灝辨槸錛?span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: #ff0000; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none" class="Apple-style-span">${param.name} 絳変環(huán)浜?request.getParamter("name")錛岃繖涓ょ鏂規(guī)硶涓鑸敤浜庢湇鍔″櫒浠庨〉闈㈡垨鑰呭鎴風(fēng)鑾峰彇鐨勫唴瀹廣?/span> 銆銆銆銆銆${requestScope.name} 絳変環(huán)浜?nbsp;request.getAttribute("name")錛屼竴鑸槸浠庢湇鍔″櫒浼犻掔粨鏋滃埌欏甸潰錛屽湪欏甸潰涓彇鍑烘湇鍔″櫒淇濆瓨鐨勫箋?/span> 鍙傝冭祫鏂欙細 http://topic.csdn.net/u/20090103/15/779af9b8-c3a7-4f3e-82fe-b08bf2630996.html 浠婂ぉ婕旂ずEL琛ㄨ揪寮忕殑鏃跺欏彂鐜拌嚜宸眏sp鐨勫熀紜瀹炲湪鏄杽寮憋紝鍦ㄨ繖涓緢綆鍗曠殑闂涓婅糠鎯戜簡寰堜箙銆?/p>
棣栧厛鍦ㄧ湅閬囧埌鐨勯棶棰橈細 鍦ㄦ祻瑙堝櫒鍦板潃杈撳叆錛岃〃紺轟紶鍏ヤ竴涓弬鏁皌est錛屽間負123 鍙戠幇姣棤緇撴灉錛屽啀浣跨敤requestScope灝濊瘯鍙栧嚭錛?/p>
鍙戠幇榪樻槸姣棤緇撴灉錛屾劅鍒伴潪甯歌寮傦紝閬傚共鑴嗕嬌鐢╦ava鑴氭湰灝濊瘯鍙栧嚭銆?/p>
涔嬪悗鍙戠幇錛岃嫢浣跨敤宸蹭笅浠g爜鍚憆equest浣滅敤鍩熻祴鍊鹼紝鍒欑敤涓婇潰浠g爜鍙互鍙栧嚭 JAVA鑴氭湰錛?/p>
緇撹灝辨槸錛?span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: #ff0000; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none" class="Apple-style-span">${param.name} 絳変環(huán)浜?request.getParamter("name")錛岃繖涓ょ鏂規(guī)硶涓鑸敤浜庢湇鍔″櫒浠庨〉闈㈡垨鑰呭鎴風(fēng)鑾峰彇鐨勫唴瀹廣?/span> 銆銆銆銆銆${requestScope.name} 絳変環(huán)浜?nbsp;request.getAttribute("name")錛屼竴鑸槸浠庢湇鍔″櫒浼犻掔粨鏋滃埌欏甸潰錛屽湪欏甸潰涓彇鍑烘湇鍔″櫒淇濆瓨鐨勫箋?/span> 鍙傝冭祫鏂欙細 http://topic.csdn.net/u/20090103/15/779af9b8-c3a7-4f3e-82fe-b08bf2630996.html
try {
File input = new File("e:/engilish literature.doc");
docStream = new FileInputStream(input);
contentDisposition = "test.txt";
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "download";
}
<result name="success" type="dispatcher">
<param name="location">/home/register-result.jsp</param>
</result>
<result name="input">
<param name="location">/home/register.jsp</param>
</result>
<result name="download" type="stream">
<param name="contentType">application/x-msdownload</param>
<param name="inputName">docStream</param>
<param name="bufferSize">1024</param>
<param name="contentDisposition">attachment;filename="${contentDisposition}"</param>
</result>
<interceptor-ref name="params"/>
</action>
]]>web.xml
<filter>
<filter-name>AuthorizationFilter</filter-name>
<filter-class>com.cenin.util.filter.AuthorizationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthorizationFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
AuthorizationFilter.java
public class AuthorizationFilter implements Filter
{
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException
{
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
HttpSession session = request.getSession();
String servletPath = request.getServletPath();//鑾峰緱濡傦細 /baseinfo/codeBillTypeList.action
Object user = session.getAttribute(Config.getConfig().getSessionUser());
//鍒ゆ柇鏉冮檺
boolean passed = true;
/*if(user == null && (servletPath.indexOf("action")>=0 )){
passed = false;
String[] noLimit = Config.getConfig().getNoFilter().split(";");
for(int i=0;i<noLimit.length;i++){
if(servletPath.matches(noLimit[i])){
System.out.println(servletPath + " " + noLimit[i]);
passed = true;
break;
}
}
}*/
request.getRequestDispatcher(servletPath).forward(request, response);//鎺у埗struts or xwork璺寵漿
// if(passed)
// chain.doFilter(request, response);
// else
// {
// String modelType = request.getParameter("model.bmoduleType");
// String particalUrl = request.getParameter("particalUrl");
// session.setAttribute("model.bmoduleType", modelType);
// session.setAttribute("particalUrl", particalUrl);
// String url = Config.getConfig().getPageLogin();
// RequestDispatcher dispatcher = request.getRequestDispatcher(url);
// dispatcher.forward(request, response);
// }
}
public void init(FilterConfig filterConfig) throws ServletException
{
}
public void destroy()
{
}
}
xwork.xml娣誨姞
<include file="xwork-onlinehall.xml"/>
xwork-onlinehall.xml鏂囦歡鍐呭錛?br />
<package name="onlinehall" extends="cenin" namespace="/onlinehall" externalReferenceResolver="com.atlassian.xwork.ext.SpringServletContextReferenceResolver">
<action name="myOrderLoadList" class="com.cenin.web.action.onlinehall.MyOrderAction" method="myOrderLoadList">
<result name="success" type="freemarker">/onlinehall/myOrder.ftl</result>
</action>
</package>
MyOrder.java鍐呭
public class MyOrderAction extends BaseActionSupport {
public String myOrderLoadList() throws Exception {
}
}
]]>
]]>
鏈妭浠g爜璇︾粏璇存槑鏂囦歡涓婁紶鍔熻兘鐨勫紑鍙戞祦紼嬶紝浠嬬粛鐭ヨ瘑鐐瑰涓嬶細
2. UploadAction綾諱腑瀹炵幇涓婁紶鍔熻兘鏂規(guī)硶鍜屼笂浼犳枃浠跺睘鎬т粙緇嶃?
3. struts.xml涓璘ploadAction閰嶇疆錛屼互鍙婂瓧絎︾紪鐮併佹枃浠朵復(fù)鏃跺瓨鏀捐礬寰勯厤緗?
4. 涓婁紶鍚庢墍澶勮礬寰勫拰鏈緇堜笂浼犳垚鍔熷悗鏁堟灉灞曠ず銆?
<!---------------------鏂囦歡鍚嶏細upload.jsp----------------->
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>涓婁紶鏂囦歡</title>
</head>
<body>
<!-- 涓婁紶鏂囦歡琛ㄥ崟瀹氫箟 -->
<s:form action="upload" method="post" enctype="multipart/form-data">
<tr>
<!-- 涓婁紶鏂囦歡鏍囩瀹氫箟 -->
<td>涓婁紶鏂囦歡:<s:file name="file"></s:file></td>
</tr>
<tr>
<td>鍐嶆涓婁紶鏂囦歡:<s:file name="file"></s:file></td>
</tr>
<tr>
<td align="left"><s:submit name="submit" value="鎻愪氦"></s:submit></td>
</tr>
</s:form>
</body>
</html>
<!-------------------涓婁紶鏂囦歡鎴愬姛鍚庣粨鏋滈〉闈㈡枃浠跺悕錛歳esult.jsp ----------------->
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>涓婁紶緇撴灉</title>
</head>
<body>
涓婁紶鏂囦歡錛?br />
<!-- 鏄劇ず涓婁紶鎴愬姛鏂囦歡鍚?nbsp;-->
<s:property value="fileFileName" />
</body>
</html>
<!------------------鏂囦歡鍚嶏細UploadAction.java ------------------>
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
//鏂囦歡涓婁紶Action
public class UploadAction extends ActionSupport {
//涓婁紶鏂囦歡瀛樻斁璺緞
private final static String UPLOADDIR = "/upload";
//涓婁紶鏂囦歡闆嗗悎
private List<File> file;
//涓婁紶鏂囦歡鍚嶉泦鍚?/span>
private List<String> fileFileName;
//涓婁紶鏂囦歡鍐呭綾誨瀷闆嗗悎
private List<String> fileContentType;
public List<File> getFile() {
return file;
}
public void setFile(List<File> file) {
this.file = file;
}
public List<String> getFileFileName() {
return fileFileName;
}
public void setFileFileName(List<String> fileFileName) {
this.fileFileName = fileFileName;
}
public List<String> getFileContentType() {
return fileContentType;
}
public void setFileContentType(List<String> fileContentType) {
this.fileContentType = fileContentType;
}
public String execute() throws Exception {
for (int i = 0; i < file.size(); i++) {
//寰幆涓婁紶姣忎釜鏂囦歡
uploadFile(i);
}
return "success";
}
//鎵ц涓婁紶鍔熻兘
private void uploadFile(int i) throws FileNotFoundException, IOException {
try {
InputStream in = new FileInputStream(file.get(i));
String dir = ServletActionContext.getRequest().getRealPath(UPLOADDIR);
File uploadFile = new File(dir, this.getFileFileName().get(i));
OutputStream out = new FileOutputStream(uploadFile);
byte[] buffer = new byte[1024 * 1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
in.close();
out.close();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
<struts>
<!-- 緋葷粺甯擱噺瀹氫箟錛屽畾涔変笂浼犳枃浠跺瓧絎﹂泦緙栫爜 -->
<constant name="struts.i18n.encoding" value="gb2312"></constant>
<!-- 緋葷粺甯擱噺瀹氫箟錛屽畾涔変笂浼犳枃浠朵復(fù)鏃跺瓨鏀捐礬寰?-->
<constant name="struts.multipart.saveDir" value="c:\"></constant>
<!-- Action鎵鍦ㄥ寘瀹氫箟 -->
<package name="C04.4" extends="struts-default">
<!-- Action鍚嶅瓧錛岀被浠ュ強瀵艱埅欏甸潰瀹氫箟 -->
<!-- 閫氳繃Action綾誨鐞嗘墠瀵艱埅鐨勭殑Action瀹氫箟 -->
<action name="upload" class="action.UploadAction">
<result name="input">/jsp/upload.jsp</result>
<result name="success">/jsp/result.jsp</result>
</action>
</package>
</struts>
]]>
<result name="success" type="redirectAction">/admin/adminEnterpriceculturelist.action?enterpriceculture.enterpricetype=A</result>
灝界涓嶅ソ鐪嬫牸寮忥紝浣嗘槸鍗村緢瀹規(guī)槗鎳?
絎竴縐嶆柟寮忕殑/admin涓嶆槸鍛藉悕絀洪棿錛屾殏鏃舵垜榪樻病鏃墮棿鍘誨疄璺典粬錛岀幇鍦ㄦ湁鐐瑰繖..鍥犱負鎴戠殑鍛藉悕絀洪棿鏄繖鏍風(fēng)殑
<action name="adminEnterpriceculturesave" class="adminEnterpriceculturesaveAction" method="save">
<result name="success" type="redirectAction">/admin/adminEnterpriceculturelist.action?enterpriceculture.enterpricetype=A</result>
<!-- <param name="enterpriceculture.enterpricetype">A</param>
<result name="success" type="chain">
<param name="actionName">adminEnterpriceculturelist</param>
<param name="namespace">/</param>
</result>-->
<!-- <result name="success">/admin/Enterpriceculture_List.jsp</result>-->
</action>
</struts>
絎簩縐嶆柟寮忥細
<param name="enterpriceculture.enterpricetype">A</param>
<result name="success" type="chain">
<param name="actionName">adminEnterpriceculturelist</param>
<param name="namespace">/</param>
</result>
鍘繪帀鍛藉悕絀洪棿鍥犱負鏄湪鏈枃浠剁殑榪欎釜adminEnterpriceculturelist榪涜璺寵漿錛屾墍浠ョ悊瑙h搗鏉ュ鏄撳緢澶?.
緇煎悎鎵懼埌緗戜笂鏈夊叧璧勬枡錛氬涓嬶細
chain綾誨瀷 濡備笅錛?
<action name="getTemplate" class="tabAction" method="getTemplateByParas">
<param name="objectId">${objectId}</param>
<param name="param1">${param1}</param>
<param name="items">${items}</param>
<result name="success" type="chain">
<param name="actionName">${actionName}</param>
<param name="namespace">${namespace}</param>
</result>
</action>
榪欐牱灝卞彲浠ュ疄鐜頒紶鍙備簡錛岃繖閲岀殑鍙傛暟鎵鏈夊璞¢兘鍙互浼狅紝鍖呮嫭map,List,set 絳夐泦鍚堜篃鍙互銆傚悓鏃惰繖閲岃繕闇瑕佹敞鎰忎竴涓皬闂錛宑hain榪欑綾誨瀷鏄疿Work涓殑result綾誨瀷,瀹冨搴旂殑綾繪槸錛?
com.opensymphony.xwork2.ActionChainResult . 榪欓噷闇瑕佹敞鎰忎竴涓皬闂錛?actionName,namespace閮芥槸浠栫殑灞炴э紝鎵浠ュ浜庝紶榪囩殑URL鍙傛暟瑕佸仛涓涓嬪鐞嗐?
actionName蹇呴』鏄疉ction鐨勫悕縐幫紝namespace鏄粬鍛藉悕絀洪棿錛屽繀欏諱互"/"寮澶達紝濡傦細
/tab/getTemplate.action 鍒?namespace="/tab" ; actionName=”getTemplate“;
]]>
]]>
]]>
el琛ㄨ揪寮忎笉璧蜂綔鐢?/span>
浠婂ぉ鐢╡l琛ㄨ揪寮忥紝鑰佹槸寰椾笉鍒板悗鍙頒紶榪囨潵鐨勫箋傝瀵煎叆鐨刯ar鍖呭拰鏍囩搴撲篃閮藉鍏ヤ簡銆傝繕鏄笉璧蜂綔鐢ㄣ傚悗鏉ュ湪緗戜笂鎵懼埌涓綃囨枃绔犮傝В鍐充簡銆傚師鏉ユ槸鐗堟湰鐨勯棶棰樸傜幇鍦ㄨ創(chuàng)涓涓嬨?/span>
tomcat5.0鐨勭増鏈? 浣跨敤浜嗕綆鐗堟湰錛屽彧姹傜ǔ瀹氥?/span>
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
2.4鐗堟湰榛樿鍚敤el琛ㄨ揪寮忥紝濡傛灉浣跨敤2.5鐗堟湰錛岄粯璁l琛ㄨ揪寮忔槸鍏抽棴鐨?/span>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
閭d箞瀵瑰簲2.5鐨剋eb.xml --> jsp欏甸潰閲屽簲璇ュ鍔?lt;%@ page isELIgnored="false"%>
涓鍙ヨ瘽錛屽嚒鏄儴緗叉弿榪版枃浠墮伒寰猄ervlet2.4瑙勮寖鐨刉EB搴旂敤錛孍L琛ㄨ揪寮忕殑璁$畻榛樿鏄惎鐢ㄧ殑錛岃屾湭閬靛驚鐨勶紝鍒橢L琛ㄨ揪寮忕殑璁$畻榛樿鏄鐢ㄧ殑銆?/span>
鎵浠ヨВ鍐蟲柟妗堣繕鍙互鏄細灝唚eb.xml涓殑DTD(鏂囨。綾誨瀷瀹氫箟)鏀歸棶2.4鐨勭増鏈?/span>
鎴戠敤鐨勬槸鍦ㄥ叕鍏遍〉涓姞鍏?lt;%@ page isELIgnored="false"%>錛岀劧鍚庢瘡涓〉闈㈠紩鍏ュ叕鍏遍〉銆傞棶棰樿В鍐充簡銆?/span>
]]>http://localhost:8888/Test/index.jsp?test=123
鍦╥ndex.jsp涓皾璇曚嬌鐢‥L琛ㄨ揪寮忓彇鍑猴紝浠g爜濡備笅錛?/p>
<body>
${test}
</body> <body>
${requestScope.test}
</body> <body>
<%request.getAttribute("test"); %>
</body>
渚濈劧鏃犺В銆?/p>
<%
request.setAttribute("test", "123");
%>
鏌ヨ璧勬枡鍚庡彂鐜幫紝浣跨敤浠ヤ笅浠g爜鍙互鍙栧嚭涔嬪墠鐨勮姹傚弬鏁幫細
EL: <body>
${param.test}
</body> <body>
<%=request.getParameter("test") %>
</body>
el琛ㄨ揪寮忎腑鐨?{param}
]]>http://localhost:8888/Test/index.jsp?test=123
鍦╥ndex.jsp涓皾璇曚嬌鐢‥L琛ㄨ揪寮忓彇鍑猴紝浠g爜濡備笅錛?/p>
<body>
${test}
</body> <body>
${requestScope.test}
</body> <body>
<%request.getAttribute("test"); %>
</body>
渚濈劧鏃犺В銆?/p>
<%
request.setAttribute("test", "123");
%>
鏌ヨ璧勬枡鍚庡彂鐜幫紝浣跨敤浠ヤ笅浠g爜鍙互鍙栧嚭涔嬪墠鐨勮姹傚弬鏁幫細
EL: <body>
${param.test}
</body> <body>
<%=request.getParameter("test") %>
</body>
el琛ㄨ揪寮忎腑鐨?{param}
]]>
妗嗘灦鎼緩濂藉悗錛屽惎鍔ㄦ湇鍔″櫒鍑虹幇濡備笅鐨勪俊鎭細
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester).
log4j:WARN Please initialize the log4j system properly.
2009-11-6 21:39:17 org.apache.catalina.core.StandardContext start
涓ラ噸: Error listenerStart
2009-11-6 21:39:17 org.apache.catalina.core.StandardContext start
涓ラ噸: Context startup failed due to previous errors
2009-11-6 21:39:17 org.apache.catalina.core.StandardHostDeployer install
淇℃伅: Installing web application at context path /tomcat-docs from URL file:D:/server/Tomcat 5.0/webapps/tomcat-docs
2009-11-6 21:39:17 org.apache.catalina.core.StandardHostDeployer install
淇℃伅: Installing web application at context path /webdav from URL file:D:/server/Tomcat 5.0/webapps/webdav
銆傘傘傘?br />
鍙兘鍑洪敊鐨勫湴鏂癸細
1.web.xml鏂囦歡 web搴旂敤閮ㄧ講鎻忚堪絎︼紝閲岄潰鐨勯儴緗茬殑xml鏂囦歡鎴栬呯被錛屽鏋滆繖浜涙壘涓嶅埌灝變細鍙戠敓startup failed due to previous errors閿欒銆?br />
2.濡傛灉鍦ㄥ簲鐢╯pring鐨勮瘽錛屽湪閰嶇疆鏂囦歡applicationContext.xml涓畾涔夌殑綾匯亁ml鏂囦歡鎵句笉鍒頒篃浼氭姤榪欎釜閿欒銆?br />
3.鍦╳eb.xml錛宻truts.xml錛宎pplicationContext.xml鏂囦歡涓嚜韜湁浠諱綍涓鐐歸敊璇兘鍙兘寮曡搗涓婇潰鐨勮繖涓棶棰橈紝鑰屼笉浠呬粎鏄檮甯︾殑鏂囦歡閿欒瀵艱嚧銆?br />
4.濡傛灉浣跨敤ibatis鐨勮瘽錛屽湪SqlMapConfig.xml涓畾涔夌殑xml鏂囦歡鎵句笉鍒頒篃浼氭姤榪欎釜閿欒銆傦紙hibernate鐨勯厤緗湪鏁村悎spring鐨勬椂鍊欎嬌鐢╯pring鐨勯厤緗枃浠訛級
5.JDK鐨勭増鏈棶棰橈紝鏈濂戒嬌鐢↗DK5.0 鎴栬呮洿楂樼殑鐗堟湰銆?br />
6.Eclipse鍜宼omcat鐨勭増鏈吋瀹歸棶棰?br />
7.妗嗘灦鏁村悎鐨勮繃紼嬩腑鍦ㄥ鍏ュ埌l(fā)ib涓嬬殑jar鍖呭啿紿佷篃鍙兘浜х敓璇ラ敊璇?br />
8.jar鍖呯殑緙哄皯浠ュ強jar鍖呯殑鐗堟湰涔熷彲浜х敓璇ラ敊璇?br />
9.鍏朵粬鐨勫師鍥?br />
瑙e喅璇ラ棶棰樼殑閫斿緞錛?br />
鐢變簬涓婇潰闂鍙兘宸茬粡鏄痺eb鏈嶅姟鍣ㄥ唴閮ㄤ駭鐢熶簡閿欒錛岃屼笖IDE涓殑Log淇℃伅杈冨皯錛岄棶棰樼殑瑙e喅寰堥毦鍏ユ墜銆?br />
鑰岃闂鐨勪駭鐢熺粡甯鎬細瀵艱嚧欏甸潰璺寵漿瀵繪壘涓嶅埌鏂囦歡鐨?Http 404 閿欒銆傘傘傘傘?br />
鍙互閫氳繃鍦╰omcat涓坊鍔爈og鏂囦歡鏉ヨlog淇℃伅鎻愮ず鐨勬洿綺劇‘涓浜涳紝鍗寵緗甽og杈撳嚭鐨勭瓑綰с?br />
1.tomcat鐨勫畨瑁呰礬寰勪笅tomcat home涓嬬殑common鏂囦歡澶逛笅鐨刢lasses鏂囦歡澶逛腑鍒涘緩log4j.properties鏂囦歡錛屽嵆
銆傘傘侫pache Software Foundation/Tomcat 5.5/common/classes
log4j.properties閰嶇疆濡備笅錛堥厤緗槸杞澆錛夛細
log4j.rootLogger=info,Console,R
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
#log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.Console.layout.ConversionPattern=%d{yy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/tomcat.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy.MM.dd HH:mm:ss} %5p %c{1}(%L):? %m%n
log4j.logger.org.apache=info,R
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG, R
log4j.logger.org.apache.catalina.core=info,R
log4j.logger.org.apache.catalina.session=info,R
2.灝唋og4j-1.2.15.jar鍜宑ommons-logging.jar鍖呮嫹璐濆埌銆傘傘侫pache Software Foundation/Tomcat 5.5/common/lib涓嬪嵆鍙?br />
鍋氬ソ涓婇潰涓ゆ錛屽惎鍔ㄦ湇鍔″櫒鐨勬椂鍊欙紝浼氬湪tomcat鐨勫畨瑁呰礬寰勪笅鐨勩傘侫pache Software Foundation/Tomcat 5.5/logs涓嬭嚜鍔ㄧ殑
鐢熸垚tomcat.log鏂囦歡浠ヨ褰曟棩蹇椾俊鎭?br />
娉細tomcat.log鏂囦歡涓殑鏃ュ織淇℃伅浼氳杞藉緢澶氾紝濡傛灉榪囧ぇ灝卞彲鑳戒駭鐢熺鐩樼┖闂翠笉瓚崇殑闂錛屽緩璁畾鏃剁殑娓呴櫎鏃ュ織淇℃伅銆?br />
閫氳繃涓婇潰鐨勬棩蹇楁枃浠朵俊鎭彲浠ュ畾浣嶅埌姣旇緝鍏蜂綋鐨勯棶棰樻牴婧愶紝鍦ㄤ粩緇嗙殑鏌ョ湅闂涓涓鏀葷牬鍗沖彲瑙e喅銆?br />
鎴戝湪鎼緩妗嗘灦涔嬪悗錛屽湪web.xml鏂囦歡涓厤緗殑嬈㈣繋欏甸潰鏄劇ず鐨勬椂鍊欐姤404鐨勯敊璇紝閫氳繃涓婇潰鐨勯斿緞鎵懼埌浜嗕袱涓敊璇紝铏界劧鑺變簡涓ゅぉ鐨勬椂闂達紝鏈緇堣繕鏄В鍐充簡銆?br />
鍦╯truts.xml涓厤緗簡<constant name="struts.devMode" value="true"/> (鎹閰嶇疆浜?lt;constant name="struts.configuration.xml.reload" value="true"/>涔熶細鎶ラ敊錛岃繖涓垜娌¤瘯榪囷級
鏃跺惎鍔╰omcat鎶ラ敊銆?br />org.apache.catalina.core.StandardContext filterStart
涓ラ噸: Exception starting filter struts2
java.lang.NullPointerException
at com.opensymphony.xwork2.util.FileManager$FileRevision.needsReloading(FileManager.java:209)
at com.opensymphony.xwork2.util.FileManager.fileNeedsReloading(FileManager.java:60)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.needsReload(XmlConfigurationProvider.java:325)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.needsReload(StrutsXmlConfigurationProvider.java:168)
at com.opensymphony.xwork2.config.ConfigurationManager.conditionalReload(ConfigurationManager.java:220)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:61)
at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:774)
at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:191)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4363)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:926)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:889)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2009-2-4 22:40:54 org.apache.catalina.core.StandardContext start
涓ラ噸: Error filterStart
2009-2-4 22:40:54 org.apache.catalina.core.StandardContext start
涓ラ噸: Context [/Struts2Demo2] startup failed due to previous errors
緗戜笂瑙e喅鍔炴硶錛歞evMode妯″紡鏄紑鍙戞ā寮忥紝寮鍚畠鍒欓粯璁ゅ紑鍚簡i18n.reload銆?configuration.xml.reload銆傝繖涓敊璇槸鐢變簬configuration.xml.reload璁劇疆涓簍rue鍊掔疆鐨勶紝浣嗘槸緗戜笂鐨勮祫鏂欐病鏈夎鏄庡師鍥犲強瑙e喅鍔炴硶錛屽掓槸涓涓浗澶栫殑apache鐩稿叧BBS涓婃湁浜鴻榪欐槸216鐗堟湰鐨凚UG,騫朵笖闄勪笂浜嗕竴涓?patch淇鏂囦歡錛岃217鐗堟湰浼氫慨姝c傘傘傚彲鎴戜笉浼氱敤涔熶笉鐭ラ亾鏄笉鏄繖涓師鍥狅紝榪欎釜闂灝變竴鐩存悂緗湪榪欓噷浜嗐傝繃浜嗗嚑涓湀錛屼篃灝辨槸鏈榪戠綉涓婃煡浜嗕笅鍙戠幇鍦╝pache鐨勪竴涓偖浠跺垪琛ㄤ腑鏈夊叧浜庤繖涓殑瑙i噴錛?/span>鍘熷洜寰堢畝鍗曪紝tomcat鐨勫畨瑁呰礬寰勫寘鍚┖鏍兼垜鐨勬垚鍔熺殑鍔炴硶:鎹榪欐槸struts2.1.6鐨刡ug錛屾崲鏂扮増鏈?.1.8灝眔k錛屽綋鐒惰繕瑕佺浉搴旂殑xwork鐗堟湰錛屽ソ鍍忔槸xwork2.1.6錛屾垜灝嗗師鏉ョ殑2涓棫jar鍖呮崲鎴愭柊鐨勫氨ok浜嗐?/span>銆傘傘傛棤璇晩銆傘傘備竴璇曟灉鐒跺姝ゃ?br />
娉ㄦ剰:2涓猨ar鍖呮崲浜嗕箣鍚庨噸鍚痶omcat鍙兘浼氭姤閿欙紝 Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory - bean - jar錛岃繖涓敊璇槸寮濮嬮偅涓紩璧風(fēng)殑錛屾妸tomcat涓浉搴旈」鐩垹闄や簡錛岄噸鏂伴儴緗插氨娌¢棶棰樹簡
涓嬮潰鏄?涓紑鍙戞ā寮忓父鐢ㄩ厤緗殑綆浠?--錛堟潵鑷猦ttp://hi.baidu.com/12261016/blog/item/1d7f6ccaded7248ec91768ec.html錛?br /> <!-- 寮鍚嬌鐢ㄥ紑鍙戞ā寮忥紝璇︾粏閿欒鎻愮ず -->
<!-- <constant name="struts.devMode" value="true"/>-->
<!-- 鎸囧畾姣忔璇鋒眰鍒拌揪錛岄噸鏂板姞杞借祫婧愭枃浠?-->
<!-- <constant name="struts.i18n.reload" value="true"/>-->
<!-- 鎸囧畾姣忔閰嶇疆鏂囦歡鏇存敼鍚庯紝鑷姩閲嶆柊鍔犺澆 -->
<!-- <constant name="struts.configuration.xml.reload" value="true"/>-->
<!-- 鎸囧畾XSLT Result浣跨敤鏍峰紡琛ㄧ紦瀛?-->
<!-- <constant name="struts.xslt.nocache" value="true"/>-->
涓錛?span style="color:red">鍑嗗璧勬簮鏂囦歡錛岃祫婧愭枃浠剁殑鍛藉悕鏍煎紡濡備笅錛?/span>
baseName_language_country.properties
baseName_language.properties
baseName.properties
鍏朵腑baseName鏄祫婧愭枃浠剁殑鍩烘湰鍚嶏紝鎴戜滑鍙互鑷畾涔夛紝浣?/span>language鍜?/span>country蹇呴』鏄?/span>java鏀寔鐨勮璦鍜屽浗瀹躲傚錛?/span>
涓浗澶ч檰錛?/span>baseName_zh_CN.properties
緹庡浗錛?/span>baseName_en_US.properties
鐜板湪涓哄簲鐢ㄦ坊鍔犱袱涓祫婧愭枃浠訛細
浜岋細鍑嗗濂借祫婧愭枃浠跺悗錛氶厤緗?/span>struts.xml鏂囦歡
struts.custom.i18n.resources甯擱噺鎶婅祫婧愭枃浠跺畾涔変負鍏ㄥ眬璧勬簮鏂囦歡錛?/span>
<constant name="struts.custom.i18n.resources" value="itcast"/>
Itcast涓鴻祫婧愭枃浠剁殑鍩烘湰鍚嶃?/span>
涓夛細鍚庨潰鎴戜滑鍙互鍦ㄩ〉闈㈡垨action涓闂浗闄呭寲淇℃伅錛?/span>
1鍦?/span>JSP欏甸潰涓嬌鐢?/span><s:text name=””/>鏍囩杈撳嚭鍥介檯鍖栦俊鎭?/span>
name涓鴻祫婧愭枃浠朵腑鐨?/span>key銆?/span>
2鍦?/span>action 綾諱腑錛屽彲浠ョ戶鎵?/span>ActionSupport錛屼嬌鐢?/span>getText(“key”)鏂規(guī)硶寰楀埌鍥介檯
鍖栦俊鎭紝璇ユ柟娉曠殑絎竴涓弬鏁扮敤浜庢寚瀹氳祫婧愭枃浠朵腑鐨?/span>key銆?/span>
3鍦ㄨ〃鍗曟爣絳句腑錛岄氳繃key灞炴ф寚瀹氳祫婧愭枃浠朵腑鐨?/span>key錛屽錛?/span>
<s:textfield name=”realname” key=”user”/>
public void setPerson(Person person) {
this.person = person;
}
<body>
id=${person.id}<br>
name=${person.name}
</body>
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
freemarker-2.3.16.jar
javassist-3.11.0.GA.jar
ognl-3.0.1.jar
struts2-core-2.2.3.1.jar
xwork-core-2.2.3.1.jar
鏈閲嶈鐨勬槸騫蟲椂鎴戜滑鐪嬫櫘閫氱殑鏂囩珷鐨勮瘽璇磗truts2鐨勬灦鍖呭氨闇瑕侀偅浜斾釜錛屼絾鏄繖鏍瘋窇璧?br />
鏉ョ殑紼嬪簭錛屽浜庢垜鐨勯厤緗紝
tomcat apache-tomcat-6.0.32
浼氬嚭閿欙紝