1. 程式人生 > >IDEA maven SSH Oracle 整合實現簡易使用者登入

IDEA maven SSH Oracle 整合實現簡易使用者登入

前言

        a)使用maven搭建一個SSH專案(基本的專案框架)

        b)實現一個簡易的登入程式,涉及到Oracle12c,Hibernate, Spring, Struts

        c)如何使用IDEA2017搭建maven專案

所有的程式碼都可以在 github 下載

一. 前期準備

1)環境

        a)安裝IDEA

        b)安裝Oracle

二. 建立專案

1)IDEA新建maven專案,相關截圖如下:





2)完善目錄結構,主要完善如下:

    2.1)在src/main/java目錄下新建四個包檔案,分別為com.kevin.action, com.kevin.dao, com.kevin.entity, com.kevin.service, com.kevin.util; 建議方式為右擊src/main/java目錄--->New---->Package---->(輸入)com.kevin.action;這四個包檔案主要是用來存放我們的java檔案,其中com.kevin.entity用來存放資料庫對映物件檔案,com.kevin.dao用來存放dao檔案(data access object),com.kevin.service用來存放service檔案(服務類檔案),com.kevin.action用來存放action檔案(供struts2呼叫);這了更好地理解這個目錄結構,這裡補充一下entity, dao ,service, action之間的關係

        2.1.1)entity是hibernate對於資料庫表抽象出來的類,它和資料庫中的表是完全對應的;

        2.1.2)dao類是針對資料庫進行直接操作(呼叫entity);

        2.1.3)service是業務邏輯層(通過呼叫dao層類來進行修改資料庫資料);

        2.1.4)action是表示層,控制頁面的跳轉(負責呼叫業務邏輯的服務元件);

具體可以參考 連結

    2.2)在src/main目錄下建立一個webapp目錄, 在webapp目錄下建立一個WEB-INF目錄,在WEB-INF目錄再建立web.xml檔案,然後在webapp目錄下建立 css, image, js目錄,再建立index.jsp檔案;這個目錄就是我們的tomcat目錄了;

如下是我們的整體的目錄結構

  

三. 修改maven的pom.xml

直接修改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>cn.eli</groupId>
    <artifactId>sshTest</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>3.1.1.RELEASE</spring.version>
        <hibernate.version>3.6.5.Final</hibernate.version>
        <struts2.version>2.3.1</struts2.version>
    </properties>

    <dependencies>
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <!-- spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib-nodep</artifactId>
            <version>2.1_3</version>
        </dependency>


        <!-- hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${hibernate.version}</version>
        </dependency>

        <!-- struts2 -->
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>${struts2.version}</version>
        </dependency>
        <!--config-browser-plugin外掛,使用了這個外掛之後,就可以很方便的瀏覽專案中的所有action及其與 jsp view的對映 -->
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-junit-plugin</artifactId>
            <version>${struts2.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-spring-plugin</artifactId>
            <version>${struts2.version}</version>
        </dependency>

        <!-- 新增對資料來源的支援 -->
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>src\main\webapp</directory>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
        <finalName>com</finalName>
    </build>
</project>

四. Java程式碼層面

1)Entity層

1.1)先建立一個Database,位置在IDEA介面的右面點選Database---->點選介面的加號------->Data Source

-----> Mysql---->根據自己的情況進行配置,相關截圖如下:

這裡補充一點,就是在建立自己的 Oracle 的時候,一定要點選裡面的 Test Connection,確認自己的配置是正確的;


    其中 Name 不用管(任意),Host 是資料庫的主機名,SID 、User、Password 可在你要使用的資料庫中檢視,檢視方法如下:

    開啟 SQL Developer —— 右鍵檢視的資料庫 —— 屬性 —— 左邊選中要檢視的資料庫(system-orcl) —— 右面顯示的是資料庫資訊,其中 SID 就是 IDEA 連線時使用的 SID

 

1.2)操作 Persistence,自動生成 Entity;我們可以看到在 Idea 介面裡面看不到 Persistence 選項(將滑鼠懸浮在左下角的正方形那裡,截圖如下)

    因為一開始使用 maven 來搭建專案,我們並沒有顯示引入 hibernate,所以沒有 Persistence 介面,所以我們作如

下操作來顯示加入 Hibernate;  點選 File -----> Project Structure ------> Modules -----> 點選+ -------->

選擇 Hibernate(如果此處沒有 Hibernate 選項到 File —— Settings —— Plugins —— Hibernate Support

後面的框勾選 —— 重啟後就可以了) ------> Apply ------>OK; 看介面,我們可以看到 Persistence 出現了,

    截圖如下:


1.3)配置 applicationContext.xml,applicationContext.xml 是 spring 的配置檔案,因為在這個專案中我們需要讓 spring 接管 Hibernate 的配置工作,所以我們直接建立 applicationContext.xml 檔案並配置資料庫資訊, 為了方便資料庫資訊的管理,我們同時建立 db.properties。所以我們的操作是在 src/main/resources 下面建立兩個檔案,一個是 applicationContext.xml,一個是 db.properties; 

    1.3.1) db.properties檔案內容如下(是 Oracle 資料庫的配置資訊)

database.database=oracle
database.driverClassName=oracle.jdbc.driver.OracleDriver
database.username=xxx
database.password=xxx
database.show_sql=true
database.url=jdbc:oracle:thin:@localhost:1521:orcl

    1.3.2)applicationContext.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"
       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">
<!-- 引入資料庫配置檔案 db.properties -->
<context:property-placeholder location="classpath:db.properties" />
<!--<bean id="placeholderConfig"
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>classpath:db.properties</value>
    </property>
</bean>-->

<!-- 使用annotation -->
<context:annotation-config/>
<!-- 使用annotation自動註冊bean,並檢查@Controller, @Service, @Repository註解已被注入 -->
<context:component-scan base-package="cn.eli.action"/>
<context:component-scan base-package="cn.eli.service"/>
<context:component-scan base-package="cn.eli.dao" />

<!-- data connection setting -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${database.driverClassName}"></property>
    <property name="jdbcUrl" value="${database.url}"></property>
    <property name="user" value="${database.username}"></property>
    <property name="password" value="${database.password}"></property>
    <!-- 設定資料庫連線池的最大連線數 -->
    <property name="maxPoolSize">
        <value>50</value>
    </property>
    <!-- 設定資料庫連線池的最小連線數 -->
    <property name="minPoolSize">
        <value>5</value>
    </property>
    <!-- 設定資料庫連線池的初始化連線數 -->
    <property name="initialPoolSize">
        <value>5</value>
    </property>
    <!-- 設定資料庫連線池的連線最大空閒時間 -->
    <property name="maxIdleTime">
        <value>20</value>
    </property>
    <!-- c3p0快取Statement的數量數 -->
    <property name="maxStatements">
        <value>50</value>
    </property>
    <!-- 當連線池裡面的連線用完的時候,C3P0一下獲取新的連線數 -->
    <property name="acquireIncrement">
        <value>20</value>
    </property>

</bean>

<!-- hibernate 管理-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <!-- 引用上面設定的資料來源 -->
    <property name="dataSource">
        <ref bean="dataSource" />
    </property>

    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            <prop key="hibernate.autoReconnect">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">true</prop>
            <!-- 解決session關閉問題 -->
            <prop key="hibernate.enable_lazy_load_no_trans">true</prop>
            <prop key="current_session_context_class">thread</prop>

            <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
            <prop key="hibernate.max_fetch_depth">3</prop>
            <prop key="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</prop>
            <prop key="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</prop>
        </props>

    </property>

    <!-- 包掃描的方式載入註解類 -->
    <property name="packagesToScan">
        <list>
            <value>cn.eli.entity</value>
        </list>
    </property>
</bean>

<!-- 用註解來實現事物管理 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
</beans>

    上面是這個專案完成的pom.xml檔案,在這一步主要要配置的是 dataSource 這個 bean 和 sessionFactory 這個bean 這裡有一個要注意的,我們剛建立 applicationContext.xml 的時候,會在編輯介面出現一個黃條,如下

    這個時候我們要點選“Configure application context”然後編輯,apply

    注1:如果在上面的操作中找不到黃條,並且無法看到下面的sessionFactory檔案,不要急接著往下看,注2

1.4) 生成 Entity 類;這個時候,如果上面正確的話,點選 Persistence,會出現如下的介面:

       

    我們右擊sessionFactory--->Generate Persistence Mapping----> By Database Schema; 在Import Database Schema介面進行如下的選擇:

         

    成功的話,可看我們src/main/java/com/kevin/entity下面應該有一個User類

    注2我在這裡使用 Persistence 生成實體類,始終建立不了,因為沒有sessionFactory檔案,

    在建立時缺少 Add to Session Factory


我的辦法是建立一個 hibernate.cfg.xml,操作如下









就會生成相應的實體類,實體類生成後將 hibernate.cfg.xml 檔案刪除即可


2) DAO層程式碼

      為了程式碼的可拓展性,我們把實現與定義分離;在src/main/java/com/kevin/dao下面再建立一個impl包,存放介面的實現類;在dao目錄下新建一個UserDao.java介面類(記住是介面,在選擇型別的時候要選擇介面), 在impl放這個介面的實現類,UserDaoImpl.java

        UserDao.java檔案內容

  1. package com.kevin.dao;  
  2. import com.kevin.entity.User;  
  3. import java.util.List;  
  4. /** 
  5.  * Created by kinthon on 17-6-23. 
  6.  */
  7. publicinterface UserDao {  
  8.     /** 
  9.      * 新增並儲存使用者 
  10.      * @param user 
  11.      */
  12.     publicvoid add(User user);  
  13.     /** 
  14.      * 進行登入 
  15.      */
  16.     publicboolean login(User user);  
  17.     /** 
  18.      * 獲取使用者列表 
  19.      */
  20.     public List getUser();  
  21.     /** 
  22.      * 根據使用者Id獲取使用者資訊 
  23.      * @param id 
  24.      * @return 
  25.      */
  26.     public User getUser(int id);  
  27.     /** 
  28.      * 更新使用者資訊 
  29.      * @param user 
  30.      */
  31.     publicvoid update(User user);  
  32.     /** 
  33.      * 根據使用者id刪除使用者資訊 
  34.      * @param id 
  35.      */
  36.     publicvoid delete(int id);  
  37. }  

        UserDaoImpl.java 內容

  1. package com.kevin.dao.impl;  
  2. 相關推薦

    IDEA maven SSH Oracle 整合實現簡易使用者登入

    前言        a)使用maven搭建一個SSH專案(基本的專案框架)        b)實現一個簡易的登入程式,涉及到Oracle12c,Hibernate, Spring, Struts        c)如何使用IDEA2017搭建maven專案所有的程式碼都可以在

    【原】無腦操作:IDEA + maven + SpringBoot + JPA + Thymeleaf實現CRUD及分頁

    xtend sla lns ase tid item pen element per 一、開發環境: 1、windows 7 企業版 2、IDEA 14 3、JDK 1.8 4、Maven 3.5.2 5、MariaDB 6、SQLYog 二、Maven設

    Maven+SpringMVC+CXF整合實現webservice服務的釋出與呼叫

    今天有時間把之前遺留的內容給寫一下,一直想把webservice服務的釋出整合說一下,但是總是忘記了,最近有做了一些關於這一塊的東西,就總結下,來記錄一下。 簡述: WebService開源框架的選擇, 目前主流的Web Service框架主要有3種: Axis 2, CX

    【原】無腦操作:IDEA + maven + SpringBoot + JPA + EasyUI實現CRUD及分頁

    1 package cn.temptation.web; 2 3 import cn.temptation.dao.PersonDao; 4 import cn.temptation.model.Person; 5 import cn.temptation.util.Type

    Maven SSH初步整合

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins

    (一)git生成ssh-key,實現免密碼登入github

    一 、 切到當前使用者的根目錄,右鍵選擇git bash,設定Git的user name和email: git config --global user.name "這裡換上你的使用者名稱" git config --global user.email "這裡換上你的郵箱"

    ORACLE 11g 實現審計使用者登入登出的詳細記錄

    需求就是需要記錄使用者登陸登出的記錄,包括時間以及連線ip地址以及連線方式等等,這樣有助於跟蹤分析問題,特別是一些人為無意識的dml操作導致資料丟失、資料混亂的問題追蹤,還是非常有效的。大家知道oracle庫開啟了審計audit後,肯定有辦法查到問題,但是審計比較消耗資源,所

    ssh-keygen和ssh-copy-id實現免密登入遠端主機

           ssh免密登入在實際工作中有重要的作用,甚至有的應用部署也必須要免密登入遠端主機,例如hadoop環境搭建。       免密登入,需要先在本機生成公鑰,然後將公鑰拷貝到遠端主機,拷貝的過程,既可以手動(在遠端主機根目錄下建立.ssh目錄,然後將公鑰存入該目錄下

    Windows使用SSH Secure Shell實現免密碼登入Linux的方法以及使用scp2命令免密碼下載檔案

    1.   環境資訊 SSH Secure Shell Client所在的作業系統: Windows7 Linux伺服器以及SSH的版本: [[email protected] ~]$ cat /etc/redhat-release Red HatEnterpr

    在Android中實現簡易登入介面

    Mainactivity佈局檔案 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res

    Linux使用ssh公鑰實現免密碼登入Linux

    [[email protected] ~]# ssh -l root 192.168.1.181The authenticity of host '192.168.1.181 (192.168.1.181)' can't be established.RSA key fingerprint is 

    SSM框架整合-實現CRUD,登入和分頁操作

    二.專案結構:spring+springmvc+mybatis+maven+mysql+freemark+jetty 三.專案介紹:主要實現登入 crud以及分頁效果 1.登入介面 2.主頁 3.新增頁面 4.編輯頁面 四.搭建 1)準備配置

    Spring MVC 學習總結(十一)——IDEA+Maven+多模組實現SSM框架整合

    一、SSM概要 與SSH(Struts/Spring/Hibernate/)一樣,Spring+SpringMVC+MyBatis也有一個簡稱SSM,Spring實現業務物件管理,Spring MVC負責請求的轉發和檢視管理, MyBatis作為資料物件持久化引擎。這樣搭配的優點是:輕量、自由度高、Spri

    Struts2+Spring+Hibernate實現員工管理增刪改查功能(一)之ssh框架整合

    pri support scrip ext ack efault ring src 兩張 前言 轉載請標明出處:http://www.cnblogs.com/smfx1314/p/7795837.html 本項目是我寫的一個練習,目的是回顧ssh框架的整合以及

    01 整合IDEA+Maven+SSM框架的高並發的商品秒殺項目之業務分析與DAO層

    初始 lob 可能 很多 ont 配置 支持 個數 base 作者:nnngu 項目源代碼:https://github.com/nnngu/nguSeckill 這是一個整合IDEA+Maven+SSM框架的高並發的商品秒殺項目。我們將分為以下幾篇文章來進行詳細的講解:

    02 整合IDEA+Maven+SSM框架的高並發的商品秒殺項目之Service層

    狀態 enum枚舉類 post note 序號 設計 發的 連接數據庫 解釋 作者:nnngu 項目源代碼:https://github.com/nnngu/nguSeckill 首先在編寫Service層代碼前,我們應該首先要知道這一層到底是幹什麽的。 Service層

    Maven-ssh整合pom.xml

    SSH整合所需的jar包的pom.xml <!-- 屬性 --> <properties> <spring.version>4.2.4.RELEASE</spring.version> <hibernate.version&

    使用jenkins實現自動化部署的案例記錄:tomcat+svn+maven+ssh+jenkins

    使用jenkins實現自動化部署的案例記錄:tomcat+svn+maven+ssh+jenkins 1.全域性配置,配置專案對應的tomcat伺服器的ssh登入地址,埠,密碼,路徑(寫/即可) 2.2-系統maven配置 3.構建一個maven風格的專案,選擇jdk版本

    使用Intellij IDEAmaven專案中整合mybatis-generator外掛,自動生成程式碼

    1.在dependencies下新增: <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artif

    IDEA+maven+java+TestNG+git+jenkins 第八篇自動化的持續整合

    1、安裝JDK,設定環境變數,這裡就不講了網上都有教程; 2、新建一個maven專案,編寫程式,這裡也不講了前面七篇講過了; 3、安裝jenkins,也很簡單,可以直接安裝在windwos系統上也可安裝到tomcat中還可以安裝到應用伺服器中; 4、在jenkins中安裝相應的外掛,主要