【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控制器类的转发