jsp设计简单的购物车应用案例

代码解释

<%
    request.setCharacterEncoding("UTF-8");
    if (request.getParameter("c1")!=null)
        session.setAttribute("s1",request.getParameter("c1"));
    if (request.getParameter("c2")!=null)
        session.setAttribute("s2",request.getParameter("c2"));
    if (request.getParameter("c3")!=null)
        session.setAttribute("s3",request.getParameter("c3"));
%>

这段代码应该是一个 JSP 页面中的后端代码,主要用于在用户提交表单时,将表单中选中的值保存到会话(Session)中。在这个代码中,首先使用 `request.setCharacterEncoding()` 方法设置请求的字符编码为 UTF-8。接着,通过 `request.getParameter()` 方法获取表单中名为 `c1`、`c2` 和 `c3` 的参数的值,并将它们保存到会话对象中,分别使用 `session.setAttribute()` 方法将这些值存储到会话中的 `s1`、`s2` 和 `s3` 属性中。

需要注意的是,这段代码中使用了 JSP 的脚本语法 `<% %>` 包裹代码块。在代码执行时,这部分代码将被服务器端解析并执行,所以它们不会在最终的 HTML 页面中呈现出来。

此外,这段代码中使用了会话(Session)对象来存储用户提交的数据。会话是一种在客户端和服务器端之间保持状态的机制,它允许在多个请求之间共享数据,并且可以在用户关闭浏览器之后仍然保持数据的有效性。在这个例子中,如果用户在同一会话中提交了多个表单,那么之前选择的选项也会存储在会话中,而不会被覆盖掉。

    session.setAttribute()方法的作用是在服务器端设置一个属性值,
    该属性值可以在整个会话期间内被访问和修改。

`session.setAttribute()` 是 Java 中 `HttpSession` 对象的一个方法,
用于向会话中存储数据。它的作用是将一个键值对参数加入到会话对象的属性集合中,
以使得在同一会话中的不同请求(或同一个请求的多个处理阶段)之间共享数据。

具体而言,`session.setAttribute(String name, Object value)` 方法接受两个参数:

- `name`:表示属性的名称,必须是字符串类型;
- `value`:表示属性的值,可以是任意 Java 对象,包括基本类型和自定义类型。

   通过调用 `session.setAttribute()` 方法,我们可以将一个名为 `name`,
值为 `value` 的属性添加到当前用户的会话中。例如,可以使用以下代码将一个名为 `username`,
值为 `binjie09` 的属性添加到当前会话中:

```java
HttpSession session = request.getSession();  // 获取当前用户的会话
session.setAttribute("username", "binjie09"); // 在会话中添加一个键值对
```

在会话中添加属性后,我们就可以在同一个会话中的其他请求中使用 `session.getAttribute()` 方法
来获取该属性的值了。例如,可以使用以下代码从当前会话中获取名为 `username` 的属性:

```java
String username = (String)session.getAttribute("username");
```

需要注意的是,在使用 `session.setAttribute()` 方法添加属性时,属性的值必须是可序列化的。
这意味着,如果我们要存储的是一个自定义对象,那么该对象必须实现 `java.io.Serializable` 接口,
以便该对象的状态可以被序列化和反序列化。此外,我们还需要注意会话中属性的数量和大小,
以避免浪费服务器资源或导致系统崩溃等问题。

<%
    request.setCharacterEncoding("UTF-8");
    String str="";
    if (session.getAttribute("s1")!=null){
        str=(String) session.getAttribute("s1");
        out.print(str+"<br>");
    }
%>

这段代码应该是一个 JSP 页面的后端代码主要功能是从会话中获取名为 `s1` 的属性的值,并将其输出到页面上。

首先,使用 `request.setCharacterEncoding("UTF-8")` 方法设置请求的字符编码为 UTF-8。接着定义了一个字符串变量 `str`,并初始化为空字符串。

然后,通过 `session.getAttribute("s1")` 方法从会话中获取名为 `s1` 的属性的值。如果该属性不为空,则将其强制转换成字符串类型,并将结果赋值给 `str` 变量。接着,使用 `out.print()` 方法将 `str` 变量的值输出到页面上,并在输出的字符串末尾添加一个 `<br>` 标签,以使得输出的内容能够在页面上换行显示。

需要注意的是,这段代码使用了 JSP 的脚本语法 `<% %>` 包裹了代码块。在代码执行时,这部分代码将被服务器端解析并执行,所以它们不会在最终的 HTML 页面中呈现出来。

此外,这段代码中使用了 `out.print()` 方法输出字符串。`out` 对象是一个 `PrintWriter` 类型的对象,用于向客户端输出数据。在这个例子中,通过调用 `out.print()` 方法,我们实现了将一个字符串输出到页面上的操作。


代码:

<%--
  Created by IntelliJ IDEA.
  User: CaptainDong
  Date: 2023/4/1
  Time: 11:40
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>购物肉类商品页面</title>
</head>
<body>
<h2>肉类大甩卖咯,一律十块钱一斤!</h2><br>
<%
    request.setCharacterEncoding("UTF-8");
%>
<form action="ch03_17_buy1.jsp" method="post">
    <table>
        <tr>
            <td>
                <input type="checkbox" name="c1" value="猪肉">猪肉
            </td>
            <td>
                <input type="checkbox" name="c2" value="牛肉">牛肉
            </td>
            <td>
                <input type="checkbox" name="c3" value="羊肉">羊肉
            </td>
        </tr>
        <tr>
            <td>
                <input type="submit" value="提交" name="B1">
            </td>
            <td>
                <a href="ch03_17_buy2.jsp">买点别的</a>
            </td>
            <td>
                <a href="ch03_17_display.jsp">查看购物车</a>
            </td>
        </tr>
    </table>
</form>
<%
    request.setCharacterEncoding("UTF-8");
    if (request.getParameter("c1")!=null)
        session.setAttribute("s1",request.getParameter("c1"));
    if (request.getParameter("c2")!=null)
        session.setAttribute("s2",request.getParameter("c2"));
    if (request.getParameter("c3")!=null)
        session.setAttribute("s3",request.getParameter("c3"));
%>
</body>
</html>

 

<%--
  Created by IntelliJ IDEA.
  User: CaptainDong
  Date: 2023/4/1
  Time: 11:43
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>购买球类页面</title>
</head>
<body>
<h2>球类大甩卖咯,一律八块钱一个!</h2><br>
<%
    request.setCharacterEncoding("UTF-8");
%>
<form action="ch03_17_buy2.jsp" method="post">
    <table>
        <tr>
            <td>
                <input type="checkbox" name="b1" value="篮球">篮球
            </td>
            <td>
                <input type="checkbox" name="b2" value="足球">足球
            </td>
            <td>
                <input type="checkbox" name="b3" value="排球">排球
            </td>
        </tr>
        <tr>
            <td>
                <input type="submit" value="提交" name="x1">
            </td>
            <td>
                <a href="ch03_17_buy1.jsp">买点别的</a>
            </td>
            <td>
                <a href="ch03_17_display.jsp">查看购物车</a>
            </td>
        </tr>
    </table>
</form>
<%
    request.setCharacterEncoding("UTF-8");
    if (request.getParameter("b1")!=null)
        session.setAttribute("s4",request.getParameter("b1"));
    if (request.getParameter("b2")!=null)
        session.setAttribute("s5",request.getParameter("b2"));
    if (request.getParameter("b3")!=null)
        session.setAttribute("s6",request.getParameter("b3"));
%>
</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: CaptainDong
  Date: 2023/4/1
  Time: 11:44
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>显示购物车购物信息</title>
</head>
<body>
<div>
    <h2>你的选择是:</h2>
</div>
<%
    request.setCharacterEncoding("UTF-8");
    String str="";
    if (session.getAttribute("s1")!=null){
        str=(String) session.getAttribute("s1");
        out.print(str+"<br>");
    }
    if (session.getAttribute("s2")!=null){
        str=(String) session.getAttribute("s2");
        out.print(str+"<br>");
    }
    if (session.getAttribute("s3")!=null){
        str=(String) session.getAttribute("s3");
        out.print(str+"<br>");
    }
    if (session.getAttribute("s4")!=null){
        str=(String) session.getAttribute("s4");
        out.print(str+"<br>");
    }
    if (session.getAttribute("s5")!=null){
        str=(String) session.getAttribute("s5");
        out.print(str+"<br>");
    }
    if (session.getAttribute("s6")!=null){
        str=(String) session.getAttribute("s6");
        out.print(str+"<br>");
    }
%>
</body>
</html>

界面图:

 

                  

 

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

captain_dong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值