- JSP视图
- 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>
<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>
- 登陆模态框视图
- 控制器类
我使用了一个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";
}
}
}
- 实体类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控制器类的转发