程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> SSM框架的整合思路&功能實現,SSM框架整合思路

SSM框架的整合思路&功能實現,SSM框架整合思路

編輯:JAVA綜合教程

SSM框架的整合思路&功能實現,SSM框架整合思路


這是我第一篇博客,關於SSM框架的整合思路以及簡單功能實現。

首先,最近剛剛學習Spring+SpringMVC+Mybatis,在開發時遇到形形色色的問題,周遭人也為我提供了一些思路,我會一點點整理梳理,發上來,供自己溫習,也可以分享給大家,希望有一個全面的理解,最好能夠幫助到大家。

需求:開發屬於自己的博客系統,要有登錄注冊,博客的增刪改查等各種功能。

開發環境:IDEA,MySQL,JDK1.8等(不贅述)

首先對SSM框架有一個相應的認識。

SpringMVC:主要進行頁面的 請求接受與響應。

  組件包括:前端控制器,處理器映射器,處理器適配器,視圖解析器,處理器Handler,視圖View。其中,只有處理器Handler和視圖View需要程序員開發。

    View是一個接口,實現類支持不同的View類型(jsp,freemarker,pdf等)

    另外,處理器Handler就是Controller。

———————————————————————————我是分割線————————————————————————

Service層功能:注入dao,調用dao方法

——————————————————————我是分割線,對又是我————————————————————————

Mybatis:開始Mybatis時要記住最終目的,我們要對數據庫的數據進行操作,所以你只需要記住,他的使用很方便,很方便,方便,即可。(詳細講解Myabtis配置等要一整天,不贅述)

  so,最後我們的開發思路就很明確了,從頁面獲取數據到Controller層,然後傳遞到service層進行相關操作(調用方法等),然後再傳遞到持久層對數據庫進行相應增刪改查即可。這樣一說,是不是就明確了很多?

  下面的代碼我只截取片段,只為了梳理我的思路。

首先要准備的一定是頁面。我做一個簡單的登錄頁面,頁面片段如下:

<form action="/login" class="form-signin" method="post">
  <h2 class="form-signin-heading">用戶登錄</h2>
  <input type="text" name="username" class="form-control" placeholder="用戶名" required="" autofocus="">
  <input type="password" name="pass_word" class="form-control" placeholder="密碼" required="">
  <div class="checkbox">
    <label>
      <input type="checkbox" value="remember-me"> 記住我
    </label>
  </div>
  <button class="btn btn-primary btn-block" type="submit">確定</button><br>
  <a href="/templates/register.jsp"><button class="btn btn-primary btn-block" type="button">注冊</button></a>
</form>

 

頁面有了,數據庫也應該有,id,username,password等字段。並且准備好model(pojo)的相關字段get/set。片段如下:

public class User {
    private BigInteger id;
    private String username;
    private String pass_word;
    private String email;


    public BigInteger getId() {
        return id;
    }

    public void setId(BigInteger id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPass_word() {
        return pass_word;
    }

    public void setPass_word(String pass_word) {
        this.pass_word = pass_word;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }


}

同時要准備好sql語句(我們要對數據庫操作,sql語句是不可少的)放置在xml文件中,以及相應的java文件中。

以登錄為例,xml和相應mapper.java如下:

    <!--用戶登錄-->
    <select id="login" parameterType="com.myblogs.model.User" resultType="int">
        SELECT count(*) FROM user WHERE username =#{username} AND pass_word = #{pass_word}
    </select>
    /**
     * 用戶登錄
     */
    int login(User user);

要注意,輸入/輸出類型,名稱等要一致。同時xml和相關mapper的文件目錄要一致,比如都要是com.myblogs.mapper目錄下

我說一下我的sql語句思路。count(*)是統計數字,當賬號密碼和數據庫的對上時,最少有一條記錄。那我就拿獲取到的記錄數來判斷是否登錄成功!

這樣,持久層就做好了,特別快,下面按照順序是什麼?業務層。也就是要對之前寫的mapper文件方法做調用等。

需要一個service接口和實現類,也就是serviceimpl.java,由於service接口和mapper文件內容一致,可以不寫,直接寫接口實現類。我的實現類內容如下:

    @Autowired
    private UserMapper userMapper;
    //用戶登錄
    int login(User user){
       int count=userMapper.login(user);
        if (count!=0){
            return 1;
        }
        return 0;
    }

在這裡,我要實現判斷。數據庫得到的記錄數字,記得之前的count(*)嗎?得到的數據,如果返回的int不等於0,說明有數據獲取到,也就是登錄成功(頁面輸入的用戶名密碼和數據庫對上了)反之則表示登錄失敗,用戶名或者密碼有錯誤,沒對上。所以在這一層做了一個判斷。

 

對的,service層也寫好了,接下來呢?就是寫Controller層,就是之前說的Handler(重申:兩者是一個意思)

 @Autowired
    UserMapper userMapper;

    @RequestMapping("/login")
    public String loginPageShow(){

        return "login";
    }
    @RequestMapping(value = "/login",method = RequestMethod.POST)
    public String loginPage(User user, HttpSession session){
        int count=userMapper.login(user);
        if (count==1){
            session.setAttribute("username",user.getUsername());
            return "loginsuccess";
        }
        return "login";
    }

登錄成功返回loginsuccess頁面,登錄失敗繼續返回login頁面,重新輸用戶名密碼。相應的頁面上也要有這些字段,jsp文件在前面。

然後,運行,改bug,成功!一個簡單的登錄就實現了!!!!!!

效果如下圖:

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved