Java web,五

Java会话技术
一,Cookie对象:
cookie是一种会话技术,它用于将会话过程中的数据保存到用户的浏览器中,从而使浏览器和服务器可以更好的地进行数据交互;

创建Serlet:

创建一个chapter05项目,创建一个自己喜欢的包,在该包中编写一个为LastAccessSerclet的Servlet类,实现获取Cookiie信息并将当前时间Cookie值发送给客户端;

代码如下:

package chapter05.access;
 
import java.io.IOException;
import java.util.Date;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import jdk.javadoc.doclet.Reporter;
 
/**
 * Servlet implementation class LastAccessServlet
 */
@WebServlet("/LastAccessServlet")
public class LastAccessServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LastAccessServlet() {
        // TODO Auto-generated constructor stub
    }
 
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=utf-8");
		Cookie[ ] cookies=request.getCookies();
		String lastTime=null;
		for (int i = 0; cookies != null&&i<cookies.length; i++) {
			String name = cookies[i].getName();
			if ("lastaccess".equals(name)) {
				lastTime=cookies[i].getValue();
			}
		}
		if (lastTime==null) {
			response.getWriter().print("您是第一次访问本网站!");
		}else {
			response.getWriter().print("您上次访问的时间是:"+lastTime);
		}
		String time = String.format("%tF%<tT", new Date());
		Cookie cookie=new Cookie("lastaccess", time);
		Cookie cookie1 =new Cookie("dashuju","2004");
		response.addCookie(cookie);
		response.addCookie(cookie1);
	}
 
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
 
}

运行结果:
Java web,五
第二次访问会看到第一次访问时间。
Java web,五

二,Session对象:

Cookie技术可以将用户的信息保存在各自的浏览器中,并且可以在多次请求下实现数据的共享,但是,如果传递的信息比较多,使用Cookie技术显然会增大服务器程序处理的难度,这时,可以使用Session技术;

实现购物车:

创建book类:

package chpter05.session;
 
import java.io.Serializable;
 
public class Book implements Serializable{
	private static final long serialVersionUID = 1L;
	private  String id;
	private  String name;
	public  Book() {
	}
	public  Book(String id,String name) {
		this.id=id;
		this.name=name;
	}
	public String  getId() {
		return id;
	}
	public void setId(String id) {
		this.id=id;
	}
	public String  getName() {
		return name;
	}
	public void setName(String name) {
		this.name= name;
	}
 
}

创建数据库模拟类;

package chpter05.session;
 
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
 
 
public class BookBD {
private static  Map<String,Book> map = new LinkedHashMap<String,Book>();
	static {
		map.put("1", new Book("1","javaweb开发"));
		map.put("2", new Book("2","jdbc开发"));
		map.put("3", new Book("3","java基础"));
		map.put("4", new Book("4","struts框架"));
		map.put("5", new Book("5","hibernate开发"));
	}
	public static Collection<Book> getAll() {
		return map.values();
	}
	public static Book  getBook(String id) {
		return map.get(id);
	}
}

创建Servlet:
1.创建一个名为ListBookServlet的类,用于操作单击 “购买” 链接,就可以把书加进购物车;Java web,五

实现效果:
Java web,五

创建一个名为PurchaseServlet的servlet类:
Java web,五

此代码的作用是用来保存到Session对象中;
创建一个名称为CartServlet的Servlet类,显示用户义卖图书列表:
Java web,五

代码实现效果:
Java web,五
三,实现用户登录:
1.创建封装用户信息类:
Java web,五
2.创建indexServlet类显示网站首页,如果用户没有登陆,那么首页界面提示用户登录,否则,显示用户已经登录信息,判断用户是否真的登录:
Java web,五

3.LoginServlet,用于显示用户登录后的界面:
Java web,五

4.创建LogouServlet类会将用户信息移除,并转跳到首页:

Java web,五

5.创建名称login.html的创业面,页面包含表单信息:
Java web,五

上一篇:Java源文件编译成功但是运行时加载不到文件


下一篇:Spring的问题解决记录