1.首先我们先了解session是什么
当用户请求来自应用程序的 Web页时,服务器会给每一个用户(浏览器)创建一个Session对象;
在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中;
当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去,默认情况下,只要浏览器没有关闭,这个Session就一直存在。
2.总流程:我们一开始运行“书籍选择页面”,然后跳转到“第一个控制文件”,接着是“地址填写”,“第二个控制文件”,最后跳转到“结果打印界面”。
3.创建书籍订单信息的录入页面
书籍列表选择
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>选择购买书籍</title>
</head>
<body>
<h2>选择购买书籍</h2>
<form action="ProcessOne" method="post">
<table border="1" width="68%">
<tr>
<th align="center">书名</td>
<th align="center">购买</td>
</tr>
<tr>
<td>Android Application Develoment Practice Tutorial</td>
<td align="center"><input type="checkbox" name="buy"
value="Android Application Develoment Practice Tutorial"></td>
</tr>
<tr>
<td>Software Project Management</td>
<td align="center"><input type="checkbox" name="buy"
value="Software Project Management"></td>
</tr>
<tr>
<td>Agile Software Development</td>
<td align="center"><input type="checkbox" name="buy"
value="Agile Software Development"></td>
</tr>
<tr>
<td>Information Technology Project Management</td>
<td align="center"><input type="checkbox" name="buy"
value="Information Technology Project Management"></td>
</tr>
</table>
<p><input type="submit" value="下一步"></p>
</form>
</body>
</html>
地址填写
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>邮寄地址</title>
</head>
<body>
<h2>输入邮寄地址</h2>
<form action="ProcessTwo" method="post">
<table border="1" width="68%">
<tr>
<td>姓名:</td>
<td><input type="text" name="customer" size="30"></td>
</tr>
<tr>
<td>邮寄地址:</td>
<td><input type="text" name="address" size="66"></td>
</tr>
</table>
<p>
<input type="submit" value="下一步">
</p>
</form>
</body>
</html>
这两个均为jsp文件
4.编写控制文件
还是老样子,创建一个包,并且编写相应的Java代码
控制文件1
package com.mialab.session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet(name = "ProcessOneServlet", urlPatterns = { "/ProcessOne" })
public class ProcessOneServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ProcessOneServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession(true);
String[] selectedBooks = request.getParameterValues("buy");
session.setAttribute("choosed", selectedBooks);
response.sendRedirect("./address.jsp");
}
}
控制文件2
package com.mialab.session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet(name = "ProcessTwoServlet", urlPatterns = { "/ProcessTwo" })
public class ProcessTwoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ProcessTwoServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession(true);
//String customer = request.getParameter("customer");
String customer = new String(request.getParameter("customer").getBytes("iso-8859-1"));
//String address = request.getParameter("address");
String address = new String(request.getParameter("address").getBytes("iso-8859-1"));
session.setAttribute("A_customer", customer);
session.setAttribute("A_address", address);
response.sendRedirect("./confirm.jsp");
}
}
session.setAttribute(“username”,username); 是将username以键值对的形式保存在session中!session的key值为“username”value值就是username真实的值,或者引用值. 这样以后你可以通过session.getAttribute(“username”)的方法获得这个对象. 比如说,当用户已登录系统后你就在session中存储了一个用户信息对象,此后你可以随时从session中将这个对象取出来进行一些操作,比如进行身 份验证等等。
5.编写结果打印文件
将我们的数据结果打印到最后一个文件上面请
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>订单确认</h2>
<table border="1" width="68%">
<tr>
<td>顾客姓名:</td>
<td> <%=(String) session.getAttribute("A_customer")%></td>
</tr>
<tr>
<td>地址:</td>
<td><%= (String) session.getAttribute("A_address")%></td>
</tr>
<tr>
<td>订购书籍:</td>
<td>
<% String[] books = (String[]) session.getAttribute("choosed");
for (int i = 0; i < books.length; i++){%>
<%= books[i]%><br>
<%}%>
<br></td>
</tr>
</table>
<p><input type="submit" value="提交订单"></p>
</body>
</html>
6.在导入项目文件时常遇到的问题
The type java.lang.Object cannot be resolved.
出现这种没有导入jar包的情况其实是因为我们在导入文件时,没有选择jdk。
解决方法
右击项目,选择build path中的选项
双击JRE,然后在第二个选项里点击下拉框,手动选择自己需要的JDK,点击finish。
成功之后就会发现自己的源码包中多出一个Librarise,然后就会发现报错没有了。