基於SSM的後臺管理系統總結


資源地址
首先分享自己的成果,在這裏給出項目的資源鏈接:
https://github.com/capriciousness/tourism_management.git

SSM環境搭建

環境準備

1.1 數據庫與表結構

創建用戶與授權

數據庫我們使用Oracle Oracle 爲每個項目創建單獨user,oracle數據表存放在表空間下,每個用戶有獨立表空間

  • 創建用戶及密碼:
語法[創建用戶]: create user 用戶名 identified by 口令[即密碼]; 
例子: create user test identified by test;    
  • 授權
語法: grant connect, resource to 用戶名; 
例子: grant connect, resource to 
  • 連接oracle數據庫

PL/SQL Developer是一個集成開發環境,專門面向Oracle數據庫存儲程序單元的開發PL/SQL Developer側重於易 用性、代碼品質和生產力,充分發揮Oracle應用程序開發過程中的主要優勢。
在這裏插入圖片描述

  • 創建用戶及授權
    a) 創建用戶
    在這裏插入圖片描述
    b) 授權
    在這裏插入圖片描述
    對象權限是指針對於某一張表的操作權限,系統權限是指對錶的CRUD操作權限, 角色權限是系統權限的集合,我們設置 時,一般是設置角色權限,設置resource與connect

創建表

CREATE TABLE product(

id varchar2(32) default SYS_GUID() PRIMARY KEY,

productNum VARCHAR2(50) NOT NULL,

productName VARCHAR2(50),

cityName VARCHAR2(50),

DepartureTime timestamp,

productPrice Number,

productDesc VARCHAR2(500),

productStatus INT,

CONSTRAINT product UNIQUE (id, productNum)

)

insert into PRODUCT (id, productnum, productname, cityname, departuretime, productprice, productdesc, productstatus)

values ('676C5BD1D35E429A8C2E114939C5685A', 'itcast-002', '北京三日遊', '北京', to_timestamp('10-10-2018 10:10:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 1200, '不錯的旅行', 1);

insert into PRODUCT (id, productnum, productname, cityname, departuretime, productprice, productdesc, productstatus)

values ('12B7ABF2A4C544568B0A7C69F36BF8B7', 'itcast-003', '上海五日遊', '上海', to_timestamp('25-04-2018 14:30:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 1800, '魔都我來了', 0);

insert into PRODUCT (id, productnum, productname, cityname, departuretime, productprice, productdesc, productstatus)

values ('9F71F01CB448476DAFB309AA6DF9497F', 'itcast-001', '北京三日遊', '北京', to_timestamp('10-10-2018 10:10:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 1200, '不錯的旅行', 1);

1.2 maven工程搭建(pom)

<?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>com.itheima.heima_ssm</groupId>
    <artifactId>heima_ssm</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <spring.version>5.0.2.RELEASE</spring.version>
        <slf4j.version>1.6.6</slf4j.version>
        <log4j.version>1.2.12</log4j.version>
        <mysql.version>5.1.32</mysql.version>
        <mybatis.version>3.4.5</mybatis.version>
        <spring.security.version>5.0.1.RELEASE</spring.security.version>
    </properties>

    <dependencies>        <!-- spring -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.6.8</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</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-context-support</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-orm</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-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>

        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>        <!-- log start -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>        <!-- log end -->

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>${spring.security.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>${spring.security.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>${spring.security.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
            <version>${spring.security.version}</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>

        <dependency>
            <groupId>javax.annotation</groupId>
            <artifactId>jsr250-api</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.5</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                        <showWarnings>true</showWarnings>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    <modules>
        <module>heima_ssm_dao</module>
        <module>heima_ssm_service</module>
        <module>heima_ssm_domain</module>
        <module>heima_ssm_utils</module>
        <module>heima_ssm_web</module>
    </modules>


</project>

1.3編寫實體類

public class Product {

private String id; // 主鍵

private String productNum; // 編號 唯一

private String productName; // 名稱

private String cityName; // 出發城市

private Date departureTime; // 出發時間

private String departureTimeStr;

private double productPrice; // 產品價格

private String productDesc; // 產品描述

private Integer productStatus; // 狀態 0 關閉 1 開啓 private String productStatusStr;

}

編寫接口

  • 業務
public interface IProductService {

List<Product> findAll() throws Exception;

}

  • 持久層
public interface IProductDao {

@Select("select * from product")

List<Product> findAll() throws Exception;

}

SSM整合(web)與產品查詢

在這裏插入圖片描述

Spring環境搭建

2.1.1.編寫Spring配置文件applicationContext.xml

 <!-- 1.開啓註解掃描,管理service和dao -->
    <context:component-scan base-package="com.itheima.ssm.service">
    </context:component-scan>
    <context:component-scan base-package="com.itheima.ssm.dao">
    </context:component-scan>
    
<!--2.Spring與MyBatis整合-->
    <context:property-placeholder location="classpath:db.properties"/>
    <!-- 配置連接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <!-- 把交給IOC管理 SqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!-- 掃描所有Mapper(dao)接口 -->
    <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.itheima.ssm.dao"/>
    </bean>

    <!--3. 配置Spring的聲明式事務管理 -->
    <!-- 配置事務管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

Spring與MyBatis整合
把 mybatis 配置文件(mybatis.xml)中內容配置到 spring 配置文件中 同時,把 mybatis 配置文件的內容清掉。

由於我們使用的是代理 Dao , 的模式,Dao 具體實現類由 MyBatis 使用代理方式創建,所以此時 mybatis 配置文件不能刪。 當我們整合 spring 和 mybatis 時,mybatis 創建的 Mapper.xml 文件名必須和 Dao 接口 文件 名一致

2.1.2.使用註解配置業務層

@Service

public class ProductServiceImpl implements IProductService{

@Override

public List<Product> findAll() throws Exception { return null;

}

}

web.xml 配置

<!--Spring與Spring MVC整合-->
	<!-- 配置加載類路徑的配置文件 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:applicationContext.xml,classpath*:spring-security.xml</param-value>
	</context-param>

<!-- 配置監聽器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<!-- 配置監聽器,監聽request域對象的創建和銷燬的 -->
	<listener>
		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	</listener>

	

<!-- 配置 spring mvc 的核心控制器 -->
	<!-- 前端控制器(加載classpath:springmvc.xml 服務器啓動創建servlet) -->
	<servlet>
		<servlet-name>dispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 配置初始化參數,創建完DispatcherServlet對象,加載springmvc.xml配置文件 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
		<!-- 服務器啓動的時候,讓DispatcherServlet對象創建 -->
		<!-- 配置 servlet 的對象的創建時間點:應用加載時創建。取值只能是非 0 正整數,表示啓動順 序 -->
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>dispatcherServlet</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

	<!-- 解決中文亂碼過濾器 配置 springMVC 編碼過濾器-->
	<filter>
		<filter-name>characterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<!-- 設置過濾器中的屬性值 -->
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<!-- 過濾所有請求 -->
	<filter-mapping>
		<filter-name>characterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- 委派過濾器 權限驗證過濾器-->
	<filter>
		<filter-name>springSecurityFilterChain</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>springSecurityFilterChain</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
</web-app>

Spring MVC 環境搭建

  • 2.2.2.Spring MVC配置文件springmvc.xml
    <!-- 掃描controller的註解,別的不掃描 -->
    <context:component-scan base-package="com.itheima.ssm.controller">
    </context:component-scan>

    <!-- 配置視圖解析器 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- JSP文件所在的目錄 -->
        <property name="prefix" value="/pages/" />
        <!-- 文件的後綴名 -->
        <property name="suffix" value=".jsp" />
    </bean>

    <!-- 設置靜態資源不過濾 -->
    <mvc:resources location="/css/" mapping="/css/**" />
    <mvc:resources location="/img/" mapping="/img/**" />
    <mvc:resources location="/js/" mapping="/js/**" />
    <mvc:resources location="/plugins/" mapping="/plugins/**" />

    <!-- 開啓對SpringMVC註解的支持 -->
    <mvc:annotation-driven />

    <!--
        支持AOP的註解支持,AOP底層使用代理技術
        JDK動態代理,要求必須有接口
        cglib代理,生成子類對象,proxy-target-class="true" 默認使用cglib的方式
    -->
    <aop:aspectj-autoproxy proxy-target-class="true"/>

</beans>
  • 2.2.3.編寫ProductController
@Controller

@RequestMapping("/product")

public class ProductController {

@Autowired

private IProductService productService;

@RequestMapping("/findAll.do")

public ModelAndView findAll() {

return null;

}

}

測試運行

http://localhost:8888/heima_ssm_web/product/findAll.do

  • index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!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=UTF-8"> <title>主頁</title>

</head>

<body>

<a href="${pageContext.request.contextPath}/product/findAll.do">查詢產品信息</a> </body>

</html>

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章