java - 如何使用struts2和hibernate从数据库检索实例并显示它?

标签 java hibernate jsp struts2

我想从数据库中显示公司 pojo 的实例。我只能显示 CompanyId,其余详细信息不会显示。

viewCompany.jsp

`<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<s:form action="ViewCompany">
<s:textfield name="companyId" label="Enter Company ID">
    <s:param name="companyId" value="company.companyId"></s:param>
</s:textfield>
<s:submit/>
</s:form>
</body>
</html>

` 我正在尝试输入companyId,并且该id对应的值应该显示到显示页面。

CompanyBean:

`package com.buhin.POJO;

public class Company {
    private int companyId;
    public String companyName;
    public String contactPerson;
    public String mobileNumber;
    public String officeNumber;
    public String mail;
    public String addressLine1;
    public String addressLine2;
    public String cityName;
    public String stateName;
    public String zipcode;

    //public Address address;
    public Company(){}
    public Company(int companyId){
        this.companyId = companyId; 
    }

    public int getCompanyId() {
        return companyId;
    }

    public void setCompanyId(int companyId) {
        this.companyId = companyId;
    }

    public String getCompanyName() {
        return companyName;
    }
    public String getContactPerson() {
        return contactPerson;
    }
    public String getMobileNumber() {
        return mobileNumber;
    }
    public String getOfficeNumber() {
        return officeNumber;
    }
    public String getMail() {
        return mail;
    }
    public String getAddressLine1() {
        return addressLine1;
    }

    public String getAddressLine2() {
        return addressLine2;
    }

    public String getCityName() {
        return cityName;
    }

    public String getStateName() {
        return stateName;
    }

    public String getZipcode() {
        return zipcode;
    }
    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }
    public void setContactPerson(String contactPerson) {
        this.contactPerson = contactPerson;
    }
    public void setMobileNumber(String mobileNumber) {
        this.mobileNumber = mobileNumber;
    }
    public void setOfficeNumber(String officeNumber) {
        this.officeNumber = officeNumber;
    }
    public void setMail(String mail) {
        this.mail = mail;
    }
    public void setAddressLine1(String addressLine1) {
        this.addressLine1 = addressLine1;
    }

    public void setAddressLine2(String addressLine2) {
        this.addressLine2 = addressLine2;
    }

    public void setCityName(String cityName) {
        this.cityName = cityName;
    }

    public void setStateName(String stateName) {
        this.stateName = stateName;
    }

    public void setZipcode(String zipcode) {
        this.zipcode = zipcode;
    }


    @Override
    public String toString() {
        return "Company [CompanyName=" + getCompanyName()
                + ", ContactPerson=" + getContactPerson()
                + ", MobileNumber=" + getMobileNumber()
                + ", OfficeNumber=" + getOfficeNumber() + ", Mail="
                + getMail() + ", AddressLine1=" + getAddressLine1()
                + ", AddressLine2()=" + getAddressLine2()
                + ", CityName()=" + getCityName() + ", StateName="
                + getStateName() + ", Zipcode=" + getZipcode()
                + "]";
    }   
}

ViewCompany.java(ActionClass)

`

package com.buhin.Action;

import com.buhin.POJO.*;
import com.buhin.DAO.*;
import com.opensymphony.xwork2.ActionSupport;

    public class ViewCompany extends ActionSupport {

        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        private int companyId;
        Company company;

        public Company getCompany(){
            return company;
        }

        public void setCompany(Company company){
            this.company = company;
        }

        public int getCompanyId(){
            return companyId;
        }

        public void setCompanyId(int companyId){
            this.companyId = companyId;
        }
        public String execute(){
            CompanyDAO cdao = new CompanyDAO();
            company = cdao.viewCompany(companyId);      
            //System.out.println(company.toString());

            return "success";
        }

    }

CompanyDAO:

`package com.buhin.DAO;

import com.buhin.POJO.*;
import com.buhin.hibernate.*;
import com.opensymphony.xwork2.ActionSupport;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.SessionFactory;

public class CompanyDAO extends ActionSupport{

    public CompanyDAO(){

    }

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    Company vCompany;
    public String addCompany(Company company){
        SessionFactory sessionfactory = HibernateUtil.getSessionFactory();
        Session session = sessionfactory.openSession();
        Transaction transaction = session.beginTransaction();
        session.save(company);
        transaction.commit();
        session.close();
        return "success";
    }

    public Company viewCompany(int companyId){
        SessionFactory sessionfactory = HibernateUtil.getSessionFactory();
        Session session = sessionfactory.openSession();
        vCompany = (Company) session.get(com.buhin.POJO.Company.class, companyId);
        return vCompany;
    }
}

` 公司详细信息.jsp:

`<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <s:property value="company.companyId"/>
    <s:property value="company.companyName"/>
    <s:property value="company.contactPerson"/>
    <s:property value="company.mobileNumber"/>
    <s:property value="company.officeNumber"/>
    <s:property value="company.mail"/>
    <s:property value="company.addressLine1"/>
    <s:property value="company.addressLine2"/>
    <s:property value="company.cityName"/>
    <s:property value="company.stateName"/>
    <s:property value="company.zipcode"/>

</body>
</html>`
`

Struts.xml:

    `<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <constant name="struts.devMode" value="true"></constant>
    <package name="com.buhin.POJO" extends="struts-default">
        <!-- <action name="AddCompany" class="com.buhin.Action.AddCompany" method="execute">
            <result name="success">/success.jsp</result>
        </action>
 -->        <action name="ViewCompany" class="com.buhin.Action.ViewCompany" method="execute">
            <result name="success">/companydetails.jsp</result>
        </action>
    </package>  
</struts>

`

最佳答案

首先我同意@Aleksandr M,这是一个非常奇怪的结构。但尽管如此,这段代码还是有一些问题。

1) 您正在返回'success'来自操作方法的结果,因此您的结果应该是 <result name="success">/companydetails.jsp</result>

2) 您正在将 Company 对象存储在局部变量 ( Company viewCompany ) 中。这在您的 JSP 中不可用。 你应该做的是创建一个对象变量。为该变量添加 setter-getters 并在 JSP 中使用它,如下所示。

<s:property value="viewCompany.zipcode"/>

希望这有帮助。

关于java - 如何使用struts2和hibernate从数据库检索实例并显示它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29074996/

相关文章:

hibernate - 数据库ID递增一个以上

java - 使用 JPA 在 PostgreSQL 中保留 UUID

javascript - 带有单选按钮的 Jquery 弹出窗口

java - 在 eclipse 中运行 jbehave 测试时出现 org.jbehave.core.io.storyresourcenotfound 异常

java - 我们是否应该通过 Android 平台中的接口(interface)来引用对象

java - 如何在函数中定义升序整数?

java - Android Run Loop 剖析

java - 如何避免多次执行查询?

java - 执行 'view source' 时隐藏字段丢失

javascript - 内联 javascript 验证不适用于 jsp 文件