您的位置:首页 > 其它

知识学习——Servlet会话技术

2018-01-01 21:53 489 查看

1.Cokkie

详细API网上可以轻易百度到:点击前往

显示用户上次登录时间

@WebServlet("/Last")
public class LastAccessServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

public LastAccessServlet() {
super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String lastAccessTime=null;

//获取所以cookie
Cookie[] cookies=request.getCookies();
//遍历,名称为lastAccess,获取它的值
for(int i=0;cookies!=null&&i<cookies.length;i++) {
if("lastAccess".equals(cookies[i].getName()))
{
lastAccessTime=cookies[i].getValue();
break;
}
}

//判断cookie是否存在
if(lastAccessTime==null)
{
response.getWriter().println("首次访问");
}
else
{
response.getWriter().println("上次访问时间: "+lastAccessTime);
}

//创建cookie,并把当前时间作为值发给客户端
String currentTime=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
Cookie cookie=new Cookie("lastAccess", currentTime);

//发送cookie
response.addCookie(cookie);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);
}
}


2.Session

API

实现购物车

Book类

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) {
super();
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;
}

}


模拟数据库操作 BookDB类

public class BookDB {
private static Map<String,Book> books=new LinkedHashMap<String,Book>();

static {
books.put("1",new Book("1","Java开发"));
books.put("2",new Book("2","C开发"));
books.put("3",new Book("3","C++开发"));
books.put("4",new Book("4","C#开发"));
books.put("5",new Book("5","Ruby开发"));
}

public static Collection<Book> getAll(){
return books.values();
}

public static Book getBook(String id) {
return books.get(id);
}
}


显示图书列表的servlet:ListBookServlet类

@WebServlet("/ListBook")
public class ListBookServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

public ListBookServlet() {
super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");

PrintWriter out=response.getWriter();
Collection<Book> books=BookDB.getAll();
out.write("图书列表:<br />");
for(Book book:books)
{
String url="/ServletTest/Purchase?id="+book.getId();
out.write(book.getName()+"<a href='"+url+"'>点击购买</a><br />");
}
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}

}


处理类 PurchaseServlet类

功能:将用户购买的图书信息保存到session中,并重定向到已购买页面。

@WebServlet("/Purchase")
public class PurchaseServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

public PurchaseServlet() {
super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取购买商品id
String id=request.getParameter("id");
//如果ID为空,重定向到图书列表页面
if(id==null)
{
response.sendRedirect("/ServletTest/ListBook");
return;
}
Book book=BookDB.getBook(id);

//获取session对象
HttpSession session=request.getSession();

List<Book> cart=(List) session.getAttribute("cart");

if(cart==null)
{
//首次购买,创建购物车
cart=new ArrayList<Book>();
//将购物车存入session对象
session.setAttribute("cart", cart);
}

cart.add(book);
//创建Cookie存放session的标识号
Cookie cookie=new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(60*30);
cookie.setPath("/ServletTest");

response.addCookie(cookie);
response.sendRedirect("/ServletTest/Cart");
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}

}


购物车类:CartServlet

@WebServlet("/Cart")
public class CartServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

public CartServlet() {
super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
List<Book> cart=null;

boolean purFlag=true;
HttpSession session=request.getSession(false);

if(session==null)
{
purFlag=false;
}
else
{
cart=(List)session.getAttribute("cart");
if(cart==null)
{
purFlag=false;
}
}
if(!purFlag) {
out.write("对不起,您没购买任何商品");
}
else{
out.write("您购买的商品有:<br />");
for(Book book:cart)
{
out.write(book.getName()+"<br />");
}
}
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: