這是我第一篇博客,關(guān)于SSM框架的整合思路以及簡單功能實現(xiàn)。
首先,最近剛剛學(xué)習(xí)Spring+SpringMVC+Mybatis,在開發(fā)時遇到形形色色的問題,周遭人也為我提供了一些思路,我會一點點整理梳理,發(fā)上來,供自己溫習(xí),也可以分享給大家,希望有一個全面的理解,最好能夠幫助到大家。
- 需求:開發(fā)屬于自己的博客系統(tǒng),要有登錄注冊,博客的增刪改查等各種功能。
- 開發(fā)環(huán)境:IDEA,MySQL,JDK1.8等(不贅述)
首先對SSM框架有一個相應(yīng)的認(rèn)識。

- SpringMVC:主要進(jìn)行頁面的 請求接受與響應(yīng)。
- 組件包括:前端控制器,處理器映射器,處理器適配器,視圖解析器,處理器Handler,視圖View。其中,只有處理器Handler和視圖View需要程序員開發(fā)。
View是一個接口,實現(xiàn)類支持不同的View類型(jsp,freemarker,pdf等)。另外,處理器Handler就是Controller。
- Service層功能:注入dao,調(diào)用dao方法
Mybatis:開始Mybatis時要記住最終目的,我們要對數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行操作,所以你只需要記住,他的使用很方便,很方便,方便,即可。(詳細(xì)講解Myabtis配置等要一整天,不贅述)
so,最后我們的開發(fā)思路就很明確了,從頁面獲取數(shù)據(jù)到Controller層,然后傳遞到service層進(jìn)行相關(guān)操作(調(diào)用方法等),然后再傳遞到持久層對數(shù)據(jù)庫進(jìn)行相應(yīng)增刪改查即可。這樣一說,是不是就明確了很多?
下面的代碼我只截取片段,只為了梳理我的思路。
首先要準(zhǔn)備的一定是頁面。我做一個簡單的登錄頁面,頁面片段如下:
<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>
頁面有了,數(shù)據(jù)庫也應(yīng)該有,id,username,password等字段。并且準(zhǔn)備好model(pojo)的相關(guān)字段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;
}
}
同時要準(zhǔn)備好sql語句(我們要對數(shù)據(jù)庫操作,sql語句是不可少的)放置在xml文件中,以及相應(yīng)的java文件中。
以登錄為例,xml和相應(yīng)mapper.java如下:
<!--用戶登錄-->
<select id="login" parameterType="com.myblogs.model.User" resultType="int">
SELECT count(*) FROM user WHERE username =#{username} AND pass_word = #{pass_word}
</slect>
/**
* 用戶登錄
*/
int login(User user);
要注意,輸入/輸出類型,名稱等要一致。同時xml和相關(guān)mapper的文件目錄要一致,比如都要是com.myblogs.mapper目錄下
我說一下我的sql語句思路。count()是統(tǒng)計數(shù)字,當(dāng)賬號密碼和數(shù)據(jù)庫的對上時,最少有一條記錄。那我就拿獲取到的記錄數(shù)來判斷是否登錄成功!*
這樣,持久層就做好了,特別快,下面按照順序是什么?業(yè)務(wù)層。也就是要對之前寫的mapper文件方法做調(diào)用等。
需要一個service接口和實現(xiàn)類,也就是serviceimpl.java,由于service接口和mapper文件內(nèi)容一致,可以不寫,直接寫接口實現(xiàn)類。我的實現(xiàn)類內(nèi)容如下:
@Autowired
private UserMapper userMapper;
//用戶登錄
int login(User user){
int count=userMapper.login(user);
if (count!=0){
return 1;
}
return 0;
}
在這里,我要實現(xiàn)判斷。數(shù)據(jù)庫得到的記錄數(shù)字,記得之前的count(*)嗎?得到的數(shù)據(jù),如果返回的int不等于0,說明有數(shù)據(jù)獲取到,也就是登錄成功(頁面輸入的用戶名密碼和數(shù)據(jù)庫對上了)反之則表示登錄失敗,用戶名或者密碼有錯誤,沒對上。所以在這一層做了一個判斷。
對的,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頁面,登錄失敗繼續(xù)返回login頁面,重新輸用戶名密碼。相應(yīng)的頁面上也要有這些字段,jsp文件在前面。
然后,運行,改bug,成功!一個簡單的登錄就實現(xiàn)了!!!!!!
效果如下圖:


本文完!