快速搭建ssh代码篇

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyang0304/article/details/78106153

接着上文,这里贴出测试及配置代码。首先是运行结果,tomcat配置之前有提及过,这里不再阐述。
这里写图片描述
为了解决hibernate的延迟加载问题,我们在web.xml里配置一个过滤器,也可以在hbm.xml的属性里配置lazy=false解决。
list.jsp

<body>
<table>
    <tr>
        <td>编号</td>
        <td>名称</td>
        <td>性别</td>
        <td>班级</td>
        <td>操作</td>
    </tr>
    <c:forEach var="student" items="${studentItems}">
    <tr>
        <td>${student.sid}</td>
        <td>${student.sname}</td>
        <td>${student.sex}</td>
        <td>${student.grade.gname}</td>
        <td>操作</td>
    </tr>
    </c:forEach>
</table>
</body>

web.xml

    <!--配置上下文参数(指定spring文件路径)-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <!--配置监听(在服务器启动时创建spring容器)-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!--配置OpenSessionInViewFilter过滤器解决延迟加载问题-->
    <filter>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>

    <!--配置struts2核心控制器-->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>

applicationContext.xml;

<!--导入数据访问层对象配置-->
    <import resource="applicationContext-dao.xml" />
    <import resource="applicationContext-biz.xml" />
    <import resource="applicationContext-action.xml" />
    <!--配置数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!--数据库连接信息-->
        <property name="driverClass" value="com.mysql.jdbc.Driver">
        </property>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssh">
        </property>
        <property name="user" value="root"></property>
        <property name="password" value="123456"></property>
        <!--连接池最大连接数-->
        <property name="maxPoolSize" value="40"></property>
        <!--连接池最小连接数-->
        <property name="minPoolSize" value="1"></property>
        <!--初始化连接数-->
        <property name="initialPoolSize" value="1"></property>
        <!--连接的最大空闲时间(超时时间,单位:秒)-->
        <property name="maxIdleTime" value="60"></property>
        <!--没有连接时,等待连接的时间(单位:毫秒)-->
        <property name="checkoutTimeout" value="2000"></property>
    </bean>
    <!--会话工厂-->
    <bean id="sessionFactory"
          class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!--注入数据源-->
        <property name="dataSource" ref="dataSource"></property>
        <!--配置hibernate属性-->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
        <!--配置映射文件路径-->
        <property name="mappingResources">
            <list>
                <value>com/ssh/entity/Grade.hbm.xml</value>
                <value>com/ssh/entity/Student.hbm.xml</value>
            </list>
        </property>
    </bean>

applicationContext-dao.xml

<!--学生信息数据访问对象-->
<bean id="studentDao" class="com.ssh.dao.impl.StudentDaoImpl">
<!--将会话工厂注入到HibernateDaoSupport中-->
<property name="sessionFactory"> 
<ref bean="sessionFactory" /></property></bean>

applicationContext-biz.xml

<!--学生信息管理业务对象-->
<bean id="studentManagerBiz" class="com.ssh.biz.impl.StudentManagerBizImpl">
<property name="studentDao" ref="studentDao"></property></bean>

applicationContext-action.xml

<!--学生管理action-->
<bean id="studentManagerAction" class="com.ssh.action.StudentManagerAction" scope="prototype">
<property name="studentManagerBiz" ref="studentManagerBiz"></property></bean>

struts.xml

<package name="studentmanager" namespace="/" extends="struts-default">
<action name="findAllStudentAction" class="studentManagerAction" method="findAllStudent">
<result name="success">list.jsp</result>
</action></package>

实体类比较简单,这里不再给出,直接给出配置文件。
student.hbm.xml

<hibernate-mapping>
    <class name="com.ssh.entity.Student" table="student">
        <id name="sid" type="long" column="sid">
            <generator class="native"></generator>
        </id>
        <property name="sname" type="java.lang.String" column="sname" />
        <property name="sex" type="java.lang.String" column="sex" />
        <!--配置多对一关联映射-->
        <many-to-one name="grade" class="com.ssh.entity.Grade" >
            <column name="gid"></column>
        </many-to-one>

    </class>
</hibernate-mapping>

grade.hbm.xml

<hibernate-mapping>
    <class name="com.ssh.entity.Grade" table="grade">
        <id name="gid" type="long" column="gid">
            <generator class="native"></generator>
        </id>
        <property name="gname" type="java.lang.String" column="gname" />
        <property name="gdesc" type="java.lang.String" column="gdesc" />

    </class>

</hibernate-mapping>

IStudentDao

public interface IStudentDao {
    /*
    * 查询所有的学生信息
    * */
    public List<Student> findAllStudent();}

StudentDaoImpl

public class StudentDaoImpl extends HibernateDaoSupport implements IStudentDao {

    @Override
    public List<Student> findAllStudent() {
        return super.getHibernateTemplate().find("FROM Student");
    }
}

IStudentManagerBiz

public interface IStudentManagerBiz {
    //查询所有的学生信息
    public List<Student> findAllStudent();
}

StudentManagerBizImpl

public class StudentManagerBizImpl implements IStudentManagerBiz{
    //学生数据访问对象
    private IStudentDao studentDao;
    public void setStudentDao(IStudentDao studentDao) {
        this.studentDao = studentDao;
    }
    @Override
    public List<Student> findAllStudent() {
        return studentDao.findAllStudent();
    }
}

StudentManagerAction

public class StudentManagerAction extends ActionSupport {
    //学生信息管理业务对象
    private IStudentManagerBiz studentManagerBiz;

    public void setStudentManagerBiz(IStudentManagerBiz studentManagerBiz) {
        this.studentManagerBiz = studentManagerBiz;
    }

    //查询所有的学生信息
    public String findAllStudent() {
        List<Student> studentItems = studentManagerBiz.findAllStudent();
        //获取request对象,存数据
        Map<String, Object> request = (Map<String, Object>) ActionContext.getContext().get("request");
        request.put("studentItems", studentItems);
        return ActionSupport.SUCCESS;
    }

}

猜你喜欢

转载自blog.csdn.net/huyang0304/article/details/78106153