【SpringMvc】JSP+MyBatis 用戶登陸後更改導航欄信息

  1. JSP視圖
    在這裏插入圖片描述
  2. JSP視圖 部分代碼
    我使用的是模態框界面(這個需要插件,菜鳥教程有),當然也可以單獨寫一個登陸註冊html界面。
    重要的是表單提交
<!-- 模態框主體 -->
            <div class="modal-body">
                <form method="post" action="${cx}/login">
                    <label style="display: block;" class="fa fa-user">用戶名:
                    <input type="text" name="username" placeholder="username"></label>
                    <label class="fa fa-key">密碼:</label>
                    <input type="password" name="password" placeholder="password">
                    <br><br>
                    <a class="fa fa-paste" href="#" style="text-align: left">忘記密碼?</a> &nbsp;&nbsp;
                    <label>聽說還是不會員? <a class="btn btn-danger" type="button" value="register" href="#"data-target="#myModal2">點擊註冊</a></label>
                    <br><br>
                    <button class="btn btn-primary col-sm-12">登陸</button>
                </form>
            </div>
  1. 登陸模態框視圖
    在這裏插入圖片描述
  2. 控制器類
    我使用了一個index控制器設定一開始彈的頁面(主頁面)
    然後還有一個登陸控制器
index的控制器類

@Controller
public class IndexController {
    //設置系統主頁
    @RequestMapping(value = {"/", "/dkdshudu_main", "dkdshudu","shudu_main"})
    public String index() {
        return "shudu_main";
    }
}
login控制器類

@Controller
public class LoginController {
    @Autowired
    CUserService cuserService;
    //註銷
    @RequestMapping(value = {"/logout"}, method = RequestMethod.GET)
    public String logout(HttpSession session) {
        session.invalidate();
        return "redirect:shudu_main";
    }
    //身份驗證
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        HttpServletRequest request,
                        HttpSession session
    ) {
        CUSER cuser  = cuserService.authenticate(username, password);
        if (cuser==null){
          //如果失敗,就返回原來都界面
            return "shudu_main";
        }else {
            request.changeSessionId();
            session.setAttribute("username", username);
            //後期可以添加上個人主頁url等信息
            return "redirect:shudu_main";
        }
    }
}
  1. 實體類CUSER

    6.mybatis部分
CUserdao.java  
	 **接口類,封裝對User對象CRUD操作**
	 
	 public interface CUserDao {
    //校驗是否存在該用戶,不存在則返回null,存在則返回用戶
    //使用@Param來傳遞參數,傳入參數爲username和password
    public CUSER findByNameAndPwd(@Param("username") String username,
                                 @Param("password") String password);
    }
CUserservice.java  
	**Dao類,封裝對user對象CRUD操作**
	
	@Service
	public class CUserService {
	
	   //校驗是否存在該用戶,不存在則返回null,存在則返回用戶
	    //使用@Param來傳遞參數,傳入參數爲username和password
	    public CUSER authenticate(String username, String password) {
	        return cuserDao.findByNameAndPwd(username, password);
	    }
	}
CUserDao.xml
	**<!-- namespace表示命名空間 -->**
	
<mapper namespace="jee.support.dao.CUserDao">		 
	 <!--根據用戶名和密碼查找用戶-->
	    <select id="findByNameAndPwd" resultType="jee.support.entity.CUSER">
	        select * from user as u where u.Username=#{username} and u.Password=#{password}
	    </select>
</mapper>

7.數據庫 (數據庫名稱,表名不要用中文)
在這裏插入圖片描述

驗證成功後 session設置屬性,替換原來掉註冊登錄選項
在這裏插入圖片描述
導航欄重要html
替換需要使用el表達式

<!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="navbar-menu">
            <ul class="nav navbar-nav navbar-right" data-in="fadeInDown" data-out="fadeOutUp">
                <li><a href="#">主頁</a></li>
              .....( 省略)
                <li><a href=" ">聯繫我們</a></li>
               
                <c:choose>
                    <c:when test="${username==null||username==' '}">
                        <li><a data-toggle="modal" data-target="#myModal" href="" id="UserHomepage">登陸</a></li>
                        <li><a data-toggle="modal" data-target="#myModal2" href="" id="hiddenPage">註冊</a></li>
                    </c:when>
                    <c:otherwise>
                        <li class="dropdown"><a href="" id="user_infom">歡迎 ${username}</a>
                            <ul class="dropdown-menu cart-list">
                                <li class="total">
                                    <a href="logout" class="btn btn-default btn-cart">退出</a>
                                </li>
                            </ul>
                        </li>
                    </c:otherwise>
                </c:choose>

            </ul>
        </div>

在這裏插入圖片描述 再次刷新可以觀察url ,第一次返回界面login控制器類是重定向,第二次是index控制器類的轉發