JSP输入数据(Welcome.Jsp)无法通过Java代码获取(OrderProcessingAction.saveOrUpdate())

时间:2013-05-06 07:48:09

标签: java hibernate jsp java-ee struts2

JSP页面输入详细信息用户并发送到struts操作,struts.xml将操作映射到Action类OrderProcessingAction方法saveOrUpdate(),此方法调用DAO类的saveOrUpdateUser()访问数据库表字段的实际数据。

以下是可交付成果:

  1. JSP页面 Welcome.jsp
  2. ActionClass OrderProcessingAction.java
  3. 数据访问 UserDaoFactory.java对象
  4. struts.xml文件
  5.  
    /**
     * Welcome.Jsp : Here my JSP page code.
     */
    <s:form method="post" name="myform" action="saveOrUpdate.action">
    
        <s:textfield label="Customer Name" name="username" size="30"/>
    
        <s:password label="Customer Password" name="password" size="30"/>
    
        <s:textfield label="Contact No" name="contact" size="30"/>
    
        <s:textfield label="Email" name="email" size="30"/>
    
        <s:textfield label="City" name="city" size="30"/>
    
    
        <s:submit label="Submit" />
        <s:reset label="Clear"/>
    
    </s:form>
    

    此处struts.xml文件。

    <action name="saveOrUpdate" 
            class="com.view.OrderProcessingAction" 
            method="saveOrUpdate">
     <result name="success">/Welcome.jsp</result>
    </action> 
    

    下面是我的OrderProcessingAction(ActionClass),我正在调用DAO类方法。

    private String username;
    private String password;
    private int contact;
    private String email;
    private String city;
    
    //Pojo class OrderPorcessing reference initiated
    OrderProcessing user = new OrderProcessing();   
    
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }   
    public int getContact() {
        return contact;
    }
    public void setContact(int contact) {
        this.contact = contact;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    
      /**
      * To save or update user. 
       * @return String
      */
       public String saveOrUpdate(){
    
        userDaoFactory.saveOrUpdateUser(user);
        System.out.println("User Name: " +user.getUsername());
        return SUCCESS;
      }
    

    来自DAO类的saveOrUpdate方法。

         /**
         * Used to save or update a user by saveOrUpdate().
         * @return void
         */
          public void saveOrUpdateUser(User user) {
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            tx = session.getTransaction();
    
            session.saveOrUpdate(user);
    
            tx.commit();
            session.close();
    
        } catch (Exception e) {
    
            e.printStackTrace();
        }
    }
    

2 个答案:

答案 0 :(得分:0)

而不是这样做

System.out.println("User Name: " +user.getUsername());

这样做

System.out.println("User Name: " +getUsername());

答案 1 :(得分:0)

在您的代码中,您应该将DAO替换为typical transaction

  

典型的交易应使用以下习语:

 Session sess = factory.openSession();
 Transaction tx;
 try {
     tx = sess.beginTransaction();
     //do some work
     ...
     tx.commit();
 }
 catch (Exception e) {
     if (tx!=null) tx.rollback();
     throw e;
 }
 finally {
     sess.close();
 }