1. 程式人生 > >Spring Boot 搭建應用實現登陸例項,頁面使用bootstrap

Spring Boot 搭建應用實現登陸例項,頁面使用bootstrap

Spring boot 搭建web應用集成了thymeleaf模板實現登陸 
下面是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>exam</groupId>
      <artifactId>examSystem</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>
    <!--spring boot 的基本配置 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.7.RELEASE</version>
    </parent>
    <!--基本配置,設定編碼,入口,jdk版本 -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <start-class>com.study.App</start-class>
        <java.version>1.7</java.version>
        <shiro.version>1.3.0</shiro.version>
    </properties>

    <!-- 設定編譯 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <dependencies>
                </dependencies>
            </plugin>
        </plugins>
    </build>


    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--jpa的jar包 ,操作資料庫的,類似hibernate-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!--thymeleaf模板jar-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!--mysql驅動-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- 新增restfull的支援  -->
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>net.bull.javamelody</groupId>
            <artifactId>javamelody-core</artifactId>
            <version>1.53.0</version>
        </dependency>
        <!-- 新增 druid 資料來源連線池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.25</version>
        </dependency>

        <!-- 新增許可權認證-->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>${shiro.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring</artifactId>
            <version>${shiro.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-web</artifactId>
            <version>${shiro.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-ehcache</artifactId>
            <version>${shiro.version}</version>
        </dependency>
        <!--thymeleaf 和 shiro 的整合 -->
        <dependency>
            <groupId>com.github.theborakompanioni</groupId>
            <artifactId>thymeleaf-extras-shiro</artifactId>
            <version>1.2.1</version>
        </dependency>
    </dependencies>
</project>

主入口main方法

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * Created by on 2016/12/8.
 */
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class App extends SpringBootServletInitializer {


    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

}

登陸頁提交表單程式碼,

  <form class="form-signin" role="form" th:action="@{/user/login}"  th:method="post">
        <input type="text" class="form-control" placeholder="使用者名稱"  required="required"  name="userName"  />
        <input type="password" class="form-control" placeholder="密碼" required="required"  name="passwprd" />
        <button class="btn btn-lg btn-warning btn-block" type="submit">登入</button>
        <label class="checkbox">
            <input type="checkbox" value="remember-me" /> 記住我
        </label>
    </form>

Controller 程式碼

package com.study.system.contrller;

import com.study.model.contrller.BaseContrller;
import com.study.model.po.User;
import com.study.system.services.UserServices;
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;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;


/**
 *
 * 使用者管理
 * Created by on 2016/12/12.
 */

@Controller
@RequestMapping(value = "/user")
public class UserContrller extends BaseContrller {

    @RequestMapping(value="/login",method= RequestMethod.POST)
    public String login(User user){
        try{
            if(userServices.hasUser(user)){
                return "redirect:/user/index";
            }else{
                return "redirect:/";
            }
        }catch (Exception e){
            logger.error("登陸失敗:"+e,e);
        }
        return  "redirect:/";
    }

    @RequestMapping(value="/index",method= RequestMethod.GET)
    public String index(){
        try{

        }catch (Exception e){
            logger.error("登陸失敗:"+e,e);
        }
        return "page/index/index";
    }

    @Autowired
    private UserServices userServices;

}

其中 UserServices 為業務介面。BaseContrller為自己封裝