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


第一步:
/*
*  用户注册的界面。
*  用户点击注册按钮,会跳转到注册界面,用户填写完注册信息则会跳转到此Servlet。
*  在此Servlet中我们首先需要设置编码格式。
*  第二步是获取请求参数,就是用户在注册界面填写的信息。
*  第三步则是需要验证用户名是否已经被注册,如果已经被注册则提示用户名被占用。
*  如果没有被注册则将用户的信息添加到数据库表中。
*  最后请求转发到注册界面。
*
*  该Servlet需要配合注册的JSP页面进行使用。
* */

 

第二步:
/*
*  登录界面的实现。
*  用户点击登录跳转到登录的JSP界面,
*  点击提交则跳转到此Servlet中进行账号密码是否正确的判断。
*
*  首先需要设置浏览器的编码格式,因为是POST的提交方式,可能在过程中会出现中文乱码的现象。
*  然后是获取请求参数,分别是账号和密码。
*  第三步是调用DAO层对账号密码所在的数据库表进行查询,校验账号密码是否正确,
*  使用if语句进行判断,如果账号密码为空,则提示账号密码错误。
*                      因为如果账号密码都为空,则是意味着在数据库中匹配不到。
*  否则,将登陆成功,并且请求转发到主界面。
*  在提交关键数据时需要使用session-会话对象
*
*  session  会话对象
        共享数据:session共享/会话共享
        特点: 同一次会话 共享数据可以获取  (会话:从共享数据开始 到 浏览器关闭/主动清除 。不受请求转发和重定向的影响
        只要存到session中 浏览器不关闭 或者 不主动清除 都可以获取)
        代码 :HttpSession session = req.getSession();//获取session对象
               ession.setAttribute("关键字",数据对象名);

   该Servlet需要配合登录界面的JSP页面进行使用。
* */
 

 

第三步:
/*
*  主界面。
*
*  用户在地址栏输入网址,则跳转到此界面。
*  此界面调用DAO层的查询所有商品的SQL语句查询所有商品。
*  查询完所有商品之后,共享数据(关键字和对象名),该关键字在商品展示界面使用。
*  再使用请求转发到负责展示数据的JSP界面。
*
*   此Servlet配合主界面的JSp文件。
* */

 

第四步:
/*
*  商品信息的详细介绍界面。
*
*  首先需要获取请求参数,也就是用户所点击的商品ID。
*  然后调用DAO层进行该条商品的查询。
*  第三步是共享数据。
*  其次是请求转发到负责展示商品详细信息的JSP界面。
*
*  该Servlet需要配合展示商品详细信息的JSP界面进行使用。
* */

 

第五步:
/*
 *  搜索框搜索某条信息,根据条件返回相应的数据。
 *
 *  第一步是设置浏览器返回的编码格式。
 *  第二步是获取请求参数。
 *  第三步是调用DAO层的SQL语句进行条件的查询。
 *  第四步是共享数据。
 *  第五步则是请求转发到负责展示数据的JSP页面。
 *
 *  该Servlet需要配合主界面进行使用。
 * */

 

第六步:
/*
*  根据用户需求添加商品进购物车。
*  首先需要判断用户是否已经进行了登录。 这就需要创建一个过滤器,进行登录请求的过滤。
*   如果用户登录了就获取用户的请求参数,如商品的名称、简介、数量等。
*   如果用户没有登录则需要在过滤器中进行拦截,使其跳转到登录界面。
*
*   获取完用户的请求参数之后,需要判断商品是否已经加入购物车。
*   此处需要三个SQL语句:
*                       查询商品是否加入到购物车。
*                       如果商品已经被添加则更新商品的数量。
*                       如果没有则将商品添加进入购物车。
*   最后,添加成功则提示添加成功。
*   然后请求转发到原界面。
*
*   该Servlet需要配合商品详细信息的JSp页面进行使用。
* */

 

第七步:
/*
*  我的购物车所需要的Servlet。
*  用户点击我的购物车则跳转到此Servlet中,由此Servlet进行完一系列操作之后再转入负责展示数据的JSP页面
*  首先,需要获取到登录数据的关键字,判断用户是否登录,如果用户没有登录则跳转到登录界面。
*  如果用户已经登录过,则获取请求参数(uid),uid在我的数据库表中意为查询我当前账户所添加的所有商品信息。
*  获取请求参数之后调用DAO层,进行数据的查询。
*  最后共享参数和请求转发。
*
*  该Servlet需要配合购物车的JSP界面进行使用。
* */

 

第八步:
/*
    *  根据用户需求删除购物车的某个商品。
    *  获取请求参数,获取用户点击的商品的ID,
    *  调用DAO层的SQL语句进行删除。
    *  请求转发到购物车界面。
    *
    *  该Servlet需要配合购物车的JSp页面进行使用。
    * */


第九步:

/*
    *  根据用户需求删除购物车所有的商品。
    *  用户点击购物车删除所有商品按钮之后,则跳转到此Servlet。
    *  然后通过Session和Map的键值对读取当前账户的uid,也就是获取购物车那张表里的输入当前账户的商品id
    *  第二步调取DAO层里的删除商品的SQL语句,对商品进行删除。
    *  最后重定向到购物车界面。
    *
    *  该Servlet需要配合购物车的JSP页面进行使用。
    * */


第十步:

1 /*
2     *  注销登录
3     *  用户点击注销登录按钮则跳转到此Servlet。
4     *  销毁Session,销毁之后,相当于将登陆信息全部清除。
5     *  然后重定向到主界面,因为没有数据的存在而且需要地址栏的改变,所以使用重定向。
6     *
7     *  该Servlet需要配合个人中心的JSP页面进行使用。
8     * */




  • 用户注册:

Servlet:


@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
    /*
    *  用户注册的界面。
    *  用户点击注册按钮,会跳转到注册界面,用户填写完注册信息则会跳转到此Servlet。
    *  在此Servlet中我们首先需要设置编码格式。
    *  第二步是获取请求参数,就是用户在注册界面填写的信息。
    *  第三步则是需要验证用户名是否已经被注册,如果已经被注册则提示用户名被占用。
    *  如果没有被注册则将用户的信息添加到数据库表中。
    *  最后请求转发到注册界面。
    *
    *  该Servlet需要配合注册的JSP页面进行使用。
    * */
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码格式。
        req.setCharacterEncoding("UTF-8");
        //获取请求参数。
        String telephone = req.getParameter("telephone");
        String password = req.getParameter("password");
        String email = req.getParameter("email");
        String username = req.getParameter("username");
        //验证用户名是否已经被注册,唯一校验性。
        IUserDAO dao = new UserDAOImpl();
        boolean username1 = dao.isUsername(username);
        if (username1){
            //如果用户名已用,则提示用户名被占用。
            req.setAttribute("name","很抱歉,用户名已存在");
        }else{
            //如果没有注册则将用户信息添加到数据库中
            //String telephone, String password, String email, String username
            User user = new User(telephone,password,email,username);
            dao.insert(user);
            req.setAttribute("user","注册成功");
        }
        //请求转发到注册界面。
        req.getRequestDispatcher("/views/register.jsp").forward(req,resp);
    }
}

头部的JSp:

<li><a href="/shop/views/register.jsp">注册</a></li>

注册界面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"+"views/";
%>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>注册 - 贵美·商城</title>
        <base href="<%=basePath%>">
         <link rel="icon" href="img/icon.png" type="image/x-icon">
        <link rel="stylesheet" type="text/css" href="css/register.css"/>
    </head>
    <body>
        
        <div class="wrap">
            <div class="guimeilogo"></div>
            <div class="register">
            
            
                <div class="top">
                    <h1>新用户注册</h1>
                    <a href="#">已有账号</a>
                </div>
                
                
                <div class="mid">
            
            <--!
              form表单提交到了上面的Servlet中。
            --> <form action="/shop/register" method="post"> <input type="text" name="telephone" id="telephone" placeholder="手机号" required="required"/> <div class="sec"> <input type="text" name="code" id="code" placeholder="验证码" required="required" /> <a class="send" onclick="send()"> 发送验证码 </a> <script> function send(){ return false; } </script> </div> <input type="password" name="password" id="password" placeholder="密码" required="required" /> <input type="text" name="email" id="email" placeholder="邮箱" required="required" /> <input type="text" name="username" id="username" placeholder="亲,您的昵称" required="required" /> <input type="submit" id="submit" value="注册"/> ${name} </form> </div> </div> </div> </body> </html>

所需接口和实现类的SQL语句:

   /*
     * 用户注册---> 需要添加的SQL语句,将用户的信息添加到另一张数据库表单中
     * 根据注册要求  分别为
     *                   telephone(手机号)
     *                   password(密码)
     *                   email(邮箱)
     *                   username(用户名)
     */
    boolean insert(User u);


实现类:

   @Override
    public boolean insert(User u) {
        String sql = "insert into user (telephone,password,email,username) values (?,?,?,?)";
        return DBUtil.excuteUpdate(sql,u.getTelephone(),u.getPassword(),u.getEmail(),u.getUsername());
    }

流程:

  点击注册-转到注册JSP页面-填写信息,提交信息-Servlet处理。



  • 用户登录:

所需的Servlet:

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    /*
    *  登录界面的实现。
    *  用户点击登录跳转到登录的JSP界面,
    *  点击提交则跳转到此Servlet中进行账号密码是否正确的判断。
    *
    *  首先需要设置浏览器的编码格式,因为是POST的提交方式,可能在过程中会出现中文乱码的现象。
    *  然后是获取请求参数,分别是账号和密码。
    *  第三步是调用DAO层对账号密码所在的数据库表进行查询,校验账号密码是否正确,
    *  使用if语句进行判断,如果账号密码为空,则提示账号密码错误。
    *                      因为如果账号密码都为空,则是意味着在数据库中匹配不到。
    *  否则,将登陆成功,并且请求转发到主界面。
    *  在提交关键数据时需要使用session-会话对象
    *
    *   session  会话对象
            共享数据:session共享/会话共享
            特点: 同一次会话 共享数据可以获取  (会话:从共享数据开始 到 浏览器关闭/主动清除 。不受请求转发和重定向的影响
            只要存到session中 浏览器不关闭 或者 不主动清除 都可以获取)
            代码 :HttpSession session = req.getSession();//获取session对象
                   ession.setAttribute("关键字",数据对象名);

                   该Servlet需要配合登录界面的JSP页面进行使用。
    * */
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 设置编码格式。
        req.setCharacterEncoding("UTF-8");
        // 获取请求参数。
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        // 调用DAO层。进行查询。
        IUserDAO dao = new UserDAOImpl();
        Map<String, Object> islogin = dao.islogin(username, password);
        // 如果账号密码为空,则提示账号密码错误。
        // 因为如果账号密码为空则是意味着在数据库中匹配不到。
        if (islogin == null){
            req.setAttribute("C","对不起,您的账号或密码错误");
            req.getRequestDispatcher("/views/login.jsp").forward(req,resp);
        // 否则 将成功登录。(使用Session)
        // 并且请求转发到主界面。
        }else {
            HttpSession session = req.getSession();
            session.setAttribute("W",islogin);
            resp.sendRedirect("/shop/home");
        }
    }
}

头部的JSP:

<li><a href="/shop/views/login.jsp">登录</a></li> (shop为工程名,views为目录名,login.jsp为负责展示登录信息的界面)

登录界面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"+"views/";
%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>

<!DOCTYPE HTML >
<html>
  <head>
    <base href="<%=basePath%>">
    
        <title>登录 - 贵美·商城</title>
        <link rel="stylesheet" type="text/css" href="css/login.css"/>
    </head>
    <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/login" method="post">
                    <input type="text" name="username" id="username" placeholder="手机号" required="required" />
                    <input type="password" name="password" id="password" placeholder="密码" required="required" />
                    <input type="submit" id="submit" value="立即登录"/>
                        ${C}
                    </form>
                </div>
                
            </div>
            
        </div>
    </body>
</html>

所需接口和实现类的SQL语句:

/*
    * 用户登陆
    *
    * 查询数据库数据,账户密码符合则跳转,否则则提示账户或密码错误。
    */
   Map<String,Object> islogin(String username,String password);


实现类:
  
   @Override
    public Map<String, Object> islogin(String username, String password) {
        String sql = "select * from 用户表的表名 where 账户名 = ? and 密码名 = ?";
        List<Map<String, Object>> list = DBUtil.excuteQuery(sql, username, password);
        if (list.size()>0){
            return list.get(0);
        }
        return null;
    }

流程:

    点击登录-跳转到登录界面-填写信息,提交信息-Servlet进行处理,返回最终结果。



猜你喜欢

转载自www.cnblogs.com/lxr521/p/10758726.html
今日推荐