終於來了學習SSM框架中的最後一程了,下面我就來讓大家學習一下如何編寫代碼,廢話不多說,直接上!
目錄
2. 再次,service層編寫代碼,一個是impl包下編寫我們的實現,一個是service包下編寫我們的service接口
3. 再之,dao層或者mapper層需要編寫一個mapper接口以及其實現的xml文件
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都是使用比較新的,由於框架限制問題,不敢保證都能在各位的機子上都能運行,且版本也不能使用最新的版本,避免一些版本衝突,此源代碼僅供學習交流使用,如果對你們有所幫助,請點個贊,謝謝!!!