代码解释
<%
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>
界面图: