基於SSM框架的Web項目(二)

通過上一篇文章,我們已經大致搭建好了spring的框架結構,並且能通過配置bean,執行單元測試成功,接下來就是配置數據源以及整合SSM了。

一、配置數據源

在main包下的resources包下創建如下幾個文件:

並且配置好安裝好的MySQL的各項參數,其中很多參數筆者這裏沒有用,不過有要求的可以配置這些參數。

#db config
mysql.driverClass=com.mysql.jdbc.Driver
mysql.jdbcUrl=jdbc:mysql://localhost:3306/online_test?useUnicode=true&characterEncoding=UTF-8
mysql.user=root
mysql.password=soraSR11
mysql.minPoolSize=5
mysql.maxPoolSize=500
mysql.initialPoolSize=10
mysql.maxIdleTime=60
mysql.acquireIncrement=5
mysql.maxStatements=0
mysql.idleConnectionTestPeriod=60
mysql.acquireRetryAttempts=30
mysql.breakAfterAcquireFailure=false
mysql.testConnectionOnCheckout=false

連接數據庫的各個參數配置好了,就是配置mybatis了:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 配置全局屬性 -->
    <settings>
        <!-- 使用jdbc的getGeneratedKeys獲取數據庫自增主鍵值 -->
        <setting name="useGeneratedKeys" value="true" />

        <!-- 使用列別名替換列名 默認:true -->
        <setting name="useColumnLabel" value="true" />

        <!-- 開啓駝峯命名轉換:Table{create_time} -> Entity{createTime} -->
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>
</configuration>

因爲筆者mapper接口和xml文件在同一個包下,所以關於xml文件位置可以不配置,mybatis會自動掃描mapper下的xml文件。

然後在spring配置文件中配置dataSource這個bean(爲了方便讀者閱讀,關於視圖的一些配置也一併在下面貼出來):

<?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:mvc="http://www.springframework.org/schema/mvc"
       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/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <!-- 配置整合mybatis過程 -->
    <!-- 1.配置數據庫相關參數properties的屬性:${url} -->
    <context:property-placeholder location="classpath:db.properties" />

    <!-- 2.數據庫連接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" >
        <!-- 配置連接池屬性 -->
        <property name="driverClass" value="${mysql.driverClass}" />
        <property name="jdbcUrl" value="${mysql.jdbcUrl}" />
        <property name="user" value="${mysql.user}" />
        <property name="password" value="${mysql.password}" />
    </bean>

    <!-- 3.配置SqlSessionFactory對象 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入數據庫連接池 -->
        <property name="dataSource" ref="dataSource" />
        <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
        <property name="configLocation" value="classpath:mybatis-config.xml" />
        <!-- 掃描entity包 使用別名 -->
        <property name="typeAliasesPackage" value="com.alice.entity" />
        <!-- 掃描sql配置文件:mapper需要的xml文件 -->
        <property name="mapperLocations" value="classpath:/com/alice/mapper/*Mapper.xml" />
    </bean>

    <!-- 4.配置掃描Dao接口包,動態實現Dao接口,注入到spring容器中 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        <!-- 給出需要掃描Dao接口包 -->
        <property name="basePackage" value="com.alice.mapper" />
    </bean>

    <!--配置spring-service-->
    <!-- 掃描service包下所有使用註解的類型 -->
    <context:component-scan base-package="com.alice" />


    <!-- 配置事務管理器 -->
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 注入數據庫連接池 -->
        <property name="dataSource" ref="dataSource" />
    </bean>


    <!-- 配置基於註解的聲明式事務 -->
    <!--    <tx:annotation-driven transaction-manager="transactionManager" />-->

    <!--配置spring-web-->
    <!-- 配置SpringMVC -->
    <!-- 1.開啓SpringMVC註解模式 -->
    <!-- 簡化配置:
        (1)自動註冊DefaultAnootationHandlerMapping,AnotationMethodHandlerAdapter
        (2)提供一些列:數據綁定,數字和日期的format @NumberFormat, @DateTimeFormat, xml,json默認讀寫支持
    -->
    <mvc:annotation-driven />


    <!-- 2.靜態資源默認servlet配置
        (1)加入對靜態資源的處理:js,gif,png
        (2)允許使用"/"做整體映射
     -->
    <mvc:default-servlet-handler/>

    <!-- 3.配置jsp 顯示ViewResolver -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

這些配置好了,就是配置web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>ssm</display-name>
  <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>

  <!--Spring核心監聽器  -->
  <!--在服務器啓動時加載Spring容器,且只會加載一次  -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring.xml</param-value>
  </context-param>

  <!--配置Springmvc核心控制器  -->
  <servlet>
    <servlet-name>springMvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring.xml</param-value>
    </init-param>
  </servlet>

  <!-- Map all requests to the DispatcherServlet for handling -->
  <servlet-mapping>
    <servlet-name>springMvc</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>

  <!--配置由Spring 提供的針對中文亂碼的編碼過濾器 -->
  <!-- 編碼過濾器 -->
  <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>

</web-app>

這些配置好了之後,讀者就可以運行Tomcat,成功啓動之後,瀏覽器打開默認頁面index,如下圖:

這是首頁圖:


點擊的登錄按鈕之後,跳轉的頁面:

下面貼出倆個JSP頁面的代碼:

index.jsp頁面代碼如下(注意表單action的地址以及後面後端controller層的mapping):

<%@ page 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 style="text-align: center">
    <img src="" height="600" width="100%" />
    <form action="http://localhost:8080/sybonlinetestsystem_war_exploded/login/test.action" method="post">
        <div style="margin: 0 auto">
            <label>用戶名:</label>
            <input type="text" />
            <label>密  碼:</label>
            <input type="password" />
            <input type="submit" value="登 錄" style="display: inline-block; width: 100px" />
        </div>
    </form>
</body>
</html>

登錄成功測試頁面代碼如下:

<%--
  Created by IntelliJ IDEA.
  User: SoraHoro
  Date: 2019/3/13 0013
  Time: 22:12
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>登錄成功頁面,測試JSP提交按鈕訪問服務器</h1>
</body>
</html>

最後則是服務器端Controller層的代碼,服務端Controller通過Spring的前端控制器處理對應的請求(該Controller類裏設置了倆個requestMapping,細心的讀者可以發現,這兩個地址拼接起來就是表單提交action的地址的最後部分):

package com.alice.controller;

import com.alice.service.IUserLoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * 用戶登錄接口
 */
@Controller
@RequestMapping("/login")
public class UserLoginController {

    @Autowired
    private IUserLoginService IUserLoginService;

    @RequestMapping(value="/test",method= RequestMethod.POST)
    public String test() {
        System.out.println("調用接口成功");
        return "manage";
    }

}

通過這些,相信讀者應該就能大致瞭解如何通過前端表單按鈕訪問後端服務端的Controller層了,下面一章將講解關於JSP頁面渲染後端數據並返回動態數據的步驟。

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