SSH框架搭建

1.概念

1.1、Struts2

背景

由出色稳定的框架struts1和WebWork框架整合而来。

  • (struts1是Apache软件基金会赞助的一个开源项目,它通过采育好难过javaservlet/jsp技术,实现了基于java ee web应用的mvc设计模式的应用框架,是mvc经典设计模式中的一个经典产品。struts1结构简单小巧,十分易用,一度市场占有率超过20%,struts1框架,与jsp/servlet耦合非常紧密,这制约了它的发展,以至于被后来的框架陆续赶超)。
  • (webwork是有Opensysphony组织开发的,是建立在成为xwork的command模式框架之上的强大的mvc框架,webwork晚于struts1,技术上更为先进,由于组织至猛毒,人们习惯等原因。webwork市场的反响不如struts1)
  • struts2与struts1差别巨大,不能理解为struts1的升级版。
  • struts2以xwork为核心,可以理解为webwork的升级版。
  • 吸取了两大框架的优点
  • 吸收了自动封装数据技术,简化了许多冗余代码
  • 提高了开发效率和规范性
  • 更好的实现了mvc架构

概念

解除了与servlet的强耦合性
轻量级MVC框架,主要解决了请求分发的问题,重心在控制层和表现层。所谓轻量级,低侵入性,与业务代码的耦合度很低。即业务代码中基本不需要import它的包。struts2实现了MVC,并提供了一些列API,采用模式化方式简化业务开发过程。

1.2、Hibernate

ORM

hibernate中一个比较重要的概念,全称是Object Relational Mapping(直译就是对象关系映射)。说白呢就是一个关系映射,把我们的实体类的对象映射到数据库中对应的表中去。然后我们只需要通过调用Session对象的save、update、delete、get、load等方法就可以对数据库表数据进行增删查改等操作。这个概念不难理解,但是我觉得是贯穿整个hibernate框架的重要思想。

hibernate的核心接口和类

  • hibernate的核心接口和类一共有6个。分别是Session、SessionFactory、Transaction、Query、Criteria 和 Configuration
  • Session: Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)
  • SessionFactory:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。
  • Transaction:Transaction 接口是一个可选的API,可以选择不使用这个接口,取而代之的是Hibernate 的设计者自己写的底层事务处理代码。 Transaction 接口是对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA 中的UserTransaction、甚至可以是CORBA 事务。之所以这样设计是能让开发者能够使用一个统一事务的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移植。
  • Query: Query接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL语言或本地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。
  • Criteria:Criteria接口与Query接口非常类似,允许创建并执行面向对象的标准化查询。值得注意的是Criteria接口也是轻量级的,它不能在Session之外使用。
  • Configuration:Configuration 类的作用是对Hibernate 进行配置,以及对它进行启动。在Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。虽然Configuration 类在整个Hibernate 项目中只扮演着一个很小的角色,但它是启动hibernate 时所遇到的第一个对象。

2.创建项目

2.1、目录结构

配置文件:

  • struts.xml
  • spring.xml
  • hibernate.cfg.xml(IDEA自动生成映射文件)

资源文件:

  • jdbc.propertis
  • log4j.properties

2.2、创建项目

  • 记得勾上Create from archetype,才可选择。
  • 注意:选择maven-archetype-webapp

我使用的是IDEA2023版,直接有Maven archetype,然后在archetype中选择maven-archetype-webapp

3.配置文件

3.1、配置pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>SSHTest</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- 统一各个框架版本 -->
        <struts.version>2.5.10</struts.version>
        <spring.version>4.3.8.RELEASE</spring.version>
        <hibernate.version>5.1.7.Final</hibernate.version>
        <!--<hibernate.version>5.2.10.Final</hibernate.version>-->
    </properties>

    <dependencies>
        <!-- Junit依赖 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
        <!-- Spring 核心依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- Spring web依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- Spring整合ORM框架依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- Struts2 核心依赖 -->
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>${struts.version}</version>
        </dependency>
        <!-- Struts2和Spring整合依赖 -->
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-spring-plugin</artifactId>
            <version>${struts.version}</version>
        </dependency>
        <!-- Hibernate 核心依赖 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${hibernate.version}</version>
        </dependency>
        <!-- MySQL 依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.42</version>
        </dependency>
        <!--Oracle 依赖-->
        <dependency>
            <groupId>com.oracle.jdbc</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.3</version>
        </dependency>
        <!-- C3P0 依赖 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5</version>
        </dependency>
        <!-- AspectJ依赖 -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.10</version>
        </dependency>
        <!-- SLF4J依赖 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- 统一源代码编译输出的JDK版本 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <!-- 打包时跳过单元测试 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
            <!-- 集成Tomcat插件 -->
            <!--<plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <path>/${project.artifactId}</path>
                </configuration>
            </plugin>-->
        </plugins>
        <finalName>SSH_Test</finalName>
    </build>

</project>

3.2、创建 jdbc.properties 并配置 

jdbc.driverClass=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@172.27.12.1:1521/orcl
jdbc.username=tzdyq
jdbc.password=******

3.3、创建 log4j.properties 并配置

log4j.rootCategory=INFO, console

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %t %c{2}:%L - %m%n

3.4、创建 spring.xml 并配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd"
       default-autowire="byName">

    <!-- 开启包扫描,并注册注解 -->
    <context:component-scan base-package="com.ssh.*"/>

    <!-- 引入属性文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 配置C3P0连接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!-- 数据库连接相关信息 -->
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="driverClass" value="${jdbc.driverClass}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!-- 配置Hibernate的SessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <!-- 注入连接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 配置Hibernate属性 -->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.show_sql">true</prop><!-- 是否展示SQL -->
                <prop key="hibernate.hbm2ddl.auto">update</prop><!-- 是否自动创建表结构 -->
                <!--<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>-->
                <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            </props>
        </property>
        <!-- 扫描并加载注解过的实体类 -->
        <property name="packagesToScan" value="com.ssh.model"/>
    </bean>

    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <!-- 注入SessionFactory -->
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <!--
    REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
      SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。
      MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。
      REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
      NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
      NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
      NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。
     -->
    <!-- 配置事务增强 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="delete*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="save*" propagation="REQUIRED" />
            <!-- <tx:method name="*" propagation="true" />-->
        </tx:attributes>
    </tx:advice>

    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <!-- 配置切面 -->
    <aop:config>
        <!-- 配置切入点
            * org.ssh.service.*+.*(..)
                *:表示方法的作用域,*表示所有
                org.ssh.service.*:表示org.ssh.service下的任何包
                org.ssh.service.*+:表示org.ssh.service下的任何包及其子包
                *(..):*表示任何方法,(..)表示方法的任何参数
         -->
        <aop:pointcut id="pointcut" expression="execution(* com.ssh.*.service.*+.*(..))"/>
        <!-- 适配切入点和事务增强 -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
    </aop:config>

</beans>

这里遇到一个问题,就是配置sessionFactory中的hibernateProperties时,hibernate.dialect这个属性选择11g的oracle一直报错,然后一直没找到适配org.hibernate.dialect.Oracle11gDialect的jar包,只能改用org.hibernate.dialect.Oracle10gDialect来避免报错,不知道后续有啥影响。

3.5、创建 struts.xml 并配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>

    <!-- 默认访问页面 -->
    <package name="default" extends="struts-default" namespace="/">
        <default-action-ref name="default"/>
        <action name="default">
            <result>/</result>
        </action>
    </package>

    <!-- 商品相关请求转发 -->
    <!-- Struts2在2.5版本后添加strict-method-invocation(严格方法访问),默认为true,不能使用动态方法调用功能,故需设为false -->
    <package name="smBlsqd" extends="struts-default" namespace="/" strict-method-invocation="false">
        <!-- 保存商品 -->
        <action name="smBlsqd_*" class="com.ssh.action.SmBlsqdAction" method="{1}SmBlsqd">
            <result>/</result>
            <!--<result>/error.jsp</result>-->
        </action>
    </package>

    <!-- 引入资源文件 -->
    <constant name="struts.custom.i18n.resources" value="messageResource"></constant>

</struts>

其中action标签中的name属性smBlsqd_*是动作的名称模式,这里使用了通配符*,它表示以smBlsqd_开头的一系列动作名称都可以匹配到这个配置。例如,smBlsqd_savesmBlsqd_update等这样的动作名称都能按照这个配置来进行处理。

method属性其中{1}是一个占位符,它会根据动作名称中与通配符*匹配的部分来替换。例如,如果请求的动作名称是smBlsqd_save,那么{1}就会被替换成save,此时实际要调用的方法就是saveSmBlsqd方法。

3.6、配置 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

    <!-- 配置Struts2过滤器 -->
    <filter>
        <filter-name>SSHTest</filter-name>
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>SSHTest</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 配置Spring的监听器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 指定Spring配置文件所在路径 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring.xml</param-value>
    </context-param>

</web-app>

这里当时filter-mapping报错,原因是因为我在项目结构中添加了两个web导致无法识别,需要删掉一个web,而且我项目中有两个web.xml,需要指定一个

3.7、自动生成 hibernate.cfg.xml 

在File菜单下的Project Structure中,选择Modules,添加Hibernate

选择hibernate版本,添加配置文件

  • 这时项目中多出了一个 hibernate.cfg.xml 配置文件
  • 配置好数据库(5.配置数据库)后,hibernate.cfg.xml中,(数据连接URL和驱动会自动增加)配置如下:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="connection.url">jdbc:oracle:thin:@172.27.12.1:1521/orcl</property>
    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    <mapping class="com.ssh.model.SmBlsqdEntity"/>
    <mapping resource="spring/SmBlsqdEntity.hbm.xml"/>
    <!-- <property name="connection.username"/> -->
    <!-- <property name="connection.password"/> -->

    <!-- DB schema will be updated if needed -->
    <!-- <property name="hibernate.hbm2ddl.auto">update</property> -->
  </session-factory>
</hibernate-configuration>

4.创建JAVA目录,及工程结构 

创建的先后顺序无所谓,新建com.ssh目录

4.1、action类

新建action目录

package com.ssh.action;

import com.opensymphony.xwork2.ActionSupport;
import com.ssh.model.SmBlsqdEntity;
import com.ssh.service.SmBlsqdService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import java.util.List;

@Controller
@Scope("prototype")
public class SmBlsqdAction extends ActionSupport {
    @Autowired
    private SmBlsqdService smBlsqdService;

    private String bbmc;
    private String zyhm;
    private String brxm;
    public String getBbmc(){
        return bbmc;
    }
    public void setBbmc(){
        this.bbmc = bbmc;
    }
    public String getZyhm(){
        return zyhm;
    }
    public void setZyhm(){
        this.zyhm = zyhm;
    }
    public String getBrxm(){
        return brxm;
    }
    public void setBrxm(){
        this.brxm = brxm;
    }
    @Override
    public void validate(){
        if (zyhm == null || "".equals(zyhm.trim())) {
            this.addFieldError("zyhm", "住院号码不能为空");
        }
    }
    public String saveSmBlsqd() {
        System.out.println(zyhm);
        this.addActionMessage("保存成功...");
        List<SmBlsqdEntity> smBlsqdList = smBlsqdService.getSmBlsqdList();
        this.addActionMessage("从数据库中取出来的标本名称:"+smBlsqdList.get(0).getBbmc());
        return SUCCESS;
    }

}

4.2、dao类

新建dao目录

package com.ssh.dao;

import com.ssh.model.SmBlsqdEntity;

import java.util.List;

public interface SmBlsqdDao {
    public void saveSmBlsqd(SmBlsqdEntity smBlsqd);

    public List<SmBlsqdEntity> getSmBlsqdList();
}

4.3、dao.impl类

dao下面新建impl文件夹

package com.ssh.dao.impl;

import com.ssh.dao.SmBlsqdDao;
import com.ssh.model.SmBlsqdEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.HibernateTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class SmBlsqdDaoImpl implements SmBlsqdDao {
    private HibernateTemplate template;

    @Autowired
    public SmBlsqdDaoImpl(HibernateTemplate template){
        this.template = template;
    }

    public HibernateTemplate getTemplate() {
        return template;
    }

    public void setTemplate(HibernateTemplate template) {
        this.template = template;
    }
    @Override
    public void saveSmBlsqd(SmBlsqdEntity smBlsqd) {

    }

    @Override
    public List<SmBlsqdEntity> getSmBlsqdList() {
        List smBlsqdList = getTemplate().find("From SmBlsqdEntity");
        return smBlsqdList;
    }
}

这里碰到一个小问题,提示无法加载HibernateTemplate的bean,一直查看spring.xml的配置文件发现bean配置没问题,最后发现是项目结构里Spring的框架没有加,可以去添加。

 4.4、model类(5.配置数据库完后,自动生成)

新建model目录

package com.ssh.model;

import javax.persistence.*;
import java.sql.Date;

@Entity
@Table(name = "SM_BLSQD", schema = "TZDYQ", catalog = "")
public class SmBlsqdEntity {
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    @Column(name = "JLXH")
    private long jlxh;
    @Basic
    @Column(name = "MZZY")
    private byte mzzy;
    @Basic
    @Column(name = "MZHM")
    private String mzhm;
    @Basic
    @Column(name = "ZYH")
    private Long zyh;
    @Basic
    @Column(name = "ZYHM")
    private String zyhm;
    @Basic
    @Column(name = "BRXM")
    private String brxm;
    @Basic
    @Column(name = "BRCH")
    private String brch;
    @Basic
    @Column(name = "BRXB")
    private Byte brxb;
    @Basic
    @Column(name = "BRNL")
    private String brnl;
    @Basic
    @Column(name = "BRJG")
    private String brjg;
    @Basic
    @Column(name = "BRZY")
    private String brzy;
    @Basic
    @Column(name = "BRHY")
    private String brhy;
    @Basic
    @Column(name = "BRKS")
    private Integer brks;
    @Basic
    @Column(name = "KSMC")
    private String ksmc;
    @Basic
    @Column(name = "BRBQ")
    private Integer brbq;
    @Basic
    @Column(name = "BQMC")
    private String bqmc;
    @Basic
    @Column(name = "SJDW")
    private String sjdw;
    @Basic
    @Column(name = "BSZY")
    private String bszy;
    @Basic
    @Column(name = "HYSJ")
    private String hysj;
    @Basic
    @Column(name = "LCZD")
    private String lczd;
    @Basic
    @Column(name = "GDY")
    private String gdy;
    @Basic
    @Column(name = "LS_BLJY")
    private String lsBljy;
    @Basic
    @Column(name = "LS_JYRQ")
    private Date lsJyrq;
    @Basic
    @Column(name = "LS_JYHS")
    private String lsJyhs;
    @Basic
    @Column(name = "LS_JYZD")
    private String lsJyzd;
    @Basic
    @Column(name = "LXFS")
    private String lxfs;
    @Basic
    @Column(name = "CXSJ")
    private String cxsj;
    @Basic
    @Column(name = "YJRQ")
    private Date yjrq;
    @Basic
    @Column(name = "KGRQ")
    private Date kgrq;
    @Basic
    @Column(name = "BZ")
    private String bz;
    @Basic
    @Column(name = "SSRQ")
    private Date ssrq;
    @Basic
    @Column(name = "SSTH")
    private String ssth;
    @Basic
    @Column(name = "ZDYS")
    private String zdys;
    @Basic
    @Column(name = "BBMC")
    private String bbmc;
    @Basic
    @Column(name = "SQRQ")
    private Date sqrq;
    @Basic
    @Column(name = "SQKS")
    private Long sqks;
    @Basic
    @Column(name = "SQKSMC")
    private String sqksmc;
    @Basic
    @Column(name = "DYRQ")
    private Date dyrq;
    @Basic
    @Column(name = "DYGH")
    private String dygh;
    @Basic
    @Column(name = "BBSL")
    private Byte bbsl;
    @Basic
    @Column(name = "SQLX")
    private Byte sqlx;
    @Basic
    @Column(name = "SJYS")
    private String sjys;
    @Basic
    @Column(name = "SJRQ")
    private Date sjrq;
    @Basic
    @Column(name = "HCHS")
    private String hchs;
    @Basic
    @Column(name = "HCRQ")
    private Date hcrq;
    @Basic
    @Column(name = "SJGY")
    private String sjgy;
    @Basic
    @Column(name = "SJGYSJ")
    private Date sjgysj;
    @Basic
    @Column(name = "SJHS")
    private String sjhs;
    @Basic
    @Column(name = "SJHSSJ")
    private Date sjhssj;
    @Basic
    @Column(name = "JSGH")
    private String jsgh;
    @Basic
    @Column(name = "JSRQ")
    private Date jsrq;
    @Basic
    @Column(name = "FKNR")
    private String fknr;
    @Basic
    @Column(name = "FKGH")
    private String fkgh;
    @Basic
    @Column(name = "FKRQ")
    private Date fkrq;
    @Basic
    @Column(name = "JCJG")
    private String jcjg;
    @Basic
    @Column(name = "SSBH")
    private Long ssbh;
    @Basic
    @Column(name = "BBBW")
    private String bbbw;
    @Basic
    @Column(name = "SQDDYRQ")
    private Date sqddyrq;
    @Basic
    @Column(name = "SQDDYGH")
    private String sqddygh;
    @Basic
    @Column(name = "SQYS")
    private String sqys;
    @Basic
    @Column(name = "SQYSRQ")
    private Date sqysrq;
    @Basic
    @Column(name = "SJYSXM")
    private String sjysxm;
    @Basic
    @Column(name = "SYBZ")
    private Short sybz;
    @Basic
    @Column(name = "YJSQDXH")
    private String yjsqdxh;
    @Basic
    @Column(name = "HKDZ")
    private String hkdz;
    @Basic
    @Column(name = "ZZKQK")
    private String zzkqk;
    @Basic
    @Column(name = "KQBGFS")
    private Integer kqbgfs;
    @Basic
    @Column(name = "JBGYG")
    private String jbgyg;
    @Basic
    @Column(name = "JBGSJ")
    private Date jbgsj;
    @Basic
    @Column(name = "BBJKFK")
    private String bbjkfk;
    @Basic
    @Column(name = "SFDH")
    private Byte sfdh;
    @Basic
    @Column(name = "BGRQ")
    private Date bgrq;
    @Basic
    @Column(name = "BGSHGH")
    private String bgshgh;
    @Basic
    @Column(name = "FZJC")
    private Boolean fzjc;
    @Basic
    @Column(name = "SSSQDH")
    private Integer sssqdh;
    @Basic
    @Column(name = "TSGR")
    private String tsgr;
    @Basic
    @Column(name = "YWSM")
    private Byte ywsm;
    @Basic
    @Column(name = "HWHC")
    private Byte hwhc;
    @Basic
    @Column(name = "GWSJ")
    private Byte gwsj;
    @Basic
    @Column(name = "BLWJS")
    private Byte blwjs;
    @Basic
    @Column(name = "QCGH")
    private String qcgh;
    @Basic
    @Column(name = "QCSJ")
    private Date qcsj;
    @Basic
    @Column(name = "LYMZZYH")
    private String lymzzyh;
    @Basic
    @Column(name = "JGID")
    private String jgid;
    @Basic
    @Column(name = "JJBZ")
    private Byte jjbz;
    @Basic
    @Column(name = "SQLXMC")
    private String sqlxmc;
    @Basic
    @Column(name = "BBLY")
    private Byte bbly;

    public long getJlxh() {
        return jlxh;
    }

    public void setJlxh(long jlxh) {
        this.jlxh = jlxh;
    }

    public byte getMzzy() {
        return mzzy;
    }

    public void setMzzy(byte mzzy) {
        this.mzzy = mzzy;
    }

    public String getMzhm() {
        return mzhm;
    }

    public void setMzhm(String mzhm) {
        this.mzhm = mzhm;
    }

    public Long getZyh() {
        return zyh;
    }

    public void setZyh(Long zyh) {
        this.zyh = zyh;
    }

    public String getZyhm() {
        return zyhm;
    }

    public void setZyhm(String zyhm) {
        this.zyhm = zyhm;
    }

    public String getBrxm() {
        return brxm;
    }

    public void setBrxm(String brxm) {
        this.brxm = brxm;
    }

    public String getBrch() {
        return brch;
    }

    public void setBrch(String brch) {
        this.brch = brch;
    }

    public Byte getBrxb() {
        return brxb;
    }

    public void setBrxb(Byte brxb) {
        this.brxb = brxb;
    }

    public String getBrnl() {
        return brnl;
    }

    public void setBrnl(String brnl) {
        this.brnl = brnl;
    }

    public String getBrjg() {
        return brjg;
    }

    public void setBrjg(String brjg) {
        this.brjg = brjg;
    }

    public String getBrzy() {
        return brzy;
    }

    public void setBrzy(String brzy) {
        this.brzy = brzy;
    }

    public String getBrhy() {
        return brhy;
    }

    public void setBrhy(String brhy) {
        this.brhy = brhy;
    }

    public Integer getBrks() {
        return brks;
    }

    public void setBrks(Integer brks) {
        this.brks = brks;
    }

    public String getKsmc() {
        return ksmc;
    }

    public void setKsmc(String ksmc) {
        this.ksmc = ksmc;
    }

    public Integer getBrbq() {
        return brbq;
    }

    public void setBrbq(Integer brbq) {
        this.brbq = brbq;
    }

    public String getBqmc() {
        return bqmc;
    }

    public void setBqmc(String bqmc) {
        this.bqmc = bqmc;
    }

    public String getSjdw() {
        return sjdw;
    }

    public void setSjdw(String sjdw) {
        this.sjdw = sjdw;
    }

    public String getBszy() {
        return bszy;
    }

    public void setBszy(String bszy) {
        this.bszy = bszy;
    }

    public String getHysj() {
        return hysj;
    }

    public void setHysj(String hysj) {
        this.hysj = hysj;
    }

    public String getLczd() {
        return lczd;
    }

    public void setLczd(String lczd) {
        this.lczd = lczd;
    }

    public String getGdy() {
        return gdy;
    }

    public void setGdy(String gdy) {
        this.gdy = gdy;
    }

    public String getLsBljy() {
        return lsBljy;
    }

    public void setLsBljy(String lsBljy) {
        this.lsBljy = lsBljy;
    }

    public Date getLsJyrq() {
        return lsJyrq;
    }

    public void setLsJyrq(Date lsJyrq) {
        this.lsJyrq = lsJyrq;
    }

    public String getLsJyhs() {
        return lsJyhs;
    }

    public void setLsJyhs(String lsJyhs) {
        this.lsJyhs = lsJyhs;
    }

    public String getLsJyzd() {
        return lsJyzd;
    }

    public void setLsJyzd(String lsJyzd) {
        this.lsJyzd = lsJyzd;
    }

    public String getLxfs() {
        return lxfs;
    }

    public void setLxfs(String lxfs) {
        this.lxfs = lxfs;
    }

    public String getCxsj() {
        return cxsj;
    }

    public void setCxsj(String cxsj) {
        this.cxsj = cxsj;
    }

    public Date getYjrq() {
        return yjrq;
    }

    public void setYjrq(Date yjrq) {
        this.yjrq = yjrq;
    }

    public Date getKgrq() {
        return kgrq;
    }

    public void setKgrq(Date kgrq) {
        this.kgrq = kgrq;
    }

    public String getBz() {
        return bz;
    }

    public void setBz(String bz) {
        this.bz = bz;
    }

    public Date getSsrq() {
        return ssrq;
    }

    public void setSsrq(Date ssrq) {
        this.ssrq = ssrq;
    }

    public String getSsth() {
        return ssth;
    }

    public void setSsth(String ssth) {
        this.ssth = ssth;
    }

    public String getZdys() {
        return zdys;
    }

    public void setZdys(String zdys) {
        this.zdys = zdys;
    }

    public String getBbmc() {
        return bbmc;
    }

    public void setBbmc(String bbmc) {
        this.bbmc = bbmc;
    }

    public Date getSqrq() {
        return sqrq;
    }

    public void setSqrq(Date sqrq) {
        this.sqrq = sqrq;
    }

    public Long getSqks() {
        return sqks;
    }

    public void setSqks(Long sqks) {
        this.sqks = sqks;
    }

    public String getSqksmc() {
        return sqksmc;
    }

    public void setSqksmc(String sqksmc) {
        this.sqksmc = sqksmc;
    }

    public Date getDyrq() {
        return dyrq;
    }

    public void setDyrq(Date dyrq) {
        this.dyrq = dyrq;
    }

    public String getDygh() {
        return dygh;
    }

    public void setDygh(String dygh) {
        this.dygh = dygh;
    }

    public Byte getBbsl() {
        return bbsl;
    }

    public void setBbsl(Byte bbsl) {
        this.bbsl = bbsl;
    }

    public Byte getSqlx() {
        return sqlx;
    }

    public void setSqlx(Byte sqlx) {
        this.sqlx = sqlx;
    }

    public String getSjys() {
        return sjys;
    }

    public void setSjys(String sjys) {
        this.sjys = sjys;
    }

    public Date getSjrq() {
        return sjrq;
    }

    public void setSjrq(Date sjrq) {
        this.sjrq = sjrq;
    }

    public String getHchs() {
        return hchs;
    }

    public void setHchs(String hchs) {
        this.hchs = hchs;
    }

    public Date getHcrq() {
        return hcrq;
    }

    public void setHcrq(Date hcrq) {
        this.hcrq = hcrq;
    }

    public String getSjgy() {
        return sjgy;
    }

    public void setSjgy(String sjgy) {
        this.sjgy = sjgy;
    }

    public Date getSjgysj() {
        return sjgysj;
    }

    public void setSjgysj(Date sjgysj) {
        this.sjgysj = sjgysj;
    }

    public String getSjhs() {
        return sjhs;
    }

    public void setSjhs(String sjhs) {
        this.sjhs = sjhs;
    }

    public Date getSjhssj() {
        return sjhssj;
    }

    public void setSjhssj(Date sjhssj) {
        this.sjhssj = sjhssj;
    }

    public String getJsgh() {
        return jsgh;
    }

    public void setJsgh(String jsgh) {
        this.jsgh = jsgh;
    }

    public Date getJsrq() {
        return jsrq;
    }

    public void setJsrq(Date jsrq) {
        this.jsrq = jsrq;
    }

    public String getFknr() {
        return fknr;
    }

    public void setFknr(String fknr) {
        this.fknr = fknr;
    }

    public String getFkgh() {
        return fkgh;
    }

    public void setFkgh(String fkgh) {
        this.fkgh = fkgh;
    }

    public Date getFkrq() {
        return fkrq;
    }

    public void setFkrq(Date fkrq) {
        this.fkrq = fkrq;
    }

    public String getJcjg() {
        return jcjg;
    }

    public void setJcjg(String jcjg) {
        this.jcjg = jcjg;
    }

    public Long getSsbh() {
        return ssbh;
    }

    public void setSsbh(Long ssbh) {
        this.ssbh = ssbh;
    }

    public String getBbbw() {
        return bbbw;
    }

    public void setBbbw(String bbbw) {
        this.bbbw = bbbw;
    }

    public Date getSqddyrq() {
        return sqddyrq;
    }

    public void setSqddyrq(Date sqddyrq) {
        this.sqddyrq = sqddyrq;
    }

    public String getSqddygh() {
        return sqddygh;
    }

    public void setSqddygh(String sqddygh) {
        this.sqddygh = sqddygh;
    }

    public String getSqys() {
        return sqys;
    }

    public void setSqys(String sqys) {
        this.sqys = sqys;
    }

    public Date getSqysrq() {
        return sqysrq;
    }

    public void setSqysrq(Date sqysrq) {
        this.sqysrq = sqysrq;
    }

    public String getSjysxm() {
        return sjysxm;
    }

    public void setSjysxm(String sjysxm) {
        this.sjysxm = sjysxm;
    }

    public Short getSybz() {
        return sybz;
    }

    public void setSybz(Short sybz) {
        this.sybz = sybz;
    }

    public String getYjsqdxh() {
        return yjsqdxh;
    }

    public void setYjsqdxh(String yjsqdxh) {
        this.yjsqdxh = yjsqdxh;
    }

    public String getHkdz() {
        return hkdz;
    }

    public void setHkdz(String hkdz) {
        this.hkdz = hkdz;
    }

    public String getZzkqk() {
        return zzkqk;
    }

    public void setZzkqk(String zzkqk) {
        this.zzkqk = zzkqk;
    }

    public Integer getKqbgfs() {
        return kqbgfs;
    }

    public void setKqbgfs(Integer kqbgfs) {
        this.kqbgfs = kqbgfs;
    }

    public String getJbgyg() {
        return jbgyg;
    }

    public void setJbgyg(String jbgyg) {
        this.jbgyg = jbgyg;
    }

    public Date getJbgsj() {
        return jbgsj;
    }

    public void setJbgsj(Date jbgsj) {
        this.jbgsj = jbgsj;
    }

    public String getBbjkfk() {
        return bbjkfk;
    }

    public void setBbjkfk(String bbjkfk) {
        this.bbjkfk = bbjkfk;
    }

    public Byte getSfdh() {
        return sfdh;
    }

    public void setSfdh(Byte sfdh) {
        this.sfdh = sfdh;
    }

    public Date getBgrq() {
        return bgrq;
    }

    public void setBgrq(Date bgrq) {
        this.bgrq = bgrq;
    }

    public String getBgshgh() {
        return bgshgh;
    }

    public void setBgshgh(String bgshgh) {
        this.bgshgh = bgshgh;
    }

    public Boolean getFzjc() {
        return fzjc;
    }

    public void setFzjc(Boolean fzjc) {
        this.fzjc = fzjc;
    }

    public Integer getSssqdh() {
        return sssqdh;
    }

    public void setSssqdh(Integer sssqdh) {
        this.sssqdh = sssqdh;
    }

    public String getTsgr() {
        return tsgr;
    }

    public void setTsgr(String tsgr) {
        this.tsgr = tsgr;
    }

    public Byte getYwsm() {
        return ywsm;
    }

    public void setYwsm(Byte ywsm) {
        this.ywsm = ywsm;
    }

    public Byte getHwhc() {
        return hwhc;
    }

    public void setHwhc(Byte hwhc) {
        this.hwhc = hwhc;
    }

    public Byte getGwsj() {
        return gwsj;
    }

    public void setGwsj(Byte gwsj) {
        this.gwsj = gwsj;
    }

    public Byte getBlwjs() {
        return blwjs;
    }

    public void setBlwjs(Byte blwjs) {
        this.blwjs = blwjs;
    }

    public String getQcgh() {
        return qcgh;
    }

    public void setQcgh(String qcgh) {
        this.qcgh = qcgh;
    }

    public Date getQcsj() {
        return qcsj;
    }

    public void setQcsj(Date qcsj) {
        this.qcsj = qcsj;
    }

    public String getLymzzyh() {
        return lymzzyh;
    }

    public void setLymzzyh(String lymzzyh) {
        this.lymzzyh = lymzzyh;
    }

    public String getJgid() {
        return jgid;
    }

    public void setJgid(String jgid) {
        this.jgid = jgid;
    }

    public Byte getJjbz() {
        return jjbz;
    }

    public void setJjbz(Byte jjbz) {
        this.jjbz = jjbz;
    }

    public String getSqlxmc() {
        return sqlxmc;
    }

    public void setSqlxmc(String sqlxmc) {
        this.sqlxmc = sqlxmc;
    }

    public Byte getBbly() {
        return bbly;
    }

    public void setBbly(Byte bbly) {
        this.bbly = bbly;
    }
}

4.5、service类

新建service目录

package com.ssh.service;

import com.ssh.model.SmBlsqdEntity;

import java.util.List;

public interface SmBlsqdService {
    public List<SmBlsqdEntity> getSmBlsqdList();
}

4.6、service.impl类

新建service下impl目录

package com.ssh.service.impl;

import com.ssh.dao.SmBlsqdDao;
import com.ssh.model.SmBlsqdEntity;
import com.ssh.service.SmBlsqdService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class SmBlsqdServiceImpl implements SmBlsqdService {

    @Autowired
    private SmBlsqdDao smBlsqdDao;
    @Override
    public List<SmBlsqdEntity> getSmBlsqdList() {
        return smBlsqdDao.getSmBlsqdList();
    }
}

4.7、resources.spring(Mapping)(5.配置数据库完后,自动生成)

4.8、webapp.index.jsp 

<%--
  Created by IntelliJ IDEA.
  User: kesteler
  Date: 2024-12-02
  Time: 15:00
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Title</title>
</head>
<body>
<h1>新增申请单</h1>
<s:actionmessage/>
<s:form action="smBlsqd_save" method="post" namespace="/" theme="simple">
    <table width="600px">
        <tr>
            <th>标本名称</th>
            <td><s:textfield name="bbmc"/></td>
            <td><font color="red"><s:fielderror fieldName="bbmc"/></font></td>
        </tr>
        <tr>
            <th>住院号码</th>
            <td><s:textfield name="zyhm"/></td>
            <td><font color="red"><s:fielderror fieldName="zyhm"/></font></td>
        </tr>
        <tr>
            <th>病人姓名</th>
            <td><s:textfield name="brxm"/></td>
            <td><font color="red"><s:fielderror fieldName="brxm"/></font></td>
        </tr>
        <tr>
            <th colspan="2">
                <input type="submit" value="保存"/>
            </th>
            <th> </th>
        </tr>
    </table>
</s:form>
</body>
</html>

5.配置数据库

  • 配置数据库后测试连接是否成功,若成功后点击确定

 这里有个地方要注意,填了sid后,url那里显示的是1521:orcl,这时候你去测试连接是失败的,需要手动改成'/'才能测试通过。

  • 点击窗口中的Persistence

在IDEA左侧找到Persistence,如果没在左侧列表显示,可以去‘‘...’’里查找

  • 右键项目,然后点击Generate Persistence Mapping,选择By Database Schema

 

  • 选择数据源,配置实体类包,选择要生成的实体类(其中日期类型的只能手动修改为java.util.Date),然后点击OK

  • 手动在resources下面创建包,来管理.hbm.xml

新建spring文件夹,将SmBlsqdEntity.hbm.xml移动到spring文件夹下

6.设置Tomcat

 

这里遇到一个问题,提示未添加工件,这时候去项目结构中去添加工件,即可解决问题。

 

运行tomcat时又遇到报错,去localhost的log里查看报错内容,提示 

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'smBlsqdDaoImpl' defined in file [D:\老F\My Project\SSH\SSHTest\out\artifacts\SSHTest_war_exploded\WEB-INF\classes\com\ssh\dao\impl\SmBlsqdDaoImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.orm.hibernate4.HibernateTemplate' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

该提示意思就是找不到hibernate4的bean,前面我们刚纠正了,找不到HibernateTemplate的bean的报错,看来还是要去Spring.xml里去看。但是bean肯定是添加了的,这时,我们发现报错的是hibernate4,我们Spring.xml中的是hibernate5,这时回到smBlsqdDaoImpl.java,发现引用的确实是hibernate4,这时将hibernate4改成hibernate5,项目即可正常运行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值