利用session对象存储页面数据,完成书籍订单

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,然后就会发现报错没有了。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,您的第一个问题是关于Web开发的。具体来说,您想了解如何利用request对象获取页面传递的参数,利用response对象把后台数据响应到页面,并且如何利用cookie和session对象保持登录状态。 对于第一个问题,我们可以通过以下代码示例来演示如何从request对象中获取页面传递的参数,并且利用response对象把后台数据响应到页面: ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/api', methods=['POST']) def api(): data = request.get_json() # 处理数据 res = {'result': 'success'} return jsonify(res) if __name__ == '__main__': app.run() ``` 在这个示例中,我们使用Flask框架来创建一个API接口,通过POST请求传递JSON格式的数据。在`/api`接口中,我们通过`request.get_json()`方法来获取页面传递的参数,然后进行数据处理。最后,我们利用`jsonify()`方法把处理后的结果以JSON格式响应到页面。 对于第二个问题,我们可以通过以下代码示例来演示如何利用cookie和session对象保持登录状态: ```python from flask import Flask, request, jsonify, session, redirect, url_for app = Flask(__name__) app.secret_key = 'your_secret_key' @app.route('/login', methods=['POST']) def login(): username = request.form['username'] password = request.form['password'] # 验证用户名和密码有效性 if username == 'admin' and password == 'admin': session['username'] = 'admin' return redirect(url_for('profile')) else: return 'Invalid username or password' @app.route('/profile') def profile(): if 'username' in session: return 'Welcome, ' + session['username'] else: return redirect(url_for('login')) if __name__ == '__main__': app.run() ``` 在这个示例中,我们使用Flask框架来创建一个登录页面和个人资料页面。在`/login`接口中,我们通过`request.form`方法获取表单提交的用户名和密码,并验证用户名和密码的有效性。如果验证通过,则利用session对象把用户名存储在服务器端。在`/profile`接口中,我们通过判断session对象中是否存在用户名来判断用户是否登录。如果用户已经登录,则显示欢迎页面;否则,重定向到登录页面。 以上就是关于您提出的Web开发问题的解答,希望能对您有帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值