小项目-购物网站个别功能的具体实现思路-下(新手)
- (11)修改密码
所需要的JSP页面(点击进入个人中心):
<div class="header_wrap"> <ul> <c:choose> <c:when test="${empty W}"> <li><a href="/shop/views/login.jsp">登录</a></li> <li><a href="/shop/views/register.jsp">注册</a></li> </c:when> <c:otherwise> <li>欢迎您,尊敬的VIP:<a href="/shop/views/persional.jsp">${W.username}</a></li> </c:otherwise> </c:choose>
个人中心JSP页面:
<body> <fieldset> <legend> 欢迎来到您的个人中心 </legend> <div> <ul> <li><a href="/shop/LoginOut">注销当前账户</a></li> <li><a href="/shop/home" >点击返回首页</a></li> <li><a href="/shop/views/login.jsp">返回登陆界面</a></li> <li><a href="/shop/views/update.jsp">点击修改密码</a></li> </ul> </div> <iframe name="show" width="65%" height="85%"></iframe> </fieldset> </body>
修改密码的JSP界面:
<body> <div class="wrap"> <div class="guimeilogo"></div> <div class="login"> <div class="top"> <h1>个人信息</h1> <a href="">修改界面</a> </div> <div class="mid"> <form action="/shop/update" method="post"> <input type="password" name="password" placeholder="原密码" required="required" /> <input type="password" name="passwords" placeholder="新密码" required="required" /> ${Lxr} <input type="submit" id="submit" value="立即修改"/> ${C} </form> </div> </div> </div> </body>
所需要的Servlet:
@WebServlet("/update")
public class UpdateServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 读写当前的登录信息。
Map w = (Map) req.getSession().getAttribute("W");
// 获得请求参数
Object password1 = w.get("password");// 获得user表中的原密码类型
String password = req.getParameter("password");// 获取现在登录状态的原密码
String passwords = req.getParameter("passwords");// 修改过后的密码
Integer uid = (Integer) w.get("uid");// 用户的ID
// 两者做比较(equals比较的是字符串内容)如果成功则重定向到登录界面
if (password.equals(password1)){
IUserDAO dao = new UserDAOImpl();
dao.UpdatePassword(passwords,uid);
resp.sendRedirect("/shop/views/login.jsp");
// 否则提示更改失败,重定向到更改界面。
}else{
req.setAttribute("Lxr","更改失败");
req.getRequestDispatcher("/update.jsp").forward(req,resp);
}
}
}
流程:
用户点击主界面的个人昵称进入个人中心-在个人中心点击修改密码-进入修改密码的JSp页面,填写提交新的信息-Servlet接收数据处理数据-重定向到登录的JSP页面
- (12)过滤器
过滤器的作用和意义:
在Servlet作为过滤器使用时,它可以对客户的请求进行处理。处理完成后,它会交给下一个过滤器处理,这样,客户的请求在过滤链里逐个处理,直到请求发送到目标为止。
例如,某网站里的功能,有很多界面有验证“是否登录”业务,如果使用过滤器的话就可以简化很多本来需要在Servlet中写入的代码段。化繁为简。
这两项工作可以在由两个过滤器组成的过滤链里进行处理。当过滤器处理成功后,把提交的数据发送到最终目标;如果过滤器处理不成功,将把视图派发到指定的错误页面。
过滤器的写法:
@WebFilter("*.do")
public class CharacterEncodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("过滤器正在启动。");
System.out.println("过滤器正在初始化!");
}
//在这个方法里面写。
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
System.out.println("-------------------过滤器开始工作!-------------------");
//设置编码格式。
request.setCharacterEncoding("UTF-8");
//获取账号密码的关键字信息。
HttpServletResponse resp = (HttpServletResponse) response;
HttpServletRequest req = (HttpServletRequest) request;
Map w = (Map) req.getSession().getAttribute("W");
//如果没有登录则重定向到登录界面
if (w == null){
resp.sendRedirect("/shop/views/login.jsp");
System.out.println("-------------------过滤器拦截成功!-------------------");
}else {
//放行数据。
filterChain.doFilter(req,resp);
}
}
@Override
public void destroy() {
System.out.println("我被销毁啦。");
}
}
实现过滤的方法:
*.do 意为:
所有@WebServlet的映射路径带.do的都会进行拦截。
例如:/scart.do、/Addcart.do
购物网站功能实现:修改密码与过滤器详解
本文详细介绍了购物网站中修改密码的功能实现,包括用户从个人中心进入修改密码界面,填写新密码,Servlet处理数据的过程。此外,还讨论了过滤器的重要性和实现方法,探讨了其在网站开发中的应用。
996

被折叠的 条评论
为什么被折叠?



