JSP+Session 实现简单的购物功能(附完整代码)

本文介绍以JSP+Session对象实现简单的购物功能,包括登录注册、用户管理、留言板等。

由于有人反映复制的代码不能实现功能,我就直接放完整的包了,链接在文章末尾。使用tomcat启动后进入http://localhost:8080/jsp_demo/experiment_4_2/login1.jsp,具体路径与你的配置相关。

有问题请通过发邮件的方式与我取得联系,邮箱在我首页,我每天都会看。评论的内容不一定会看到。

前言

JSP+Session对象实现简单的用户注册登录、购买商品、结算、留言等功能,具体功能如下:

1、以商品购物为例,有商品购买页面shop1.jsp和shop2.jsp,分别为商品1和商品2的商品购买网页,每个页面储存商品的基本信息,点击提交按钮跳转到结算页面account.jsp,在该页面显示购买的用户的用户名、商品名称、价格、数量、总结算金额。

2、实现留言板功能页面(使用application对象),普通用户登录(user1),可以查看留言、发表留言,发表留言时能将用户名称写入;管理员用户登录(admin),除了具备普通用户的功能以外,能删除留言。

3、所有页面在未经过登录直接访问时,都不能访问,提示请登录后访问。


一、登录注册

1.在不使用数据库的情况下做到登录注册

登录与注册本质上是存储用户的账号与密码,从这点出发,我们很容易想到Java的HashMap(存储key-value的数组),因此我们可以将用户的账号密码存储进HashMap。

HashMap<String, String> user = new HashMap<String, String>();

user.put("zhangsan", "123");
user.put("lisi", "456");
user.put("wangwu", "789");
user.put("admin", "admin");

接下来是第二个问题,如何在整个进程中都能访问到用户登录和注册的信息。我们使用application存储用户的数据, application不过多介绍。

二、商品

商品这里限定为两个页面,每个页面1个商品。若想实现多个商品,可以用appliciation存储,与留言板功能类似,具体见留言板。

三、留言板

需求为所有用户可见,因此自然是使用application。这里使用了4个ArrayList存储,输出相同索引即对应的信息。存储管理员的用户名,管理员可对留言板操作。

Set<String> adminUser = new HashSet<String>();

ArrayList<String> authors = new ArrayList<String>();
ArrayList<String> goods = new ArrayList<String>();
ArrayList<String> tittles = new ArrayList<String>();
ArrayList<String> contents = new ArrayList<String>();

四、代码

login1.jsp

<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html" %>
<%@ page pageEncoding="utf-8" %>

<html>
<body>
<%!
    HashMap<String, String> user = new HashMap<String, String>();
%>

<%
    //获取登录状态
    String login = (String) session.getAttribute("login");
    if ("fail".equals(login)) {
%>
<p class="login-alert">未登录或密码错误</p>
<%
    }
    user.put("zhangsan", "123");
    user.put("lisi", "456");
    user.put("wangwu", "789");
    user.put("admin", "admin");

    application.setAttribute("user", user);

    String username = "null";
    String password = "null";

    username = request.getParameter("username");
    password = request.getParameter("password");

    user.put(username, password);
    application.setAttribute("user", user);
%>
<div class="login">
<form action="login2.jsp" method="post" name="userform">
    <h1>登录</h1>
    <p>账号<input type="text" name="username"></p>
    <p>密码<input type="password" name="password"></p>
    <div>
        <input type="submit" class="btn" name="sub1" value="登录">
        <input type="submit" class="btn" name="sub2" value="注册" onclick="register()">

    </div>
</form>
</div>
</body>
<script>
    function register() {
        document.userform.action = "";
    }
</script>
<link rel="stylesheet" href="index.css">
</html>

login2.jsp

<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html" %>
<%@ page pageEncoding="utf-8" %>
<%
    //获取用户表
    HashMap<String, String> user = (HashMap<String, String>) application.getAttribute("user");
    out.print(user);

    //获取传递参数
    String username = request.getParameter("username");
    String password = request.getParameter("password");

    //非空处理
    if (username == null || username.equals("")){
        username = "null";
    }
    if (password == null || password.equals("")){
        password = "null";
    }
    String login;
    //判断用户是否存在
    if(user.containsKey(username)) {
        out.print("success");
        //response.sendRedirect("shop1.jsp");

        //判断账号密码是否正确
        String correct_password = user.get(username);
        if (password.equals(correct_password)){
            login = "success";
            session.setAttribute("login",login);

            response.sendRedirect("shop1.jsp");

        }
        else {
            login = "fail";
            session.setAttribute("login",login);
            response.sendRedirect("login1.jsp");
        }

    }
    else {
        login = "fail";
        session.setAttribute("login",login);
        response.sendRedirect("login1.jsp");
    }

    //存入session
    session.setAttribute("username",username);
    session.setAttribute("password",password);

%>

shop1.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding="utf-8" %>
<html>
<body>

<%
    String good2 = request.getParameter("good2");
    if(good2 == null || good2.equals("")){
        good2 = "0";
    }

    Integer b = Integer.parseInt(good2);

    session.setAttribute("good2", b);

    //获取登录状态
    String login = (String) session.getAttribute("login");
    if (!"success".equals(login)) {
        login = "fail";
        session.setAttribute("login",login);
        response.sendRedirect("login1.jsp");
    }
    //获取用户名
    String username = (String) session.getAttribute("username");


%>
<div class="shop">
<form  action="shop2.jsp" method="post" name="shopform">
    <div class="welcome">欢迎你,<span><%=username%></span>!</div>
    <div style="margin-bottom: 40px">
        <img src="img/good1.png" alt="">
        <p>20.55元</p>
    </div>
    <p>购买数量<input type="text" name="good1"></p>

    <input type="submit" class="btn" name="sub1" value="进入商店2">
    <input type="submit" class="btn" name="sub2" value="直接购买" onclick="buy()">
</form>
    <a href="webBoardNav.jsp" class="btn">查看留言</a>
    <div style="margin-top: 15px"></div>
    <a href="login1.jsp" class="btn">退出登录</a>

</div>
</body>
<script>
    function buy(){
        document.shopform.action="account.jsp"
    }

</script>
<link rel="stylesheet" href="index.css">
</html>

shop2.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding="utf-8" %>
<html>
<body>

<%
    String good1 = request.getParameter("good1");
    if(good1 == null || good1.equals("")){
        good1 = "0";
    }

    Integer a = Integer.parseInt(good1);

    session.setAttribute("good1", a);

    //获取登录状态
    String login = (String) session.getAttribute("login");
    if (!"success".equals(login)) {
        login = "fail";
        session.setAttribute("login",login);
        response.sendRedirect("login1.jsp");
    }
    //获取用户名
    String username = (String) session.getAttribute("username");


%>
<div class="shop">
    <form action="shop1.jsp" method="post" name="shopform">
        <div class="welcome">欢迎你,<span><%=username%></span>!</div>
        <div style="margin-bottom: 40px">
            <img src="img/good2.png" alt="">
            <p>50.35元</p>
        </div>
        <p>购买数量<input type="text" name="good2"></p>
        <input type="submit" class="btn" name="sub3" value="进入商店1">
        <input type="submit" class="btn" name="sub4" value="直接购买" onclick="buy()">
    </form>
    <a href="webBoardNav.jsp" class="btn">查看留言</a>
    <div style="margin-top: 15px"></div>
    <a href="login1.jsp" class="btn">退出登录</a>

</div>
</body>
<script>
    function buy(){
        document.shopform.action="account.jsp"
    }

</script>
<link rel="stylesheet" href="index.css">
</html>

account.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding="utf-8" %>
<html>
<body>
<div class="shop">
    <%
        //获取登录状态
        String login = (String) session.getAttribute("login");
        if (!"success".equals(login)) {
            login = "fail";
            session.setAttribute("login",login);
            response.sendRedirect("login1.jsp");
        }

        Integer a = Integer.parseInt(session.getAttribute("good1").toString());
        Integer b = Integer.parseInt(session.getAttribute("good2").toString());


        if (a == 0) {
            String good1 = request.getParameter("good1");
            if (good1 == null || good1.equals("")) {
                a = 0;
            } else {
                a = Integer.parseInt(request.getParameter("good1"));
            }
        }
        if (b == 0) {
            String good2 = request.getParameter("good2");
            if (good2 == null || good2.equals("")) {
                b = 0;
            } else {
                b = Integer.parseInt(request.getParameter("good2"));
            }
        }

        Double priceA = 20.55;
        Double priceB = 50.35;

        double sum = a * priceA + b * priceB;

    %>

    <h1>账单</h1>
    <h1>----------</h1>
    <p>你购买了</p>
    <p><span><%= a %></span>个商品1</p>
    <p><span><%= b %></span>个商品2</p>
    <p>总金额<span><%= sum %></span>元</p>
    <a href="shop1.jsp" class="btn">返回</a>
</div>
<link rel="stylesheet" href="index.css">
</body>
</html>

webBoard.jsp

<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;" pageEncoding="UTF-8"%>

<html>
<body>

<%
    //获取登录状态
    String login = (String) session.getAttribute("login");
    if (!"success".equals(login)) {
        login = "fail";
        session.setAttribute("login",login);
        response.sendRedirect("login1.jsp");
    }

    //获取历史留言表
    ArrayList<String> authors = (ArrayList<String>) application.getAttribute("authors");
    ArrayList<String> goods = (ArrayList<String>) application.getAttribute("goods");
    ArrayList<String> tittles = (ArrayList<String>) application.getAttribute("tittles");
    ArrayList<String> contents = (ArrayList<String>) application.getAttribute("contents");
%>

<a class="back" href="webBoardNav.jsp"><</a>

<div class="message-tittle">
    <p>留言板</p>
</div>

<%
    //遍历留言表
    for (int i = 0;i<authors.size();i++) {

%>

<table class="message">
    <tr>
        <td width="100px" style="color: coral">No.<%= i+1 %></td>
        <td style="color: brown; font-size: 20px; font-weight: bold">《<%=tittles.get(i)%>》</td>
    </tr>
    <tr><td colspan="2">留言者:<%=authors.get(i) %></td></tr>
    <tr><td colspan="2">商品:<%=goods.get(i) %></td></tr>
    <tr><td colspan="2"><%=contents.get(i)  %></td></tr>

</table>

<%
    }
%>

<link rel="stylesheet" href="index.css">
</body>
</html>

webBoard_manage.jsp

<%@ page import="java.util.Set" %>
<%@ page contentType="text/html" %>
<%@ page pageEncoding="utf-8" %>

<%
    //获取登录状态
    String login = (String) session.getAttribute("login");
    if (!"success".equals(login)) {
        response.sendRedirect("login1.jsp");
    }


    String setAdminUser = request.getParameter("setAdminUser");

    //获取管理员账号
    Set<String> adminUser = (Set<String>) application.getAttribute("adminUser");

    //非空判断
    if (!(setAdminUser == null || setAdminUser.equals(""))) {
        adminUser.add(setAdminUser);
        response.sendRedirect("webBoardNav.jsp");
    }


%>


<html>
<body>


</body>
</html>

webBoardDel.jsp

<%@ page import="java.util.Set" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html" %>
<%@ page language="java" pageEncoding="utf-8" %>
<%
    //获取登录状态
    String login = (String) session.getAttribute("login");
    if (!"success".equals(login)) {
        login = "fail";
        session.setAttribute("login",login);
        response.sendRedirect("login1.jsp");
    }

    //获取用户名
    String username = (String) session.getAttribute("username");

    //判断用户名是否在管理员列表
    Set<String> adminUser = (Set<String>) application.getAttribute("adminUser");
    if (!(adminUser.contains(username))) {
        //不是管理员返回
        response.sendRedirect("webBoardNav.jsp");
    }
    //获取历史留言表
    ArrayList<String> authors = (ArrayList<String>) application.getAttribute("authors");
    ArrayList<String> goods = (ArrayList<String>) application.getAttribute("goods");
    ArrayList<String> tittles = (ArrayList<String>) application.getAttribute("tittles");
    ArrayList<String> contents = (ArrayList<String>) application.getAttribute("contents");

    //获取留言序号
    String number = request.getParameter("number");

    if (!(number == null || number.equals(""))) {
        Integer i = Integer.valueOf(number);
        authors.remove(i - 1);
        goods.remove(i - 1);
        tittles.remove(i - 1);
        contents.remove(i - 1);

        //初始信息同步至application
        application.setAttribute("authors", authors);
        application.setAttribute("goods", goods);
        application.setAttribute("tittles", tittles);
        application.setAttribute("contents", contents);
    }
%>
<html>
<body>
<div class="board">
    <form action="">
        <p>删除留言</p>
        <p>请输入留言序号<input type="text" name="number"></p>
        <input class="btn" type="submit">
    </form>
    <a href="webBoardNav.jsp" class="btn">返回</a>
</div>
<link rel="stylesheet" href="index.css">
</body>
</html>

webBoardNav.jsp

<%@ page import="java.util.Set" %>
<%@ page import="java.util.HashSet" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html" %>
<%@ page language="java"  pageEncoding="utf-8"%>

<html>
<body>
<%!

    //初始化
    Set<String> adminUser = new HashSet<String>();
    ArrayList<String> authors = new ArrayList<String>();
    ArrayList<String> goods = new ArrayList<String>();
    ArrayList<String> tittles = new ArrayList<String>();
    ArrayList<String> contents = new ArrayList<String>();

    {
        authors.add("zhangsan");
        goods.add("商品1");
        tittles.add("每天一苹果,医生远离我");
        contents.add("连续吃苹果365天");
    }

%>

<%

    //初始信息同步至application
    application.setAttribute("authors", authors);
    application.setAttribute("goods", goods);
    application.setAttribute("tittles", tittles);
    application.setAttribute("contents", contents);

    //获取历史留言表
    ArrayList<String> authors = (ArrayList<String>) application.getAttribute("authors");
    ArrayList<String> goods = (ArrayList<String>) application.getAttribute("goods");
    ArrayList<String> tittles = (ArrayList<String>) application.getAttribute("tittles");
    ArrayList<String> contents = (ArrayList<String>) application.getAttribute("contents");

    //编码转换
    request.setCharacterEncoding("utf-8");

    //获取用户名
    String username = (String) session.getAttribute("username");
    String tittle = request.getParameter("tittle");
    String good = request.getParameter("good");
    String content = request.getParameter("content");

    //添加留言
    //非空判断
    if (!(tittle == null || tittle.equals("") || good == null || good.equals("") || content == null || content.equals(""))) {

        authors.add(username);

        goods.add(good);
        tittles.add(tittle);
        contents.add(content);

        //同步至application
        application.setAttribute("authors", authors);
        application.setAttribute("goods", goods);
        application.setAttribute("tittles", tittles);
        application.setAttribute("contents", contents);

    }


%>
<div class="board">
    <p>欢迎<span><%= username %></span>进入商店留言与评价!</p>

    <form action="webBoardNav.jsp" method="post">
        <p>标题<input type="text" name="tittle"></p>
        <p>商品<select name="good" size="1">
            <option value="商品1" selected>商品1</option>
            <option value="商品2">商品2</option>
        </select></p>

        <p>内容</p><textarea name="content" id="" cols="30" rows="6"></textarea>
        <input type="submit" class="btn" value="提交">
    </form>

    </p>

    <p>
        <a href="webBoard.jsp" class="btn">查看留言</a>
    </p>
    <p>
        <a href="webBoardDel.jsp" class="btn">删除留言</a>
    </p>
    <p>
        <a href="shop1.jsp" class="btn">返回商店</a>
    </p>


</div>
<div class="admin">
    <%
        //获取所有用户信息
        HashMap<String, String> user = (HashMap<String, String>) application.getAttribute("user");

        //初始管理员账号添加
        adminUser.add("admin");

        //管理员账号同步至application
        application.setAttribute("adminUser", adminUser);

        //获取登录状态
        String login = (String) session.getAttribute("login");
        if (!"success".equals(login)) {
            login = "fail";
            session.setAttribute("login",login);
            response.sendRedirect("login1.jsp");
        }


        //判断用户名是否在管理员列表
        if (adminUser.contains(username)) {
            //如果是,则打印用户信息表
            out.print("已注册用户<br>");
            for (String u : user.keySet()) {
                out.print("用户名:" + u + "&emsp;&emsp;密码:" + user.get(u) + "<br>");
            }

    %>
<p>
        <%

            //打印管理员信息表
            for (String a : adminUser) {
                out.print("管理员:" + a + "<br>");
            }

    %>

<form action="webBoard_manage.jsp" method="get">
    <p>将此用户设置为管理员<input type="text" name="setAdminUser"></p>
    <input type="submit">
</form>

<%
    } else {
            out.print("该板块仅对管理员用户展示!");
    }
%>

</p>
</div>
<link rel="stylesheet" href="index.css">
</body>
</html>

完整代码:

链接:https://pan.baidu.com/s/1A-jM_Nx3GRN6u72IQkK9xw?pwd=nmyk 
提取码:nmyk

  • 16
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值