搭建SSM
对新手来说搭建SSM框架是痛苦的(我就是),通过朋友和这篇博客:SSM第一篇 最简单的SSM框架搭建过程–SSM简单整合的帮助最后还是搭建好了。
提几个搭建时候遇到的问题:
1. 逆向生成工具是自动生成Dao、Mapping、Pojo的工具,路径放在跟src同目录下可以避免生成路径的烦恼。
2. 生成的Dao文件名为xxMapper,如有需要可以改为xxDao,我这里嫌麻烦就没有改。
3. 注意不要拦截静态文件(css等),不然前端样式无法显示,我是在web.xml中配置的。
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
4. 在编写SendMail类的时候,要将类注释为控件(@Component),在声明该类的时候要用@Autowired标注在类上,完成自动装配的工作。
@Autowired
SendMail sendMail;
接下来进入正题
登录
登录界面具有记住密码、找回密码、登录、注册功能。登录:首先判断账号密码是否为空,之后判断数据库是否存在该账号,最后判断密码是否正确,由于密码采用MD5加密,所以通过对输入的密码进行MD5之后再与数据库的密码进行比较,正确则进入系统;找回密码:采用给邮箱发验证码的形式进行重置(MD5无法反编码);记住密码:用cookie保存用户账号、密码;注册:采用Java mail工具类,用自己的QQ邮箱给用户邮箱发送验证码。
FrontLoginController.java:
/**
* 跳转到前台登录页面
* @return login.jsp
*/
@RequestMapping("/login")
public String login(){
return "/front/login";
}
login.jsp:
<form id="frontLoginForm" action="${pageContext.request.contextPath}/frontLogin/check" method="post">
<fieldset>
<div>
<c:choose>
<c:when test="${not empty loginEmail}">
<input value="${requestScope.loginEmail}" id="email" name="email" type="email" autofocus="" />
</c:when>
<c:otherwise>
<input placeholder="E-mail" id="email" name="email" type="email" autofocus="" />
</c:otherwise>
</c:choose>
</div>
<div >
<input placeholder="密码" id="password" name="password" type="password" value="" />
</div>
<div >
<label> <input id="remember" name="remember" type="checkbox" value="Remember Me" />记住密码 </label>
</div>
<div >
<a href="${pageContext.request.contextPath}/frontLogin/forget" style="float:right"> 忘记密码 </a>
<a href="${pageContext.request.contextPath}/frontRegister/register"> 注册 </a>
</div>
<font size="4" color="red"> ${loginError} </font>
<button type="submit" class="btn btn-lg btn-success btn-block">登录</button>
</fieldset>
</form>
记住密码
<script>
window.onload = function(){
var oForm = document.getElementById('frontLoginForm');
var oUser = document.getElementById('email');
var oPswd = document.getElementById('password');
var oRemember = document.getElementById('remember');
//页面初始化时,如果帐号密码cookie存在则填充
if(getCookie('email') && getCookie('password')){
oUser.value = getCookie('email');
oPswd.value = getCookie('password');
oRemember.checked = true;
}
//复选框勾选状态发生改变时,如果未勾选则清除cookie
oRemember.onchange = function(){
if(!this.checked){
delCookie('email');
delCookie('password');
}
};
//表单提交事件触发时,如果复选框是勾选状态则保存cookie
oForm.onsubmit = function(){
if(remember.checked){
setCookie('email',oUser.value,7); //保存帐号到cookie,有效期7天
setCookie('password',oPswd.value,7); //保存密码到cookie,有效期7天
}
};
};
//设置cookie
function setCookie(name,value,day){
var date = new Date();
date.setDate(date.getDate() + day);
document.cookie = name + '=' + value + ';expires='+ date;
};
//获取cookie
function getCookie(name){
var reg = RegExp(name+'=([^;]+)');
var arr = document.cookie.match(reg);
if(arr){
return arr[1];
}else{
return '';
}
};
//删除cookie
function delCookie(name){
setCookie(name,nul