從0到1之快速學習SSM框架(四)創建一個簡單的SSM登錄項目(三)代碼編寫

終於來了學習SSM框架中的最後一程了,下面我就來讓大家學習一下如何編寫代碼,廢話不多說,直接上!


目錄

1. 我們先從controller層開始

2. 再次,service層編寫代碼,一個是impl包下編寫我們的實現,一個是service包下編寫我們的service接口

3. 再之,dao層或者mapper層需要編寫一個mapper接口以及其實現的xml文件

4. 對應的login.jsp的登錄表單

5. 總結


1. 我們先從controller層開始

因爲controller是最接近我們view層的,也是最靠近前端的,應當說,前後端的數據交互都在controller層處理

在controller層新建一個UserController.java文件,代碼如下

//controller層註解,表示這個類是controller
@Controller
public class UserController {

    //autowired註解,表示自動注入UserService
    @Autowired
    private UserService userService;

    //映射到前臺login請求,並制定訪問方法爲POST
    @RequestMapping(value = "/login",method = RequestMethod.POST)
    public String login (User user)
    {
        //判斷前臺傳入的用戶名和密碼和數據庫取的用戶名和密碼是否一致
        if(user.getUserPassword().equals(userService.login(user.getUserName())))
        {
            return "index";
        }
        return "error";
    }
}

2. 再次,service層編寫代碼,一個是impl包下編寫我們的實現,一個是service包下編寫我們的service接口

service接口如下

public interface UserService {
    //表示login的service層處理接口
    public String login(String username);

}

serviceImpl實現如下

// 表示這是一個service層
@Service
public class UserServiceImpl implements UserService {

    //自動注入mapper層
    @Autowired
    private userMapper userMapper;

    //login接口實現調用mapper層
    @Override
    public String login(String username) {
        return userMapper.login(username);
    }
}

3. 再之,dao層或者mapper層需要編寫一個mapper接口以及其實現的xml文件

mapper層如下


@Repository
public interface userMapper {

    public String login(String username);

}

對應的userMapper.xml文件就有SQL語句實現,表示調用了SQL語句

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="gm.dao.userMapper">

    // 根據用戶名查詢對應的密碼
    <select id="login" resultType="java.lang.String">
        select password from user where username=#{username}
    </select>

</mapper>

4. 對應的login.jsp的登錄表單

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登錄頁面測試</title>
</head>
<body>
<form action="login" method="post">
    <label>用戶名:</label><input name="userName" type="text"><br>
    <label>密碼:</label><input name="userPassword" type="password"><br>
    <input type="submit">登錄
</form>
</body>
</html>

然後運行即可,效果圖如下

login頁面效果

輸入正確密碼跳轉

輸入錯誤的頁面跳轉

5. 總結

關於搭建SSM框架,其中有幾個坑,我踩了,給大家指出來,避免大家又陷入這個坑中

PS1:坑1:項目編譯運行後,發現找不到jsp問題,即打開頁面報404錯誤,或者訪問其他jsp頁面也報404錯誤

原因1: jsp頁面沒有編譯成classes文件,所以找不到對應的jsp文件

解決方案1: 查看target目錄下classes文件夾下是否有jsp對應的classes輸出,如果沒有,請把jsp對應的路徑包含到src即classpath下,使用idea工具的可以在project secruture->module->將webapp下的jsp文件夾設置爲src。如果有,證明jsp文件已經編譯了,說明應該是文件訪問路徑問題

原因2: 文件訪問路徑不對問題

解決方案2: 嘗試在webapp->WEB-INF 新建一個jsp文件夾,專門用來存放jsp文件,可能由於webapp下的WEB-INF下的限制問題,導致jsp可能沒法直接訪問,建議存放在WEB-INF/jsp,然後需要在springmvc配置文件中的視圖解析器配置下jsp訪問前綴爲/WEB-INF/jsp

PS2:坑2 :jsp頁面寫的login跳轉沒有正確跳轉到controller層中

比如 jsp-from表單上的login正確的應該是localhost:8080/項目名/login,但卻跳轉到了localhost:8080/login

原因1:jsp-from表單上如果action="/login",表示應該是直接訪問根目錄下的login請求,而不是項目名下的login請求

解決方案1 :action去掉 "/" 直接用action="login” 就可以正常訪問了

PS3: 使用SSM框架搭建的一個簡易demo的源代碼已經上傳了,在文章最上面,點擊跳轉就可以下載,使用idea開發的,maven管理的,spring5+mybatis3+springmvc5,數據源druid,log4j都是使用比較新的,由於框架限制問題,不敢保證都能在各位的機子上都能運行,且版本也不能使用最新的版本,避免一些版本衝突,此源代碼僅供學習交流使用,如果對你們有所幫助,請點個贊,謝謝!!!

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