您的位置:首页 > 其它

一个不知名的项目--Day03

2017-08-20 09:46 190 查看

day03

昨天稍微更进了进度

今天是补上昨天day03

再说一下整体功能的预想

商品管理功能

商品展示

真/假购物车(可能两个都做或者做一个)

订单

支付

权限

….暂时就怎么多

注册功能续2

注册失败时的数据回显

sevlet

request.setAttribute("user",user);


jsp

<input type="text" name="uname" class="username" placeholder="请输入您的用户名!" value="${user.uname}">
<input type="password" name="upaw" class="password" placeholder="请输入您的用户密码!">
<input type="password" name="upaw2" class="password" placeholder="请输入确认用户密码!">
<input type="text" name="unickname" class="username" placeholder="请输入您的昵称!" value="${user.unickname}" >
<input type="text" name="uemail" class="username" placeholder="请输入您邮箱!" value="${user.uemail}">


修改登录页面

(>﹏<) 我捉急的css

登录功能开发

servlet

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uname = request.getParameter("uname");
String upaw = request.getParameter("upaw");
String rename = request.getParameter("rename");
String login = request.getParameter("login");
UserService instence = BasicFactory.factory.getInstence(UserService.class);
User user=null;
if ((user=instence.userLogin(uname, MD5Utils.md5(upaw)))==null){
request.setAttribute("msg","用户名或密码错误");
request.getRequestDispatcher("/login.jsp").forward(request, response);
return;
}
int day=0;
if ("on".equalsIgnoreCase(rename)){
day=24*3600*30;
}
Cookie cookie=new Cookie("uname",day==0?"":URLEncoder.encode(uname,"utf-8"));
cookie.setMaxAge(day);
cookie.setPath(request.getContextPath()+"/");
response.addCookie(cookie);

if ("on".equalsIgnoreCase(login)){
Cookie cookie1=new Cookie("autokey",URLEncoder.encode(user.getUname()+":"+user.getUpaw(),"utf-8"));
cookie1.setMaxAge(24*3600*30);
cookie1.setPath(request.getContextPath()+"/");
response.addCookie(cookie1);
}
HttpSession session = request.getSession();
session.setAttribute("user",user);
response.sendRedirect(request.getContextPath()+"/index.jsp");
}


jsp

<form action="${app}/LoginServlet" method="post">
<input type="text" name="uname" class="username" placeholder="请输入您的用户名!" value="${cookie.uname.value}">
<input type="password" name="upaw" class="password" placeholder="请输入您的用户密码!">
<%--<input type="Captcha" class="Captcha" name="Captcha" placeholder="请输入验证码!">--%>
<div id="fx2">
<span> <input type="checkbox" name="rename" id="fx1" ${cookie.uname==null?"": "checked='checked'"}/>  记住用户名</span>

<span><input type="checkbox" name="login" id="fx1"/>  30天免登陆</span>
</div>
<button type="submit" class="submit_button">登录</button>
<div class="error"><span>+</span></div>
<div class="error1"><span>${msg}</span></div>
</form>


js

$(function () {
var val = $(".username").val();
$(".username").val(decodeURI(val,"utf-8"));
})


30天免登录

拦截器做的自动登录

HttpServletRequest  r= (HttpServletRequest) req;
HttpSession session = r.getSession();
User user = (User) session.getAttribute("user");
if (user==null){
Cookie[] cookies = r.getCookies();
if (cookies!=null){
String auto=null;
for (Cookie c:cookies){
if ("autokey".equalsIgnoreCase(c.getName())){
auto=c.getValue();
break;
}
}
if (auto!=null){
UserService instence = BasicFactory.factory.getInstence(UserService.class);
auto = URLDecoder.decode(auto, "utf-8");
if ((user=instence.userLogin(auto.split(":")[0],auto.split(":")[1]))!=null){
session.setAttribute("user",user);
}
}

}
}
chain.doFilter(req, resp);
}


登出

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Object user = request.getSession().getAttribute("user");
if (user!=null){
request.getSession().removeAttribute("user");
}
Cookie cookie1=new Cookie("autokey", "");
cookie1.setMaxAge(0);
cookie1.setPath(request.getContextPath()+"/");
response.addCookie(cookie1);
response.sendRedirect(request.getContextPath()+"/index.jsp");
}


测试

前端,非空校验



前端,提示



后端,校验



后端,重复提交



注册





记住用户名



总结

改css,和js花了很多的时间,css太菜了

30天免登录也完成了,测试通过

犯的一些小错误

cookie和cookie1 傻傻分不清楚,我还以为谷歌浏览器炸了 ^_^

今天主要先开发后天商品管理的功能,商品展示的页面还没找到,就往后放一下

假数据填充程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  电商 登录 cookie session