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: CaptainDongDate: 2023/4/1Time: 11:40To 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: CaptainDongDate: 2023/4/1Time: 11:43To 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: CaptainDongDate: 2023/4/1Time: 11:44To 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>
界面图: