论坛首页 Java企业应用论坛

请教log和ActionMessages的问题

浏览 4056 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-11-23  
我Struts的 Action中 有2个文件 SearchAction.java和 InsertAction.java
代码如下 :
SearchAction.java
//Created by MyEclipse Struts
// XSL source (default);: platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_3.8.2/xslt/JavaClass.xsl

package com.addressbook.struts.action;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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 org.apache.struts.action.ActionMessages;
import org.apache.struts.util.MessageResources;

import com.addressbook.constants.Constants;
import com.addressbook.struts.form.SearchForm;

/** 
 * MyEclipse Struts
 * Creation date: 11-21-2004
 * 
 * XDoclet definition:
 * @struts:action path="/search" name="searchForm" input="/search.jsp" scope="request" validate="true"
 */
public final class SearchAction extends Action {
	private Log log = LogFactory.getLog(this.getClass();.getName(););;
	

	public ActionForward execute(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response); {
		

		Locale locale = getLocale(request);;
		MessageResources messages = getResources(request);;
		
		ActionMessages errors = new ActionMessages();;
		
		String name = ((SearchForm);form);.getName();;
		String phone = ((SearchForm);form);.getPhone();;
		String address = ((SearchForm);form);.getAddress();;
		
		if(!errors.isEmpty(););{
			saveMessages(request,errors);;
			return new ActionForward(mapping.getInput(););;
		}
		
		String strSql = new String("SELECT * FROM " + Constants.TABLENAME + " WHERE ");;
		
		if(!name.equals(""););
			strSql = strSql + "name LIKE '" + name + "%' AND";
		if(!phone.equals(""););
			strSql = strSql + " phone LIKE '" + phone +"%' AND";
		if(!address.equals(""););
			strSql = strSql + " address LIKE '" + address + "%'";
		else
			strSql = strSql.substring(0,strSql.length();-3);;
		
		strSql = strSql + " ORDER by ID";
		
		HttpSession session = request.getSession();;
		if(log.isDebugEnabled(););{
			log.debug("SearchAction session =" + session);;
			log.debug("SearchAction strSql =" + strSql);;
		}
		
		session.setAttribute(Constants.SQLSTMT_KEY,strSql);;
		
		return mapping.findForward(Constants.FORWARD_SUCCESS);;
	}

}


InsertAction.java
//Created by MyEclipse Struts
// XSL source (default);: platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_3.8.2/xslt/JavaClass.xsl

package com.addressbook.struts.action;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.util.MessageResources;

import com.addressbook.constants.Constants;
import com.addressbook.model.AddressBookBean;
import com.addressbook.struts.form.InsertForm;

/** 
 * MyEclipse Struts
 * Creation date: 11-21-2004
 * 
 * XDoclet definition:
 * @struts:action path="/insert" name="insertForm" input="/insert.jsp" scope="request" validate="true"
 */
public final class InsertAction extends Action {
	private Log log = LogFactory.getLog(this.getClass();.getName(););;
	
	/** 
	 * Method execute
	 * @param mapping:  包含了这个Action的配置信息,和struts-config.xml文件中的<action>元素对应
	 * @param form : 包含了用户的表单数据,当Struts框架调用execute();方法时,ActionForm中的数据已经通过了表单验证
	 * @param request : 当前的Http请求对象
	 * @param response :当前的Http响应对象
	 * @return ActionForward :它包含了请求转发信息
	 */
	public ActionForward execute(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response);throws Exception {
		
		/**
		 * 这是取得地区,以便于使用多国语言的
		 * 如果是多国语言的话,这个properties文件必然有N份,各自对应不同的语言 
		 */
		Locale locale = getLocale(request);;
		MessageResources messages = getResources(request);;
		
		String name = null;
		String phone = null;
		String address = null;
		
		ActionMessages errors = new ActionMessages();;
		
		name = ((InsertForm);form);.getName();;
		phone = ((InsertForm);form);.getPhone();;
		address = ((InsertForm);form);.getAddress();;
		
		try{
			AddressBookBean bean = new AddressBookBean(name,phone,address);;
			bean.insert();;
		}catch(Exception ex);{
			ex.printStackTrace(System.out);;
			errors.add(ActionErrors.GLOBAL_ERROR,new ActionMessage("error.inset.failed"););;
		}
		
		if(!errors.isEmpty(););{
			saveMessages(request,errors);;
			return new ActionForward(mapping.getInput(););;
		}
		
		//If we had no errors, then add a confirmation message
		ActionMessages actionMessages = new ActionMessages();;
		actionMessages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("record.inserted"););;
		saveMessages(request,actionMessages);;
		
		return mapping.findForward(Constants.FORWARD_CONFIRMATION);;
	}
}


我想请问的是:
1:SearchAction.java中的51行到54行
 
 if(!errors.isEmpty(););{
saveMessages(request,errors);; 
return new ActionForward(mapping.getInput(););; 
}

是不是多余的,书上是这么写的,我认为好像永远也不能满足这个条件,可以删除么?

2:SearchAction.java中的70行到73行
 
if(log.isDebugEnabled(););{
log.debug("SearchAction session =" + session);; 
log.debug("SearchAction strSql =" + strSql);; 
}


这句话,我在"F:\Tomcat 5.0\logs\localhost_log.2004-11-23.txt"中都没有找到,相反其他文件中的
		if(debug>=1);
			log("Initializing database servlet");;
这种形式的log我却在"F:\Tomcat 5.0\logs\localhost_log.2004-11-23.txt"中找到了.

我不知道这2者有什么区别, 另外我想查找org.apache.commons.logging.Log;不知道哪里有chm文件.我都不知道.


3.InsertAction.java文件中的34行
private Log log = LogFactory.getLog(this.getClass();.getName(););; 
好像后面程序也没用到,是不是这里也是一点作用也没起?

谢谢
   发表时间:2004-11-24  
有人说用 log4j  .现在我已经 把 log4j.properties放到 src目录下面了 。它里面的内容为 :
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=warn, stdout

log4j.logger.net.sf.hibernate=info

### log just the SQL
#log4j.logger.net.sf.hibernate.SQL=debug

### log JDBC bind parameters ###
log4j.logger.net.sf.hibernate.type=info

### log schema export/update ###
log4j.logger.net.sf.hibernate.tool.hbm2ddl=debug

### log cache activity ###
#log4j.logger.net.sf.hibernate.cache=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.net.sf.hibernate.connection.DriverManagerConnectionProvider=trace


现在我不知道我上面的searchAction.java代码该怎么改 ?
用log4j有什么好啊 ? 

谢谢大家 。
0 请登录后投票
   发表时间:2004-11-24  
建议 先看一下log4j的文档!
看过之后,我想你的问题都不是问题啦。
errors.isEmpty()是判断有无错误,如果有错误则转到相应的逻辑处理中,所以有了forward。
0 请登录后投票
   发表时间:2004-11-24  
firebody 写道
建议 先看一下log4j的文档!
看过之后,我想你的问题都不是问题啦。
errors.isEmpty()是判断有无错误,如果有错误则转到相应的逻辑处理中,所以有了forward。


我觉得这段代码中  那个errors.isEmpty()不会不执行,我是想确认一下,你没明白我的问题。不是问你怎么用?

至于看log4j文档,哎,好累啊。我只想会用就行了。要是没人帮我,只好自己用jscb慢慢看了  
0 请登录后投票
   发表时间:2004-11-24  
既然自己都可以找得到的东西,为何还要问人呢(关于log4j),更何况这个东西这么简单。

太多的依赖只会让自己变得更加懦弱。

相信自己,看一下文档(其实我建议是看一下sample,最容易上手),自己就会知道的了。

祝你好运。
0 请登录后投票
   发表时间:2004-11-24  
问题已经解决了 。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics