private final Log log = LogFactory.getLog(AddUser.class); 
還有這個謝謝了!

解决方案 »

  1.   

    private   final   Log   log   =   LogFactory.getLog(AddUser.class);   这个是log4j的
      

  2.   

    <bean   id="userController" 
    class="com.nineKnine.user.web.UserController"> 
    <property   name="commandName"> 
    <value> user </value> 
    </property> 
    <property   name="commandClass"> 
    <value> com.nineKnine.user.domain.User </value> 
    </property> 
    <property   name="sessionForm"> 
    <value> true </value> 
    </property> 
    <property   name="userMgr"> 
    <ref   bean="userMgr"   /> 
    </property> 
    </bean> 
    定义一个bean,ID是userController(ID可以在spring配置文件中使用)
    这个bean是com.nineKnine.user.web.UserController.java这个类
    这个类注入时中需要设置属性commandName的值是user
    这个类注入时中需要设置属性commandClass的值是com.nineKnine.user.domain.User
    这个类注入时中需要设置属性userMgr的值是userMgr(userMgr应该是在spring配置文件中的另一个bean的ID)
      

  3.   

    有空你看一下spring的教程吧,这样比较清楚。首先看这个:<bean id="userController" class="com.nineKnine.user.web.UserController">   这个配置的意思就是创建类com.nineKnine.user.web.UserController的一个实例,和你调用它的构造函数来创建一个实例没有区别。
    这个实例的名字是userController。它的效果等同于:UserController userController = new UserController();
    然后看这个:<property name="commandName">   
        <value>user</value>   
    </property>   这一行的意思是说这个叫做userController的对象,有一个叫做commandName的属性。换句话说,在这个UserController类里面,一定有这样一个方法:public void setCommandName(String commandName) {
        ....
    }这个配置是告诉Spring容器,要调用这个setter方法,将字符串user作为参数传给这个setter方法,来给userController的commandName属性赋值它等同于你直接写代码:...
    setCommandName("user");
    ...下面这两个property配置意思同上:<property name="commandClass">   
        <value>com.nineKnine.user.domain.User</value>   
    </property>   
    <property name="sessionForm">   
        <value>true</value>   
    </property>  
    但是这个property配置的意思略有不同。这一次,它不再是赋值一个字符串,而是将另外一个对象赋值给userController的一个属性。<property name="userMgr"> 
        <ref bean="userMgr"/> 
    </property>注意看,这里不再是<value>...</value>,而是<ref bean="userMgr"/>。它的意思是说userController有一个属性,它通过setUserMgr(...)方法来赋值。但是这个属性的类型是另外一个对象。现在,把一个叫作 userMgr 的对象作为参数来调用这个setter方法来给属性赋值。这里我假设这个userMgr对象的类是UserManager,那么它等同于你写这样的代码:userController.setUserMgr(userMgr);
      

  4.   

    spring的bean其实就是告诉spring应该如何创建一个对象。和你自己写代码来创建对象的实例是没有区别的。
      

  5.   

    private   final   Log   log   =   LogFactory.getLog(AddUser.class);   这里使用的是Apache通用日志,Log和LogFactory都是接口,getLog是一个静态工厂方法产生一个Log实例,你可以在commons-log.properties里将Log接口指向具体的第三方的日志插件实现spring配置文件里的相关属性见5楼
      

  6.   

    public class UserController extends SimpleFormController{
    private final Log log = LogFactory.getLog(UserController.class);

    public UserController(){
    setFormView("register");
    setSuccessView("welcome");
    setCommandClass(User.class);
    } public ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception{
    log.debug("Enter Controller UserController");
    User user = (User) command;
    userMgr.saveUser(user);

    RedirectView rv = new RedirectView("welcome.html");
    rv.setContextRelative(true);
    rv.setHttp10Compatible(false);
    return new ModelAndView(rv);
    }

    private UserMgr userMgr = null;

    public void setUserMgr(UserMgr userMgr){
    this.userMgr = userMgr;
    }
    }
    这就是userController,你和我说的
        <property name="commandName"> <value>user</value> </property>
    这一行的意思是说这个叫做userController的对象,有一个叫做commandName的属性。换句话说,在这个UserController类里面,一定有这样一个方法:Java code    public void setCommandName(String commandName) { .... }
    这个配置是告诉Spring容器,要调用这个setter方法,将字符串user作为参数传给这个setter方法,来给userController的commandName属性赋值它等同于你直接写代码:Java code    ... setCommandName("user"); ...
    下面这两个property配置意思同上:XML code    <property name="commandClass"> <value>com.nineKnine.user.domain.User</value> </property> <property name="sessionForm"> <value>true</value> </property>这及个地方那个我还是不怎么明白!