小项目-购物网站个别功能的具体实现思路-下(新手)


 

  • (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

 

posted @ 2019-04-23 21:59  浪子。  阅读(324)  评论(0编辑  收藏  举报