第一步:
/* * 用户注册的界面。 * 用户点击注册按钮,会跳转到注册界面,用户填写完注册信息则会跳转到此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进行处理,返回最终结果。